diff --git a/.build_number b/.build_number index 61cb59f..94acbb7 100644 --- a/.build_number +++ b/.build_number @@ -1 +1 @@ -271261228 +271261238 diff --git a/frontend/app/admin/SettingsPage.tsx b/frontend/app/admin/SettingsPage.tsx index 0575884..9a22372 100644 --- a/frontend/app/admin/SettingsPage.tsx +++ b/frontend/app/admin/SettingsPage.tsx @@ -125,6 +125,7 @@ export default function SettingsPage({ section }: SettingsPageProps) { const [cacheRows, setCacheRows] = useState([]) const [cacheCount, setCacheCount] = useState(50) const [cacheStatus, setCacheStatus] = useState(null) + const [cacheLoading, setCacheLoading] = useState(false) const [requestsSync, setRequestsSync] = useState(null) const [artworkPrefetch, setArtworkPrefetch] = useState(null) const [artworkSummary, setArtworkSummary] = useState(null) @@ -667,6 +668,7 @@ export default function SettingsPage({ section }: SettingsPageProps) { const loadCache = async () => { setCacheStatus(null) + setCacheLoading(true) try { const baseUrl = getApiBase() const response = await authFetch( @@ -689,6 +691,8 @@ export default function SettingsPage({ section }: SettingsPageProps) { ? err.message.replace(/^\\{\"detail\":\"|\"\\}$/g, '') : 'Could not load cache.' setCacheStatus(message) + } finally { + setCacheLoading(false) } } @@ -1378,8 +1382,15 @@ export default function SettingsPage({ section }: SettingsPageProps) { - diff --git a/frontend/app/globals.css b/frontend/app/globals.css index 208c2cd..0c62f99 100644 --- a/frontend/app/globals.css +++ b/frontend/app/globals.css @@ -1689,6 +1689,16 @@ button span { animation: spin 0.9s linear infinite; } +.button-spinner { + width: 16px; + height: 16px; + border-width: 2px; + box-shadow: none; + margin-right: 8px; + vertical-align: middle; + display: inline-block; +} + .loading-text { font-size: 16px; color: var(--ink-muted);