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

@@ -19,13 +19,13 @@ import FormGroup from '@mui/material/FormGroup';
import { CheckboxInput } from '@/components/atoms/CheckboxInput.tsx';
import { Mangas, MigrateMode } from '@/lib/data/Mangas.ts';
import { makeToast } from '@/components/util/Toast.tsx';
import { convertSettingsToMetadata, useMetadataServerSettings } from '@/util/metadataServerSettings.ts';
import { MetadataServerSettings } from '@/typings.ts';
import { convertToGqlMeta, requestUpdateServerMetadata } from '@/util/metadata.ts';
import {
createUpdateMetadataServerSettings,
useMetadataServerSettings,
} from '@/lib/metadata/metadataServerSettings.ts';
import { MetadataMigrationSettings } from '@/typings.ts';
import { defaultPromiseErrorHandler } from '@/util/defaultPromiseErrorHandler.ts';
type MigrationSettingsType = Pick<MetadataServerSettings, 'includeChapters' | 'includeCategories' | 'deleteChapters'>;
export const MigrateDialog = ({ mangaIdToMigrateTo, onClose }: { mangaIdToMigrateTo: number; onClose: () => void }) => {
const { t } = useTranslation();
@@ -35,20 +35,14 @@ export const MigrateDialog = ({ mangaIdToMigrateTo, onClose }: { mangaIdToMigrat
const mangaId = Number(mangaIdAsString);
const {
metadata,
settings: { includeChapters, includeCategories, deleteChapters },
} = useMetadataServerSettings();
const [isMigrationInProcess, setIsMigrationInProcess] = useState(false);
const setMigrationFlag = <Setting extends keyof MigrationSettingsType>(
setting: Setting,
value: MigrationSettingsType[Setting],
) => {
requestUpdateServerMetadata(convertToGqlMeta(metadata) ?? [], [
[setting, convertSettingsToMetadata({ [setting]: value })[setting]],
]).catch(defaultPromiseErrorHandler('MigrateDialog::updateSetting'));
};
const setMigrationFlag = createUpdateMetadataServerSettings<keyof MetadataMigrationSettings>(
defaultPromiseErrorHandler('MigrateDialog::updateSetting'),
);
const migrate = async (mode: MigrateMode) => {
if (mangaId == null) {