Feature/cleanup metadata related logic (#657)

* Remove unnecessary parameter from "requestUpdateServerMetadata"

* Streamline updating metadata server settings

* Move metadata related logic
This commit is contained in:
schroda
2024-03-16 16:21:15 +01:00
committed by GitHub
parent aea5dad0ce
commit 0c22a9012e
16 changed files with 91 additions and 84 deletions

View File

@@ -17,8 +17,8 @@ import {
checkAndHandleMissingStoredReaderSettings,
getReaderSettingsFor,
useDefaultReaderSettings,
} from '@/util/readerSettings';
import { requestUpdateMangaMetadata } from '@/util/metadata';
} from '@/lib/metadata/readerSettings.ts';
import { requestUpdateMangaMetadata } from '@/lib/metadata/metadata.ts';
import { HorizontalPager } from '@/components/reader/pager/HorizontalPager';
import { PageNumber } from '@/components/reader/PageNumber';
import { PagedPager } from '@/components/reader/pager/PagedPager';
@@ -29,7 +29,7 @@ import { makeToast } from '@/components/util/Toast';
import { NavBarContext } from '@/components/context/NavbarContext.tsx';
import { useDebounce } from '@/util/useDebounce.ts';
import { UpdateChapterPatchInput } from '@/lib/graphql/generated/graphql.ts';
import { useMetadataServerSettings } from '@/util/metadataServerSettings.ts';
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts';
import { Chapters } from '@/lib/data/Chapters.ts';

View File

@@ -11,12 +11,12 @@ import { Box } from '@mui/material';
import CircularProgress from '@mui/material/CircularProgress';
import { useTranslation } from 'react-i18next';
import { AllowedMetadataValueTypes, IReaderSettings } from '@/typings';
import { convertToGqlMeta, requestUpdateServerMetadata } from '@/util/metadata';
import { convertToGqlMeta, requestUpdateServerMetadata } from '@/lib/metadata/metadata.ts';
import {
checkAndHandleMissingStoredReaderSettings,
getDefaultSettings,
useDefaultReaderSettings,
} from '@/util/readerSettings';
} from '@/lib/metadata/readerSettings.ts';
import { ReaderSettingsOptions } from '@/components/reader/ReaderSettingsOptions';
import { makeToast } from '@/components/util/Toast';
import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext';
@@ -40,7 +40,7 @@ export function DefaultReaderSettings() {
useSetDefaultBackTo('settings');
const setSettingValue = (key: keyof IReaderSettings, value: AllowedMetadataValueTypes) => {
requestUpdateServerMetadata(convertToGqlMeta(metadata)! ?? {}, [[key, value]]).catch(() =>
requestUpdateServerMetadata([[key, value]]).catch(() =>
makeToast(t('reader.settings.error.label.failed_to_save_settings'), 'warning'),
);
};

View File

@@ -13,11 +13,13 @@ import { ListItem, ListItemText, Switch } from '@mui/material';
import ListSubheader from '@mui/material/ListSubheader';
import { TextSetting } from '@/components/settings/text/TextSetting.tsx';
import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext.tsx';
import { MetadataServerSettingKeys, MetadataServerSettings, ServerSettings } from '@/typings.ts';
import { MetadataDownloadSettings, ServerSettings } from '@/typings.ts';
import { requestManager } from '@/lib/requests/RequestManager.ts';
import { DownloadAheadSetting } from '@/components/settings/downloads/DownloadAheadSetting.tsx';
import { convertSettingsToMetadata, useMetadataServerSettings } from '@/util/metadataServerSettings.ts';
import { convertToGqlMeta, requestUpdateServerMetadata } from '@/util/metadata.ts';
import {
createUpdateMetadataServerSettings,
useMetadataServerSettings,
} from '@/lib/metadata/metadataServerSettings.ts';
import { makeToast } from '@/components/util/Toast.tsx';
import { DeleteChaptersWhileReadingSetting } from '@/components/settings/downloads/DeleteChaptersWhileReadingSetting.tsx';
import { CategoriesInclusionSetting } from '@/components/settings/CategoriesInclusionSetting.tsx';
@@ -59,7 +61,7 @@ export const DownloadSettings = () => {
const { data } = requestManager.useGetServerSettings();
const downloadSettings = data ? extractDownloadSettings(data.settings) : undefined;
const [mutateSettings] = requestManager.useUpdateServerSettings();
const { metadata, settings: metadataSettings } = useMetadataServerSettings();
const { settings: metadataSettings } = useMetadataServerSettings();
const updateSetting = <Setting extends keyof DownloadSettingsType>(
setting: Setting,
@@ -70,18 +72,9 @@ export const DownloadSettings = () => {
);
};
const updateMetadataSetting = <Setting extends MetadataServerSettingKeys>(
setting: Setting,
value: MetadataServerSettings[Setting],
) => {
if (!metadata) {
return;
}
requestUpdateServerMetadata(convertToGqlMeta(metadata) ?? [], [
[setting, convertSettingsToMetadata({ [setting]: value })[setting]],
]).catch(() => makeToast(t('global.error.label.failed_to_save_changes'), 'error'));
};
const updateMetadataSetting = createUpdateMetadataServerSettings<keyof MetadataDownloadSettings>(() =>
makeToast(t('global.error.label.failed_to_save_changes'), 'error'),
);
return (
<List>

View File

@@ -13,10 +13,12 @@ import ListSubheader from '@mui/material/ListSubheader';
import { t as translate } from 'i18next';
import { NavBarContext, useSetDefaultBackTo } from '@/components/context/NavbarContext.tsx';
import { GlobalUpdateSettings } from '@/components/settings/globalUpdate/GlobalUpdateSettings.tsx';
import { MetadataServerSettingKeys, MetadataServerSettings } from '@/typings.ts';
import { convertToGqlMeta, requestUpdateServerMetadata } from '@/util/metadata.ts';
import { MetadataLibrarySettings } from '@/typings.ts';
import { makeToast } from '@/components/util/Toast.tsx';
import { convertSettingsToMetadata, useMetadataServerSettings } from '@/util/metadataServerSettings.ts';
import {
createUpdateMetadataServerSettings,
useMetadataServerSettings,
} from '@/lib/metadata/metadataServerSettings.ts';
import { requestManager } from '@/lib/requests/RequestManager.ts';
import { Mangas } from '@/lib/data/Mangas.ts';
@@ -55,16 +57,11 @@ export function LibrarySettings() {
useSetDefaultBackTo('settings');
const { metadata, settings } = useMetadataServerSettings();
const { settings } = useMetadataServerSettings();
const setSettingValue = <Setting extends MetadataServerSettingKeys>(
setting: Setting,
value: MetadataServerSettings[Setting],
) => {
requestUpdateServerMetadata(convertToGqlMeta(metadata)! ?? {}, [
[setting, convertSettingsToMetadata({ [setting]: value })[setting]],
]).catch(() => makeToast(t('search.error.label.failed_to_save_settings'), 'warning'));
};
const setSettingValue = createUpdateMetadataServerSettings<keyof MetadataLibrarySettings>(() =>
makeToast(t('search.error.label.failed_to_save_settings'), 'warning'),
);
return (
<List>