diff --git a/src/modules/browse/Browse.types.ts b/src/modules/browse/Browse.types.ts index 452bf4a6..cb814a2c 100644 --- a/src/modules/browse/Browse.types.ts +++ b/src/modules/browse/Browse.types.ts @@ -9,4 +9,5 @@ export type MetadataBrowseSettings = { hideLibraryEntries: boolean; extensionLanguages: string[]; + showNsfw: boolean; }; diff --git a/src/modules/browse/screens/BrowseSettings.tsx b/src/modules/browse/screens/BrowseSettings.tsx index 657c25f1..8eb735ce 100644 --- a/src/modules/browse/screens/BrowseSettings.tsx +++ b/src/modules/browse/screens/BrowseSettings.tsx @@ -16,7 +16,6 @@ import { requestManager } from '@/lib/requests/RequestManager.ts'; import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; import { MutableListSetting } from '@/modules/core/components/settings/MutableListSetting.tsx'; import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx'; -import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; import { createUpdateMetadataServerSettings, useMetadataServerSettings, @@ -47,8 +46,6 @@ export const BrowseSettings = () => { setAction(null); }, [t]); - const [showNsfw, setShowNsfw] = useLocalStorage('showNsfw', true); - const { data, loading, error, refetch } = requestManager.useGetServerSettings({ notifyOnNetworkStatusChange: true, }); @@ -64,7 +61,7 @@ export const BrowseSettings = () => { }; const { - settings: { hideLibraryEntries }, + settings: { hideLibraryEntries, showNsfw }, } = useMetadataServerSettings(); const updateMetadataServerSettings = createUpdateMetadataServerSettings((e) => makeToast(t('global.error.label.failed_to_save_changes'), 'error', getErrorMessage(e)), @@ -101,7 +98,11 @@ export const BrowseSettings = () => { primary={t('settings.label.show_nsfw')} secondary={t('settings.label.show_nsfw_description')} /> - setShowNsfw(!showNsfw)} /> + updateMetadataServerSettings('showNsfw', !showNsfw)} + /> >((e) => makeToast(t('global.error.label.failed_to_save_changes'), 'error', getErrorMessage(e))); - const [showNsfw] = useLocalStorage('showNsfw', true); const [query] = useQueryParam('query', StringParam); const [updatingExtensionIds, setUpdatingExtensionIds] = useState([]); diff --git a/src/modules/global-search/screens/SearchAll.tsx b/src/modules/global-search/screens/SearchAll.tsx index d566f151..79fff743 100644 --- a/src/modules/global-search/screens/SearchAll.tsx +++ b/src/modules/global-search/screens/SearchAll.tsx @@ -33,6 +33,7 @@ import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; import { Sources } from '@/modules/source/services/Sources.ts'; import { SourceDisplayNameInfo, SourceIdInfo } from '@/modules/source/Source.types.ts'; +import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; type SourceLoadingState = { isLoading: boolean; hasResults: boolean; emptySearch: boolean }; type SourceToLoadingStateMap = Map; @@ -187,7 +188,9 @@ export const SearchAll: React.FC = () => { const searchString = useDebounce(query, TRIGGER_SEARCH_THRESHOLD); const [shownLangs, setShownLangs] = useLocalStorage('shownSourceLangs', sourceDefualtLangs()); - const [showNsfw] = useLocalStorage('showNsfw', true); + const { + settings: { showNsfw }, + } = useMetadataServerSettings(); const { data, loading, error, refetch } = requestManager.useGetSourceList({ notifyOnNetworkStatusChange: true }); const sources = useMemo(() => data?.sources.nodes ?? [], [data?.sources.nodes]); diff --git a/src/modules/metadata/Metadata.constants.ts b/src/modules/metadata/Metadata.constants.ts index 8503d889..44025a08 100644 --- a/src/modules/metadata/Metadata.constants.ts +++ b/src/modules/metadata/Metadata.constants.ts @@ -86,6 +86,7 @@ const APP_METADATA_OBJECT: Record = { unread: undefined, showChapterNumber: undefined, extensionLanguages: undefined, + showNsfw: undefined, }; export const VALID_APP_METADATA_KEYS = Object.keys(APP_METADATA_OBJECT); @@ -136,6 +137,7 @@ export const GLOBAL_METADATA_KEYS: AppMetadataKeys[] = [ // browse 'hideLibraryEntries', 'extensionLanguages', + 'showNsfw', // history 'hideHistory', diff --git a/src/modules/settings/Settings.constants.ts b/src/modules/settings/Settings.constants.ts index c9622b30..e08cc83b 100644 --- a/src/modules/settings/Settings.constants.ts +++ b/src/modules/settings/Settings.constants.ts @@ -42,6 +42,7 @@ export const SERVER_SETTINGS_METADATA_DEFAULT: MetadataServerSettings = { // browse hideLibraryEntries: false, extensionLanguages: extensionDefaultLangs(), + showNsfw: true, // history hideHistory: false, diff --git a/src/modules/source/screens/Sources.tsx b/src/modules/source/screens/Sources.tsx index 86a2dcde..056cb25e 100644 --- a/src/modules/source/screens/Sources.tsx +++ b/src/modules/source/screens/Sources.tsx @@ -26,13 +26,16 @@ import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx'; import { Sources as SourceService } from '@/modules/source/services/Sources.ts'; +import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts'; export function Sources() { const { t } = useTranslation(); const { setAction } = useNavBarContext(); const [shownLangs, setShownLangs] = useLocalStorage('shownSourceLangs', sourceDefualtLangs()); - const [showNsfw] = useLocalStorage('showNsfw', true); + const { + settings: { showNsfw }, + } = useMetadataServerSettings(); const { data,