Files
suwayomi-material-you-webui/src/typings.ts
T

112 lines
3.5 KiB
TypeScript
Raw Normal View History

/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
2021-01-26 23:32:12 +03:30
* 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/.
*/
2021-01-26 23:32:12 +03:30
import { OverridableComponent } from '@mui/material/OverridableComponent';
2024-04-14 15:50:12 +02:00
import { SvgIconTypeMap } from '@mui/material/SvgIcon';
2024-10-05 21:22:12 +02:00
import { GetServerSettingsQuery, MetaType } from '@/lib/graphql/generated/graphql.ts';
2024-09-05 12:20:21 +02:00
import { AppTheme } from '@/lib/ui/AppThemes.ts';
2024-10-05 21:35:25 +02:00
import { MetadataMigrationSettings } from '@/modules/migration/Migration.types.ts';
2024-10-05 19:33:09 +02:00
import { TranslationKey } from '@/Base.types.ts';
2024-10-05 19:21:26 +02:00
import { MangaMetadataKeys } from '@/modules/manga/MangaCard.types.tsx';
2024-10-05 21:39:58 +02:00
import { MetadataLibrarySettings } from '@/modules/library/Library.types.ts';
2024-10-05 21:22:12 +02:00
import { SourceMetadataKeys } from '@/modules/source/Source.types.ts';
2024-10-05 21:32:31 +02:00
import { MetadataTrackingSettings } from '@/modules/tracker/Tracker.types.ts';
2024-10-05 21:39:58 +02:00
import { CategoryMetadataKeys } from '@/modules/category/Category.types.ts';
2024-09-17 03:40:55 +02:00
export interface IMetadataMigration {
2023-02-06 10:06:33 +01:00
appKeyPrefix?: { oldPrefix: string; newPrefix: string };
2023-02-17 13:10:44 +01:00
values?: {
/**
* In case the migration should only be applied to a specific metadata key.
* Otherwise, all metadata keys will get migrated.
*/
key?: string;
oldValue: string;
newValue: string;
}[];
2023-02-06 10:06:33 +01:00
keys?: { oldKey: string; newKey: string }[];
2023-01-06 18:19:45 +01:00
}
export type Metadata<Keys extends string = string, Values = string> = {
[key in Keys]: Values;
};
2023-09-08 00:44:01 +02:00
export type GqlMetaHolder = { meta?: MetaType[] };
export type MetadataHolder<Keys extends string = string, Values = string> = {
meta?: Metadata<Keys, Values>;
};
2024-09-17 03:40:55 +02:00
export type AllowedMetadataValueTypes = string | boolean | number | undefined | null;
2023-11-19 21:17:35 +01:00
export type MetadataServerSettingKeys = keyof MetadataServerSettings;
export type SearchMetadataKeys = keyof ISearchSettings;
2024-09-17 03:40:55 +02:00
export type AppMetadataKeys =
| MetadataServerSettingKeys
| MangaMetadataKeys
| SearchMetadataKeys
| SourceMetadataKeys
| CategoryMetadataKeys;
export type MetadataKeyValuePair = [AppMetadataKeys, AllowedMetadataValueTypes];
export interface INavbarOverride {
2023-02-06 10:06:33 +01:00
status: boolean;
value: any;
2021-03-29 02:47:51 +04:30
}
2021-05-15 17:18:57 +04:30
export type MetadataDownloadSettings = {
2023-11-19 21:17:35 +01:00
deleteChaptersManuallyMarkedRead: boolean;
deleteChaptersWhileReading: number;
2023-11-19 21:17:35 +01:00
deleteChaptersWithBookmark: boolean;
downloadAheadLimit: number;
};
export type MetadataClientSettings = {
2024-03-06 23:07:48 +01:00
devices: string[];
};
2024-03-16 14:02:54 +01:00
export type MetadataBrowseSettings = {
hideLibraryEntries: boolean;
};
2024-05-07 00:30:22 +02:00
export type MetadataUpdateSettings = {
webUIInformAvailableUpdate: boolean;
2024-05-07 00:37:01 +02:00
serverInformAvailableUpdate: boolean;
2024-05-07 00:30:22 +02:00
};
2024-09-05 12:20:21 +02:00
export type MetadataThemeSettings = {
customThemes: Record<string, AppTheme>;
2024-09-10 14:45:08 +02:00
mangaThumbnailBackdrop: boolean;
2024-09-05 12:20:21 +02:00
};
export type MetadataServerSettings = MetadataDownloadSettings &
MetadataLibrarySettings &
MetadataClientSettings &
MetadataMigrationSettings &
MetadataBrowseSettings &
2024-05-07 00:30:22 +02:00
MetadataTrackingSettings &
2024-09-05 12:20:21 +02:00
MetadataUpdateSettings &
MetadataThemeSettings;
export interface ISearchSettings {
ignoreFilters: boolean;
}
export interface NavbarItem {
2023-02-06 10:06:33 +01:00
path: string;
2023-03-23 13:59:32 +01:00
title: TranslationKey;
2023-02-06 10:06:33 +01:00
SelectedIconComponent: OverridableComponent<SvgIconTypeMap<{}, 'svg'>>;
IconComponent: OverridableComponent<SvgIconTypeMap<{}, 'svg'>>;
show: 'mobile' | 'desktop' | 'both';
}
2021-11-10 23:04:04 +03:30
export type ServerSettings = GetServerSettingsQuery['settings'];