Merge pull request #163 from moonlight-mod/notnite/moonbase-speen
moonbase: speen
Cynthia Foxwell 1 month ago 2 files (+30, -2)
@@ -16,6 +16,19 @@ textarea.moonbase-resizeable {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);
@@ -199,6 +199,8 @@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();@@ -228,9 +230,22 @@ <Button{...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>