diff --git a/src/components/settings/DeviceSetting.tsx b/src/components/settings/DeviceSetting.tsx index fe6b87a3..a402cc1f 100644 --- a/src/components/settings/DeviceSetting.tsx +++ b/src/components/settings/DeviceSetting.tsx @@ -19,6 +19,7 @@ import { MutableListSetting } from '@/components/settings/MutableListSetting.tsx import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext.tsx'; import { ActiveDevice, DEFAULT_DEVICE } from '@/util/device.ts'; import { Select } from '@/components/atoms/Select.tsx'; +import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; export const DeviceSetting = () => { const { t } = useTranslation(); @@ -39,6 +40,7 @@ export const DeviceSetting = () => { const { metadata, settings: { devices }, + loading, } = useMetadataServerSettings(); const { activeDevice, setActiveDevice } = useContext(ActiveDevice); @@ -61,6 +63,10 @@ export const DeviceSetting = () => { ); }; + if (loading) { + return ; + } + return ( (); - const { data } = requestManager.useGetSource(sourceId); + const { data, loading } = requestManager.useGetSource(sourceId); const sourcePreferences = data?.source.preferences ?? []; const updateValue = @@ -60,6 +61,10 @@ export function SourceConfigure() { requestManager.setSourcePreferences(sourceId, { position, [type]: value }); }; + if (loading) { + return ; + } + return ( {sourcePreferences.map((it, index) => { diff --git a/src/screens/settings/About.tsx b/src/screens/settings/About.tsx index 18e4d3ae..68fa6c14 100644 --- a/src/screens/settings/About.tsx +++ b/src/screens/settings/About.tsx @@ -201,7 +201,7 @@ export function About() { useSetDefaultBackTo('settings'); - const { data } = requestManager.useGetAbout(); + const { data, loading } = requestManager.useGetAbout(); const { aboutServer, aboutWebUI } = data ?? {}; const { @@ -235,6 +235,10 @@ export function About() { !!selectedServerChannelInfo?.tag && selectedServerChannelInfo.tag !== getVersion(aboutServer); const isWebUIUpdateAvailable = !!webUIUpdateData?.checkForWebUIUpdate.updateAvailable; + if (loading) { + return ; + } + return ( ; @@ -70,7 +71,7 @@ export function Backup() { useSetDefaultBackTo('settings'); - const { data: settingsData } = requestManager.useGetServerSettings(); + const { data: settingsData, loading } = requestManager.useGetServerSettings(); const [mutateSettings] = requestManager.useUpdateServerSettings(); const backupSettings = settingsData ? extractBackupSettings(settingsData.settings) : undefined; @@ -223,6 +224,10 @@ export function Backup() { }; }, []); + if (loading) { + return ; + } + return ( <> diff --git a/src/screens/settings/BrowseSettings.tsx b/src/screens/settings/BrowseSettings.tsx index 95b0cdd9..120f907a 100644 --- a/src/screens/settings/BrowseSettings.tsx +++ b/src/screens/settings/BrowseSettings.tsx @@ -23,6 +23,7 @@ import { createUpdateMetadataServerSettings, useMetadataServerSettings, } from '@/lib/metadata/metadataServerSettings.ts'; +import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; type ExtensionsSettings = Pick; @@ -45,7 +46,7 @@ export const BrowseSettings = () => { const [showNsfw, setShowNsfw] = useLocalStorage('showNsfw', true); - const { data } = requestManager.useGetServerSettings(); + const { data, loading } = requestManager.useGetServerSettings(); const serverSettings = data ? extractBrowseSettings(data.settings) : undefined; const [mutateSettings] = requestManager.useUpdateServerSettings(); @@ -61,6 +62,10 @@ export const BrowseSettings = () => { } = useMetadataServerSettings(); const updateMetadataServerSettings = createUpdateMetadataServerSettings(); + if (loading) { + return ; + } + return ( diff --git a/src/screens/settings/Categories.tsx b/src/screens/settings/Categories.tsx index b6c23327..49eb08a3 100644 --- a/src/screens/settings/Categories.tsx +++ b/src/screens/settings/Categories.tsx @@ -34,6 +34,7 @@ import { StrictModeDroppable } from '@/lib/StrictModeDroppable'; import { DEFAULT_FULL_FAB_HEIGHT } from '@/components/util/StyledFab'; import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext'; import { TCategory } from '@/typings.ts'; +import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; const getItemStyle = ( isDragging: boolean, @@ -62,7 +63,7 @@ export function Categories() { }; }, [t]); - const { data } = requestManager.useGetCategories(); + const { data, loading } = requestManager.useGetCategories({ notifyOnNetworkStatusChange: true }); const categories = useMemo(() => { const res = [...(data?.categories.nodes ?? [])]; if (res.length > 0 && res[0].name === 'Default') { @@ -135,6 +136,10 @@ export function Categories() { requestManager.deleteCategory(category.id); }; + if (loading) { + return ; + } + return ( <> diff --git a/src/screens/settings/DownloadSettings.tsx b/src/screens/settings/DownloadSettings.tsx index 45a1093e..121b8755 100644 --- a/src/screens/settings/DownloadSettings.tsx +++ b/src/screens/settings/DownloadSettings.tsx @@ -26,6 +26,7 @@ import { makeToast } from '@/components/util/Toast.tsx'; import { DeleteChaptersWhileReadingSetting } from '@/components/settings/downloads/DeleteChaptersWhileReadingSetting.tsx'; import { CategoriesInclusionSetting } from '@/components/settings/CategoriesInclusionSetting.tsx'; import { NumberSetting } from '@/components/settings/NumberSetting.tsx'; +import { LoadingPlaceholder } from '@/components/util/LoadingPlaceholder.tsx'; type DownloadSettingsType = Pick< ServerSettings, @@ -80,6 +81,10 @@ export const DownloadSettings = () => { makeToast(t('global.error.label.failed_to_save_changes'), 'error'), ); + if (loading) { + return ; + } + return ( { }; }, [t]); - const { data } = requestManager.useGetServerSettings(); + const { data, loading } = requestManager.useGetServerSettings(); const serverSettings = data ? extractServerSettings(data.settings) : undefined; const [mutateSettings] = requestManager.useUpdateServerSettings(); @@ -102,6 +103,10 @@ export const ServerSettings = () => { mutateSettings({ variables: { input: { settings: { [setting]: value } } } }); }; + if (loading) { + return ; + } + return ( { }; }, [t]); - const { data } = requestManager.useGetServerSettings(); + const { data, loading } = requestManager.useGetServerSettings(); const webUISettings = data ? extractWebUISettings(data.settings) : undefined; const [mutateSettings] = requestManager.useUpdateServerSettings(); @@ -141,6 +142,10 @@ export const WebUISettings = () => { mutateSettings({ variables: { input: { settings: { [setting]: value } } } }); }; + if (loading) { + return ; + } + return (