this repo has no description

Merge pull request #163 from moonlight-mod/notnite/moonbase-speen

moonbase: speen

Changed files
+30 -2
packages
core-extensions
src
moonbase
webpackModules
ui
extensions
+13
packages/core-extensions/src/moonbase/style.css
···
resize: vertical;
}
+
.moonbase-speen {
+
animation: moonbase-speen-animation 0.25s linear infinite;
+
}
+
+
@keyframes moonbase-speen-animation {
+
from {
+
transform: rotate(0deg);
+
}
+
to {
+
transform: rotate(360deg);
+
}
+
}
+
/* Update notice at the top of the client */
.moonbase-updates-notice {
background-color: var(--moonbase-bg);
+17 -2
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx
···
const tagsContainer = React.useRef<HTMLDivElement>(null);
const tagListInner = React.useRef<HTMLDivElement>(null);
const [tagsButtonOffset, setTagsButtonOffset] = React.useState(0);
+
const [checkingUpdates, setCheckingUpdates] = React.useState(false);
+
React.useLayoutEffect(() => {
if (tagsContainer.current === null || tagListInner.current === null) return;
const { left: containerX, top: containerY } = tagsContainer.current.getBoundingClientRect();
···
{...props}
size={Button.Sizes.MIN}
color={Button.Colors.CUSTOM}
-
className={`${FilterBarClasses.sortDropdown} moonbase-retry-button`}
+
className={`${FilterBarClasses.sortDropdown} moonbase-retry-button ${
+
checkingUpdates ? "moonbase-speen" : ""
+
}`}
innerClassName={FilterBarClasses.sortDropdownInner}
-
onClick={() => MoonbaseSettingsStore.checkUpdates()}
+
onClick={() => {
+
(async () => {
+
try {
+
setCheckingUpdates(true);
+
await MoonbaseSettingsStore.checkUpdates();
+
} finally {
+
// artificial delay because the spin is fun
+
await new Promise((r) => setTimeout(r, 500));
+
setCheckingUpdates(false);
+
}
+
})();
+
}}
>
<RetryIcon size={"custom"} width={16} />
</Button>