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 (