Move setting files into new folder
This commit is contained in:
10
src/App.tsx
10
src/App.tsx
@@ -28,8 +28,8 @@ const { Library } = loadable(() => import('@/modules/library/screens/Library.tsx
|
|||||||
const { Manga } = loadable(() => import('@/modules/manga/screens/Manga.tsx'), lazyLoadFallback);
|
const { Manga } = loadable(() => import('@/modules/manga/screens/Manga.tsx'), lazyLoadFallback);
|
||||||
const { Reader } = loadable(() => import('@/modules/reader/screens/Reader.tsx'), lazyLoadFallback);
|
const { Reader } = loadable(() => import('@/modules/reader/screens/Reader.tsx'), lazyLoadFallback);
|
||||||
const { SearchAll } = loadable(() => import('@/modules/global-search/screens/SearchAll.tsx'), lazyLoadFallback);
|
const { SearchAll } = loadable(() => import('@/modules/global-search/screens/SearchAll.tsx'), lazyLoadFallback);
|
||||||
const { Settings } = loadable(() => import('@/screens/Settings'), lazyLoadFallback);
|
const { Settings } = loadable(() => import('@/modules/settings/screens/Settings.tsx'), lazyLoadFallback);
|
||||||
const { About } = loadable(() => import('@/screens/settings/About'), lazyLoadFallback);
|
const { About } = loadable(() => import('@/modules/settings/screens/About.tsx'), lazyLoadFallback);
|
||||||
const { Backup } = loadable(() => import('@/modules/backup/screens/Backup.tsx'), lazyLoadFallback);
|
const { Backup } = loadable(() => import('@/modules/backup/screens/Backup.tsx'), lazyLoadFallback);
|
||||||
const { CategorySettings } = loadable(
|
const { CategorySettings } = loadable(
|
||||||
() => import('@/modules/category/screens/CategorySettings.tsx'),
|
() => import('@/modules/category/screens/CategorySettings.tsx'),
|
||||||
@@ -47,9 +47,9 @@ const { DownloadSettings } = loadable(
|
|||||||
() => import('@/modules/downloads/screens/DownloadSettings.tsx'),
|
() => import('@/modules/downloads/screens/DownloadSettings.tsx'),
|
||||||
lazyLoadFallback,
|
lazyLoadFallback,
|
||||||
);
|
);
|
||||||
const { ServerSettings } = loadable(() => import('@/screens/settings/ServerSettings.tsx'), lazyLoadFallback);
|
const { ServerSettings } = loadable(() => import('@/modules/settings/screens/ServerSettings.tsx'), lazyLoadFallback);
|
||||||
const { BrowseSettings } = loadable(() => import('@/modules/browse/screens/BrowseSettings.tsx'), lazyLoadFallback);
|
const { BrowseSettings } = loadable(() => import('@/modules/browse/screens/BrowseSettings.tsx'), lazyLoadFallback);
|
||||||
const { WebUISettings } = loadable(() => import('@/screens/settings/WebUISettings.tsx'), lazyLoadFallback);
|
const { WebUISettings } = loadable(() => import('@/modules/settings/screens/WebUISettings.tsx'), lazyLoadFallback);
|
||||||
const { Migrate } = loadable(() => import('@/modules/migration/screens/Migrate.tsx'), lazyLoadFallback);
|
const { Migrate } = loadable(() => import('@/modules/migration/screens/Migrate.tsx'), lazyLoadFallback);
|
||||||
const { DeviceSetting } = loadable(() => import('@/modules/device/screens/DeviceSetting.tsx'), lazyLoadFallback);
|
const { DeviceSetting } = loadable(() => import('@/modules/device/screens/DeviceSetting.tsx'), lazyLoadFallback);
|
||||||
const { TrackingSettings } = loadable(() => import('@/modules/tracker/screens/TrackingSettings.tsx'), lazyLoadFallback);
|
const { TrackingSettings } = loadable(() => import('@/modules/tracker/screens/TrackingSettings.tsx'), lazyLoadFallback);
|
||||||
@@ -61,7 +61,7 @@ const { LibraryDuplicates } = loadable(
|
|||||||
() => import('@/modules/library/screens/LibraryDuplicates.tsx'),
|
() => import('@/modules/library/screens/LibraryDuplicates.tsx'),
|
||||||
lazyLoadFallback,
|
lazyLoadFallback,
|
||||||
);
|
);
|
||||||
const { Appearance } = loadable(() => import('@/screens/settings/Appearance.tsx'), lazyLoadFallback);
|
const { Appearance } = loadable(() => import('@/modules/settings/screens/Appearance.tsx'), lazyLoadFallback);
|
||||||
|
|
||||||
if (process.env.NODE_ENV !== 'production') {
|
if (process.env.NODE_ENV !== 'production') {
|
||||||
// Adds messages only in a dev environment
|
// Adds messages only in a dev environment
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import Button from '@mui/material/Button';
|
|||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { useUpdateChecker } from '@/modules/app-updates/hooks/useUpdateChecker.tsx';
|
import { useUpdateChecker } from '@/modules/app-updates/hooks/useUpdateChecker.tsx';
|
||||||
import { VersionUpdateInfoDialog } from '@/modules/app-updates/components/VersionUpdateInfoDialog.tsx';
|
import { VersionUpdateInfoDialog } from '@/modules/app-updates/components/VersionUpdateInfoDialog.tsx';
|
||||||
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
||||||
import { getVersion } from '@/modules/app-updates/services/AppUpdateChecker.tsx';
|
import { getVersion } from '@/modules/app-updates/services/AppUpdateChecker.tsx';
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import { makeToast } from '@/lib/ui/Toast.ts';
|
|||||||
import { ABOUT_WEBUI, WEBUI_UPDATE_CHECK } from '@/lib/graphql/fragments/InfoFragments.ts';
|
import { ABOUT_WEBUI, WEBUI_UPDATE_CHECK } from '@/lib/graphql/fragments/InfoFragments.ts';
|
||||||
import { VersionUpdateInfoDialog } from '@/modules/app-updates/components/VersionUpdateInfoDialog.tsx';
|
import { VersionUpdateInfoDialog } from '@/modules/app-updates/components/VersionUpdateInfoDialog.tsx';
|
||||||
import { useUpdateChecker } from '@/modules/app-updates/hooks/useUpdateChecker.tsx';
|
import { useUpdateChecker } from '@/modules/app-updates/hooks/useUpdateChecker.tsx';
|
||||||
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
|
|
||||||
const disabledUpdateCheck = () => Promise.resolve();
|
const disabledUpdateCheck = () => Promise.resolve();
|
||||||
|
|
||||||
|
|||||||
@@ -31,10 +31,10 @@ import { Progress } from '@/modules/core/components/Progress.tsx';
|
|||||||
import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx';
|
import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx';
|
||||||
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
||||||
import { TimeSetting } from '@/modules/core/components/settings/TimeSetting.tsx';
|
import { TimeSetting } from '@/modules/core/components/settings/TimeSetting.tsx';
|
||||||
import { ServerSettings } from '@/typings.ts';
|
|
||||||
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
||||||
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
|
import { ServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
type BackupSettingsType = Pick<ServerSettings, 'backupPath' | 'backupTime' | 'backupInterval' | 'backupTTL'>;
|
type BackupSettingsType = Pick<ServerSettings, 'backupPath' | 'backupTime' | 'backupInterval' | 'backupTTL'>;
|
||||||
|
|
||||||
|
|||||||
@@ -16,18 +16,18 @@ import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.t
|
|||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
||||||
import { MutableListSetting } from '@/modules/core/components/settings/MutableListSetting.tsx';
|
import { MutableListSetting } from '@/modules/core/components/settings/MutableListSetting.tsx';
|
||||||
import { ServerSettings as GqlServerSettings } from '@/typings.ts';
|
|
||||||
import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx';
|
import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx';
|
||||||
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
||||||
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { MetadataBrowseSettings } from '@/modules/browse/Browse.types.ts';
|
import { MetadataBrowseSettings } from '@/modules/browse/Browse.types.ts';
|
||||||
|
import { ServerSettings as GqlServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
type ExtensionsSettings = Pick<GqlServerSettings, 'maxSourcesInParallel' | 'localSourcePath' | 'extensionRepos'>;
|
type ExtensionsSettings = Pick<GqlServerSettings, 'maxSourcesInParallel' | 'localSourcePath' | 'extensionRepos'>;
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import { Categories } from '@/modules/category/services/Categories.ts';
|
|||||||
import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx';
|
import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
import { updateMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { updateMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import {
|
import {
|
||||||
GetCategoriesBaseQuery,
|
GetCategoriesBaseQuery,
|
||||||
GetCategoriesBaseQueryVariables,
|
GetCategoriesBaseQueryVariables,
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ import {
|
|||||||
createShouldShowMenuItem,
|
createShouldShowMenuItem,
|
||||||
} from '@/modules/core/components/menu/Menu.utils.ts';
|
} from '@/modules/core/components/menu/Menu.utils.ts';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
|
|
||||||
type BaseProps = { onClose: () => void };
|
type BaseProps = { onClose: () => void };
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
import MenuItem from '@mui/material/MenuItem';
|
import MenuItem from '@mui/material/MenuItem';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { Mangas } from '@/modules/manga/services/Mangas.ts';
|
import { Mangas } from '@/modules/manga/services/Mangas.ts';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
import { MangaType } from '@/lib/graphql/generated/graphql.ts';
|
import { MangaType } from '@/lib/graphql/generated/graphql.ts';
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import gql from 'graphql-tag';
|
|||||||
import { DocumentNode } from '@apollo/client';
|
import { DocumentNode } from '@apollo/client';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { getMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { getMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import {
|
import {
|
||||||
ChapterListFieldsFragment,
|
ChapterListFieldsFragment,
|
||||||
ChapterType,
|
ChapterType,
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import { LibraryOptionsContextProvider } from '@/modules/library/contexts/Librar
|
|||||||
import { ActiveDeviceContextProvider } from '@/modules/device/contexts/DeviceContext.tsx';
|
import { ActiveDeviceContextProvider } from '@/modules/device/contexts/DeviceContext.tsx';
|
||||||
import { MediaQuery } from '@/lib/ui/MediaQuery.tsx';
|
import { MediaQuery } from '@/lib/ui/MediaQuery.tsx';
|
||||||
import { AppThemes, getTheme } from '@/modules/theme/services/AppThemes.ts';
|
import { AppThemes, getTheme } from '@/modules/theme/services/AppThemes.ts';
|
||||||
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
|
|||||||
@@ -12,8 +12,10 @@ import ListItemText from '@mui/material/ListItemText';
|
|||||||
import MenuItem from '@mui/material/MenuItem';
|
import MenuItem from '@mui/material/MenuItem';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useContext, useLayoutEffect } from 'react';
|
import { useContext, useLayoutEffect } from 'react';
|
||||||
import { updateMetadataServerSettings, useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import {
|
||||||
import { MetadataServerSettingKeys, MetadataServerSettings } from '@/typings.ts';
|
updateMetadataServerSettings,
|
||||||
|
useMetadataServerSettings,
|
||||||
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { MutableListSetting } from '@/modules/core/components/settings/MutableListSetting.tsx';
|
import { MutableListSetting } from '@/modules/core/components/settings/MutableListSetting.tsx';
|
||||||
import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
||||||
@@ -23,6 +25,7 @@ import { LoadingPlaceholder } from '@/modules/core/components/placeholder/Loadin
|
|||||||
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
import { DEFAULT_DEVICE } from '@/modules/device/services/Device.ts';
|
import { DEFAULT_DEVICE } from '@/modules/device/services/Device.ts';
|
||||||
|
import { MetadataServerSettingKeys, MetadataServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
export const DeviceSetting = () => {
|
export const DeviceSetting = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ import ListItemText from '@mui/material/ListItemText';
|
|||||||
import Switch from '@mui/material/Switch';
|
import Switch from '@mui/material/Switch';
|
||||||
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
||||||
import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx';
|
import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx';
|
||||||
import { updateMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { updateMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { MetadataServerSettings } from '@/typings.ts';
|
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { MetadataDownloadSettings } from '@/modules/downloads/Downloads.types.ts';
|
import { MetadataDownloadSettings } from '@/modules/downloads/Downloads.types.ts';
|
||||||
|
import { MetadataServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
const MIN_LIMIT = 2;
|
const MIN_LIMIT = 2;
|
||||||
const MAX_LIMIT = 10;
|
const MAX_LIMIT = 10;
|
||||||
|
|||||||
@@ -15,13 +15,12 @@ import Switch from '@mui/material/Switch';
|
|||||||
import ListSubheader from '@mui/material/ListSubheader';
|
import ListSubheader from '@mui/material/ListSubheader';
|
||||||
import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx';
|
import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx';
|
||||||
import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
||||||
import { ServerSettings } from '@/typings.ts';
|
|
||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { DownloadAheadSetting } from '@/modules/downloads/components/DownloadAheadSetting.tsx';
|
import { DownloadAheadSetting } from '@/modules/downloads/components/DownloadAheadSetting.tsx';
|
||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { DeleteChaptersWhileReadingSetting } from '@/modules/downloads/components/DeleteChaptersWhileReadingSetting.tsx';
|
import { DeleteChaptersWhileReadingSetting } from '@/modules/downloads/components/DeleteChaptersWhileReadingSetting.tsx';
|
||||||
import { CategoriesInclusionSetting } from '@/modules/category/components/CategoriesInclusionSetting.tsx';
|
import { CategoriesInclusionSetting } from '@/modules/category/components/CategoriesInclusionSetting.tsx';
|
||||||
@@ -32,6 +31,7 @@ import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'
|
|||||||
import { GetCategoriesSettingsQuery, GetCategoriesSettingsQueryVariables } from '@/lib/graphql/generated/graphql.ts';
|
import { GetCategoriesSettingsQuery, GetCategoriesSettingsQueryVariables } from '@/lib/graphql/generated/graphql.ts';
|
||||||
import { GET_CATEGORIES_SETTINGS } from '@/lib/graphql/queries/CategoryQuery.ts';
|
import { GET_CATEGORIES_SETTINGS } from '@/lib/graphql/queries/CategoryQuery.ts';
|
||||||
import { MetadataDownloadSettings } from '@/modules/downloads/Downloads.types.ts';
|
import { MetadataDownloadSettings } from '@/modules/downloads/Downloads.types.ts';
|
||||||
|
import { ServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
type DownloadSettingsType = Pick<
|
type DownloadSettingsType = Pick<
|
||||||
ServerSettings,
|
ServerSettings,
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import { makeToast } from '@/lib/ui/Toast.ts';
|
|||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { TranslationKey } from '@/Base.types.ts';
|
import { TranslationKey } from '@/Base.types.ts';
|
||||||
import { LibrarySortMode } from '@/modules/library/Library.types.ts';
|
import { LibrarySortMode } from '@/modules/library/Library.types.ts';
|
||||||
import { CategoryMetadataInfo } from '@/modules/category/Category.types.ts';
|
import { CategoryMetadataInfo } from '@/modules/category/Category.types.ts';
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
import { StringParam, useQueryParam } from 'use-query-params';
|
import { StringParam, useQueryParam } from 'use-query-params';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { ChapterType, MangaType, SourceType, TrackRecordType } from '@/lib/graphql/generated/graphql.ts';
|
import { ChapterType, MangaType, SourceType, TrackRecordType } from '@/lib/graphql/generated/graphql.ts';
|
||||||
import { MangaChapterCountInfo, MangaIdInfo } from '@/modules/manga/services/Mangas.ts';
|
import { MangaChapterCountInfo, MangaIdInfo } from '@/modules/manga/services/Mangas.ts';
|
||||||
import { enhancedCleanup } from '@/lib/data/Strings.ts';
|
import { enhancedCleanup } from '@/lib/data/Strings.ts';
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ import { GET_CATEGORIES_LIBRARY } from '@/lib/graphql/queries/CategoryQuery.ts';
|
|||||||
import { Mangas } from '@/modules/manga/services/Mangas.ts';
|
import { Mangas } from '@/modules/manga/services/Mangas.ts';
|
||||||
import { MANGA_CHAPTER_STAT_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts';
|
import { MANGA_CHAPTER_STAT_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts';
|
||||||
import { useLibraryOptionsContext } from '@/modules/library/contexts/LibraryOptionsContext.tsx';
|
import { useLibraryOptionsContext } from '@/modules/library/contexts/LibraryOptionsContext.tsx';
|
||||||
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { getCategoryMetadata } from '@/modules/category/services/CategoryMetadata.ts';
|
import { getCategoryMetadata } from '@/modules/category/services/CategoryMetadata.ts';
|
||||||
|
|
||||||
const TitleWithSizeTag = styled('span')({
|
const TitleWithSizeTag = styled('span')({
|
||||||
|
|||||||
@@ -16,12 +16,12 @@ import Switch from '@mui/material/Switch';
|
|||||||
import ListSubheader from '@mui/material/ListSubheader';
|
import ListSubheader from '@mui/material/ListSubheader';
|
||||||
import { t as translate } from 'i18next';
|
import { t as translate } from 'i18next';
|
||||||
import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
||||||
import { GlobalUpdateSettings } from '@/components/settings/globalUpdate/GlobalUpdateSettings.tsx';
|
import { GlobalUpdateSettings } from '@/modules/settings/components/globalUpdate/GlobalUpdateSettings.tsx';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { Mangas } from '@/modules/manga/services/Mangas.ts';
|
import { Mangas } from '@/modules/manga/services/Mangas.ts';
|
||||||
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'
|
|||||||
import { MangaType, SourceType } from '@/lib/graphql/generated/graphql.ts';
|
import { MangaType, SourceType } from '@/lib/graphql/generated/graphql.ts';
|
||||||
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
||||||
import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx';
|
import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx';
|
||||||
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts';
|
import { shouldForwardProp } from '@/modules/core/utils/ShouldForwardProp.ts';
|
||||||
|
|
||||||
const DetailsWrapper = styled('div')(({ theme }) => ({
|
const DetailsWrapper = styled('div')(({ theme }) => ({
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import gql from 'graphql-tag';
|
|||||||
import { useCategorySelect } from '@/modules/category/hooks/useCategorySelect.tsx';
|
import { useCategorySelect } from '@/modules/category/hooks/useCategorySelect.tsx';
|
||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { getMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { getMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { Categories } from '@/modules/category/services/Categories.ts';
|
import { Categories } from '@/modules/category/services/Categories.ts';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
import { Mangas } from '@/modules/manga/services/Mangas.ts';
|
import { Mangas } from '@/modules/manga/services/Mangas.ts';
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import {
|
|||||||
} from '@/lib/graphql/generated/graphql.ts';
|
} from '@/lib/graphql/generated/graphql.ts';
|
||||||
import { Chapters } from '@/modules/chapter/services/Chapters.ts';
|
import { Chapters } from '@/modules/chapter/services/Chapters.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { getMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { getMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { GET_MANGAS_BASE } from '@/lib/graphql/queries/MangaQuery.ts';
|
import { GET_MANGAS_BASE } from '@/lib/graphql/queries/MangaQuery.ts';
|
||||||
import { MANGA_BASE_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts';
|
import { MANGA_BASE_FIELDS } from '@/lib/graphql/fragments/MangaFragments.ts';
|
||||||
import { TranslationKey } from '@/Base.types.ts';
|
import { TranslationKey } from '@/Base.types.ts';
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import { makeToast } from '@/lib/ui/Toast.ts';
|
|||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts';
|
import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts';
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import { sortByToTranslationKey, sortOrderToTranslationKey } from '@/modules/mig
|
|||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ import {
|
|||||||
GetMangaReaderQuery,
|
GetMangaReaderQuery,
|
||||||
UpdateChapterPatchInput,
|
UpdateChapterPatchInput,
|
||||||
} from '@/lib/graphql/generated/graphql.ts';
|
} from '@/lib/graphql/generated/graphql.ts';
|
||||||
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
import { ChapterIdInfo, Chapters } from '@/modules/chapter/services/Chapters.ts';
|
import { ChapterIdInfo, Chapters } from '@/modules/chapter/services/Chapters.ts';
|
||||||
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
||||||
|
|||||||
50
src/modules/settings/Settings.constants.ts
Normal file
50
src/modules/settings/Settings.constants.ts
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) Contributors to the Suwayomi project
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { DEFAULT_DEVICE } from '@/modules/device/services/Device.ts';
|
||||||
|
import { DEFAULT_SORT_SETTINGS } from '@/modules/migration/Migration.constants.ts';
|
||||||
|
import { MetadataServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
|
export const SERVER_SETTINGS_METADATA_DEFAULT: MetadataServerSettings = {
|
||||||
|
// downloads
|
||||||
|
deleteChaptersManuallyMarkedRead: false,
|
||||||
|
deleteChaptersWhileReading: 0,
|
||||||
|
deleteChaptersWithBookmark: false,
|
||||||
|
downloadAheadLimit: 0,
|
||||||
|
|
||||||
|
// library
|
||||||
|
showAddToLibraryCategorySelectDialog: true,
|
||||||
|
ignoreFilters: false,
|
||||||
|
removeMangaFromCategories: false,
|
||||||
|
showTabSize: false,
|
||||||
|
|
||||||
|
// client
|
||||||
|
devices: [DEFAULT_DEVICE],
|
||||||
|
|
||||||
|
// migration
|
||||||
|
migrateChapters: true,
|
||||||
|
migrateCategories: true,
|
||||||
|
migrateTracking: true,
|
||||||
|
deleteChapters: true,
|
||||||
|
migrateSortSettings: DEFAULT_SORT_SETTINGS,
|
||||||
|
|
||||||
|
// browse
|
||||||
|
hideLibraryEntries: false,
|
||||||
|
|
||||||
|
// tracking
|
||||||
|
updateProgressAfterReading: true,
|
||||||
|
updateProgressManualMarkRead: false,
|
||||||
|
|
||||||
|
// updates
|
||||||
|
webUIInformAvailableUpdate: true,
|
||||||
|
serverInformAvailableUpdate: true,
|
||||||
|
|
||||||
|
// themes
|
||||||
|
customThemes: {},
|
||||||
|
mangaThumbnailBackdrop: true,
|
||||||
|
};
|
||||||
36
src/modules/settings/Settings.types.ts
Normal file
36
src/modules/settings/Settings.types.ts
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) Contributors to the Suwayomi project
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { MetadataDownloadSettings } from '@/modules/downloads/Downloads.types.ts';
|
||||||
|
import { MetadataLibrarySettings } from '@/modules/library/Library.types.ts';
|
||||||
|
import { MetadataClientSettings } from '@/modules/device/Device.types.ts';
|
||||||
|
import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts';
|
||||||
|
import { MetadataBrowseSettings } from '@/modules/browse/Browse.types.ts';
|
||||||
|
import { MetadataTrackingSettings } from '@/modules/tracker/Tracker.types.ts';
|
||||||
|
import { MetadataUpdateSettings } from '@/modules/app-updates/AppUpdateChecker.types.ts';
|
||||||
|
import { MetadataThemeSettings } from '@/modules/theme/AppTheme.types.ts';
|
||||||
|
import { GetServerSettingsQuery } from '@/lib/graphql/generated/graphql.ts';
|
||||||
|
|
||||||
|
export type MetadataServerSettingKeys = keyof MetadataServerSettings;
|
||||||
|
|
||||||
|
export type SearchMetadataKeys = keyof ISearchSettings;
|
||||||
|
|
||||||
|
export type MetadataServerSettings = MetadataDownloadSettings &
|
||||||
|
MetadataLibrarySettings &
|
||||||
|
MetadataClientSettings &
|
||||||
|
MetadataMigrationSettings &
|
||||||
|
MetadataBrowseSettings &
|
||||||
|
MetadataTrackingSettings &
|
||||||
|
MetadataUpdateSettings &
|
||||||
|
MetadataThemeSettings;
|
||||||
|
|
||||||
|
export interface ISearchSettings {
|
||||||
|
ignoreFilters: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ServerSettings = GetServerSettingsQuery['settings'];
|
||||||
@@ -16,11 +16,11 @@ import {
|
|||||||
CategoriesInclusionSetting,
|
CategoriesInclusionSetting,
|
||||||
CategoriesInclusionSettingProps,
|
CategoriesInclusionSettingProps,
|
||||||
} from '@/modules/category/components/CategoriesInclusionSetting.tsx';
|
} from '@/modules/category/components/CategoriesInclusionSetting.tsx';
|
||||||
import { GlobalUpdateSettingsEntries } from '@/components/settings/globalUpdate/GlobalUpdateSettingsEntries.tsx';
|
import { GlobalUpdateSettingsEntries } from '@/modules/settings/components/globalUpdate/GlobalUpdateSettingsEntries.tsx';
|
||||||
import { GlobalUpdateSettingsInterval } from '@/components/settings/globalUpdate/GlobalUpdateSettingsInterval.tsx';
|
import { GlobalUpdateSettingsInterval } from '@/modules/settings/components/globalUpdate/GlobalUpdateSettingsInterval.tsx';
|
||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { ServerSettings } from '@/typings.ts';
|
import { ServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
type LibrarySettingsType = Pick<ServerSettings, 'updateMangas'>;
|
type LibrarySettingsType = Pick<ServerSettings, 'updateMangas'>;
|
||||||
|
|
||||||
@@ -16,12 +16,12 @@ import Dialog from '@mui/material/Dialog';
|
|||||||
import DialogActions from '@mui/material/DialogActions';
|
import DialogActions from '@mui/material/DialogActions';
|
||||||
import DialogContent from '@mui/material/DialogContent';
|
import DialogContent from '@mui/material/DialogContent';
|
||||||
import DialogTitle from '@mui/material/DialogTitle';
|
import DialogTitle from '@mui/material/DialogTitle';
|
||||||
import { ServerSettings } from '@/typings.ts';
|
|
||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { CheckboxContainer } from '@/modules/core/components/inputs/CheckboxContainer.ts';
|
import { CheckboxContainer } from '@/modules/core/components/inputs/CheckboxContainer.ts';
|
||||||
import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx';
|
import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx';
|
||||||
import { TranslationKey } from '@/Base.types.ts';
|
import { TranslationKey } from '@/Base.types.ts';
|
||||||
|
import { ServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
type GlobalUpdateSkipEntriesSettings = Pick<
|
type GlobalUpdateSkipEntriesSettings = Pick<
|
||||||
ServerSettings,
|
ServerSettings,
|
||||||
@@ -15,7 +15,8 @@ import { useCallback } from 'react';
|
|||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
||||||
import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx';
|
import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx';
|
||||||
import { ServerSettings } from '@/typings.ts';
|
|
||||||
|
import { ServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
const DEFAULT_INTERVAL_HOURS = 12;
|
const DEFAULT_INTERVAL_HOURS = 12;
|
||||||
const MIN_INTERVAL_HOURS = 6;
|
const MIN_INTERVAL_HOURS = 6;
|
||||||
@@ -15,8 +15,8 @@ import { useCallback } from 'react';
|
|||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
||||||
import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx';
|
import { getPersistedServerSetting, usePersistedValue } from '@/modules/core/hooks/usePersistedValue.tsx';
|
||||||
import { ServerSettings } from '@/typings.ts';
|
import { makeToast } from '@/modules/core/utils/Toast.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { ServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
const DEFAULT_VALUE = 23;
|
const DEFAULT_VALUE = 23;
|
||||||
const MIN_VALUE = 1;
|
const MIN_VALUE = 1;
|
||||||
@@ -28,7 +28,7 @@ import { ThemeList } from '@/modules/theme/components/ThemeList.tsx';
|
|||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
||||||
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
@@ -19,7 +19,6 @@ import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.t
|
|||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
||||||
import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx';
|
import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx';
|
||||||
import { ServerSettings as GqlServerSettings } from '@/typings.ts';
|
|
||||||
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
|
||||||
import { SelectSetting } from '@/modules/core/components/settings/SelectSetting.tsx';
|
import { SelectSetting } from '@/modules/core/components/settings/SelectSetting.tsx';
|
||||||
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
||||||
@@ -28,9 +27,10 @@ import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'
|
|||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { MetadataUpdateSettings } from '@/modules/app-updates/AppUpdateChecker.types.ts';
|
import { MetadataUpdateSettings } from '@/modules/app-updates/AppUpdateChecker.types.ts';
|
||||||
|
import { ServerSettings as GqlServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
type ServerSettingsType = Pick<
|
type ServerSettingsType = Pick<
|
||||||
GqlServerSettings,
|
GqlServerSettings,
|
||||||
@@ -13,9 +13,8 @@ import ListItem from '@mui/material/ListItem';
|
|||||||
import ListItemText from '@mui/material/ListItemText';
|
import ListItemText from '@mui/material/ListItemText';
|
||||||
import Switch from '@mui/material/Switch';
|
import Switch from '@mui/material/Switch';
|
||||||
import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
||||||
import { ServerSettings } from '@/typings.ts';
|
|
||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { WebUIUpdateIntervalSetting } from '@/components/settings/webUI/WebUIUpdateIntervalSetting.tsx';
|
import { WebUIUpdateIntervalSetting } from '@/modules/settings/components/webUI/WebUIUpdateIntervalSetting.tsx';
|
||||||
import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx';
|
import { TextSetting } from '@/modules/core/components/settings/text/TextSetting.tsx';
|
||||||
import {
|
import {
|
||||||
SelectSetting,
|
SelectSetting,
|
||||||
@@ -29,9 +28,10 @@ import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'
|
|||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { MetadataUpdateSettings } from '@/modules/app-updates/AppUpdateChecker.types.ts';
|
import { MetadataUpdateSettings } from '@/modules/app-updates/AppUpdateChecker.types.ts';
|
||||||
|
import { ServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
|
|
||||||
type WebUISettingsType = Pick<
|
type WebUISettingsType = Pick<
|
||||||
ServerSettings,
|
ServerSettings,
|
||||||
@@ -6,60 +6,15 @@
|
|||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {
|
import { AllowedMetadataValueTypes, AppMetadataKeys, Metadata } from '@/typings.ts';
|
||||||
AllowedMetadataValueTypes,
|
|
||||||
AppMetadataKeys,
|
|
||||||
Metadata,
|
|
||||||
MetadataServerSettingKeys,
|
|
||||||
MetadataServerSettings,
|
|
||||||
} from '@/typings.ts';
|
|
||||||
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
|
||||||
import { convertFromGqlMeta, getMetadataFrom, requestUpdateServerMetadata } from '@/lib/metadata/metadata.ts';
|
import { convertFromGqlMeta, getMetadataFrom, requestUpdateServerMetadata } from '@/lib/metadata/metadata.ts';
|
||||||
import { jsonSaveParse } from '@/lib/HelperFunctions.ts';
|
import { jsonSaveParse } from '@/lib/HelperFunctions.ts';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
import { DEFAULT_SORT_SETTINGS } from '@/modules/migration/Migration.constants.ts';
|
|
||||||
import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts';
|
import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts';
|
||||||
import { MetadataThemeSettings } from '@/modules/theme/AppTheme.types.ts';
|
import { MetadataThemeSettings } from '@/modules/theme/AppTheme.types.ts';
|
||||||
import { DEFAULT_DEVICE } from '@/modules/device/services/Device.ts';
|
import { SERVER_SETTINGS_METADATA_DEFAULT } from '@/modules/settings/Settings.constants.ts';
|
||||||
|
import { MetadataServerSettingKeys, MetadataServerSettings } from '@/modules/settings/Settings.types.ts';
|
||||||
export const getDefaultSettings = (): MetadataServerSettings => ({
|
|
||||||
// downloads
|
|
||||||
deleteChaptersManuallyMarkedRead: false,
|
|
||||||
deleteChaptersWhileReading: 0,
|
|
||||||
deleteChaptersWithBookmark: false,
|
|
||||||
downloadAheadLimit: 0,
|
|
||||||
|
|
||||||
// library
|
|
||||||
showAddToLibraryCategorySelectDialog: true,
|
|
||||||
ignoreFilters: false,
|
|
||||||
removeMangaFromCategories: false,
|
|
||||||
showTabSize: false,
|
|
||||||
|
|
||||||
// client
|
|
||||||
devices: [DEFAULT_DEVICE],
|
|
||||||
|
|
||||||
// migration
|
|
||||||
migrateChapters: true,
|
|
||||||
migrateCategories: true,
|
|
||||||
migrateTracking: true,
|
|
||||||
deleteChapters: true,
|
|
||||||
migrateSortSettings: DEFAULT_SORT_SETTINGS,
|
|
||||||
|
|
||||||
// browse
|
|
||||||
hideLibraryEntries: false,
|
|
||||||
|
|
||||||
// tracking
|
|
||||||
updateProgressAfterReading: true,
|
|
||||||
updateProgressManualMarkRead: false,
|
|
||||||
|
|
||||||
// updates
|
|
||||||
webUIInformAvailableUpdate: true,
|
|
||||||
serverInformAvailableUpdate: true,
|
|
||||||
|
|
||||||
// themes
|
|
||||||
customThemes: {},
|
|
||||||
mangaThumbnailBackdrop: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
export const convertSettingsToMetadata = (
|
export const convertSettingsToMetadata = (
|
||||||
settings: Partial<MetadataServerSettings>,
|
settings: Partial<MetadataServerSettings>,
|
||||||
@@ -74,21 +29,22 @@ export const convertMetadataToSettings = (
|
|||||||
metadata: Partial<Metadata<AppMetadataKeys, AllowedMetadataValueTypes>>,
|
metadata: Partial<Metadata<AppMetadataKeys, AllowedMetadataValueTypes>>,
|
||||||
): MetadataServerSettings =>
|
): MetadataServerSettings =>
|
||||||
({
|
({
|
||||||
...getDefaultSettings(),
|
...SERVER_SETTINGS_METADATA_DEFAULT,
|
||||||
...(metadata as unknown as MetadataServerSettings),
|
...(metadata as unknown as MetadataServerSettings),
|
||||||
devices: jsonSaveParse<string[]>((metadata.devices as string) ?? '') ?? getDefaultSettings().devices,
|
devices:
|
||||||
|
jsonSaveParse<string[]>((metadata.devices as string) ?? '') ?? SERVER_SETTINGS_METADATA_DEFAULT.devices,
|
||||||
customThemes:
|
customThemes:
|
||||||
jsonSaveParse<MetadataThemeSettings['customThemes']>((metadata.customThemes as string) ?? '') ??
|
jsonSaveParse<MetadataThemeSettings['customThemes']>((metadata.customThemes as string) ?? '') ??
|
||||||
getDefaultSettings().customThemes,
|
SERVER_SETTINGS_METADATA_DEFAULT.customThemes,
|
||||||
migrateSortSettings:
|
migrateSortSettings:
|
||||||
jsonSaveParse<MetadataMigrationSettings['migrateSortSettings']>(
|
jsonSaveParse<MetadataMigrationSettings['migrateSortSettings']>(
|
||||||
(metadata.migrateSortSettings as string) ?? '',
|
(metadata.migrateSortSettings as string) ?? '',
|
||||||
) ?? getDefaultSettings().migrateSortSettings,
|
) ?? SERVER_SETTINGS_METADATA_DEFAULT.migrateSortSettings,
|
||||||
}) satisfies MetadataServerSettings;
|
}) satisfies MetadataServerSettings;
|
||||||
|
|
||||||
const getMetadataServerSettingsWithDefaultFallback = (
|
const getMetadataServerSettingsWithDefaultFallback = (
|
||||||
meta?: Metadata,
|
meta?: Metadata,
|
||||||
defaultSettings: MetadataServerSettings = getDefaultSettings(),
|
defaultSettings: MetadataServerSettings = SERVER_SETTINGS_METADATA_DEFAULT,
|
||||||
applyMetadataMigration: boolean = true,
|
applyMetadataMigration: boolean = true,
|
||||||
): MetadataServerSettings =>
|
): MetadataServerSettings =>
|
||||||
convertMetadataToSettings(
|
convertMetadataToSettings(
|
||||||
@@ -37,7 +37,7 @@ import {
|
|||||||
GetSourceMangasFetchMutationVariables,
|
GetSourceMangasFetchMutationVariables,
|
||||||
} from '@/lib/graphql/generated/graphql.ts';
|
} from '@/lib/graphql/generated/graphql.ts';
|
||||||
import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
import { NavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
||||||
import { useMetadataServerSettings } from '@/lib/metadata/metadataServerSettings.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { useLocalStorage, useSessionStorage } from '@/modules/core/hooks/useStorage.tsx';
|
import { useLocalStorage, useSessionStorage } from '@/modules/core/hooks/useStorage.tsx';
|
||||||
import { AppStorage } from '@/lib/AppStorage.ts';
|
import { AppStorage } from '@/lib/AppStorage.ts';
|
||||||
import { getGridSnapshotKey } from '@/modules/manga/components/MangaGrid.tsx';
|
import { getGridSnapshotKey } from '@/modules/manga/components/MangaGrid.tsx';
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import { AppTheme, isThemeNameUnique } from '@/modules/theme/services/AppThemes.
|
|||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { EmptyView } from '@/modules/core/components/placeholder/EmptyView.tsx';
|
import { EmptyView } from '@/modules/core/components/placeholder/EmptyView.tsx';
|
||||||
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { appThemes } from '@/modules/theme/services/AppThemes.ts';
|
|||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { EmptyView } from '@/modules/core/components/placeholder/EmptyView.tsx';
|
import { EmptyView } from '@/modules/core/components/placeholder/EmptyView.tsx';
|
||||||
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import { SettingsTrackerCard } from '@/modules/tracker/components/cards/Settings
|
|||||||
import {
|
import {
|
||||||
createUpdateMetadataServerSettings,
|
createUpdateMetadataServerSettings,
|
||||||
useMetadataServerSettings,
|
useMetadataServerSettings,
|
||||||
} from '@/lib/metadata/metadataServerSettings.ts';
|
} from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { makeToast } from '@/lib/ui/Toast.ts';
|
import { makeToast } from '@/lib/ui/Toast.ts';
|
||||||
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
|
||||||
import { GET_TRACKERS_SETTINGS } from '@/lib/graphql/queries/TrackerQuery.ts';
|
import { GET_TRACKERS_SETTINGS } from '@/lib/graphql/queries/TrackerQuery.ts';
|
||||||
|
|||||||
@@ -6,18 +6,11 @@
|
|||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { GetServerSettingsQuery, MetaType } from '@/lib/graphql/generated/graphql.ts';
|
import { MetaType } from '@/lib/graphql/generated/graphql.ts';
|
||||||
import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts';
|
|
||||||
import { MangaMetadataKeys } from '@/modules/manga/MangaCard.types.tsx';
|
import { MangaMetadataKeys } from '@/modules/manga/MangaCard.types.tsx';
|
||||||
import { MetadataLibrarySettings } from '@/modules/library/Library.types.ts';
|
|
||||||
import { SourceMetadataKeys } from '@/modules/source/Source.types.ts';
|
import { SourceMetadataKeys } from '@/modules/source/Source.types.ts';
|
||||||
import { MetadataTrackingSettings } from '@/modules/tracker/Tracker.types.ts';
|
|
||||||
import { CategoryMetadataKeys } from '@/modules/category/Category.types.ts';
|
import { CategoryMetadataKeys } from '@/modules/category/Category.types.ts';
|
||||||
import { MetadataUpdateSettings } from '@/modules/app-updates/AppUpdateChecker.types.ts';
|
import { MetadataServerSettingKeys, SearchMetadataKeys } from '@/modules/settings/Settings.types.ts';
|
||||||
import { MetadataThemeSettings } from '@/modules/theme/AppTheme.types.ts';
|
|
||||||
import { MetadataClientSettings } from '@/modules/device/Device.types.ts';
|
|
||||||
import { MetadataBrowseSettings } from '@/modules/browse/Browse.types.ts';
|
|
||||||
import { MetadataDownloadSettings } from '@/modules/downloads/Downloads.types.ts';
|
|
||||||
|
|
||||||
export interface IMetadataMigration {
|
export interface IMetadataMigration {
|
||||||
appKeyPrefix?: { oldPrefix: string; newPrefix: string };
|
appKeyPrefix?: { oldPrefix: string; newPrefix: string };
|
||||||
@@ -45,10 +38,6 @@ export type MetadataHolder<Keys extends string = string, Values = string> = {
|
|||||||
|
|
||||||
export type AllowedMetadataValueTypes = string | boolean | number | undefined | null;
|
export type AllowedMetadataValueTypes = string | boolean | number | undefined | null;
|
||||||
|
|
||||||
export type MetadataServerSettingKeys = keyof MetadataServerSettings;
|
|
||||||
|
|
||||||
export type SearchMetadataKeys = keyof ISearchSettings;
|
|
||||||
|
|
||||||
export type AppMetadataKeys =
|
export type AppMetadataKeys =
|
||||||
| MetadataServerSettingKeys
|
| MetadataServerSettingKeys
|
||||||
| MangaMetadataKeys
|
| MangaMetadataKeys
|
||||||
@@ -57,18 +46,3 @@ export type AppMetadataKeys =
|
|||||||
| CategoryMetadataKeys;
|
| CategoryMetadataKeys;
|
||||||
|
|
||||||
export type MetadataKeyValuePair = [AppMetadataKeys, AllowedMetadataValueTypes];
|
export type MetadataKeyValuePair = [AppMetadataKeys, AllowedMetadataValueTypes];
|
||||||
|
|
||||||
export type MetadataServerSettings = MetadataDownloadSettings &
|
|
||||||
MetadataLibrarySettings &
|
|
||||||
MetadataClientSettings &
|
|
||||||
MetadataMigrationSettings &
|
|
||||||
MetadataBrowseSettings &
|
|
||||||
MetadataTrackingSettings &
|
|
||||||
MetadataUpdateSettings &
|
|
||||||
MetadataThemeSettings;
|
|
||||||
|
|
||||||
export interface ISearchSettings {
|
|
||||||
ignoreFilters: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export type ServerSettings = GetServerSettingsQuery['settings'];
|
|
||||||
|
|||||||
Reference in New Issue
Block a user