Move reader files into new folder

This commit is contained in:
schroda
2024-10-05 19:44:47 +02:00
parent 91e1f01de5
commit 79341b7817
17 changed files with 121 additions and 95 deletions

View File

@@ -26,13 +26,16 @@ const { Browse } = loadable(() => import('@/screens/Browse'), lazyLoadFallback);
const { DownloadQueue } = loadable(() => import('@/screens/DownloadQueue'), lazyLoadFallback); const { DownloadQueue } = loadable(() => import('@/screens/DownloadQueue'), lazyLoadFallback);
const { Library } = loadable(() => import('@/modules/library/screens/Library.tsx'), lazyLoadFallback); const { Library } = loadable(() => import('@/modules/library/screens/Library.tsx'), lazyLoadFallback);
const { Manga } = loadable(() => import('@/modules/manga/screens/Manga.tsx'), lazyLoadFallback); const { Manga } = loadable(() => import('@/modules/manga/screens/Manga.tsx'), lazyLoadFallback);
const { Reader } = loadable(() => import('@/screens/Reader'), lazyLoadFallback); const { Reader } = loadable(() => import('@/modules/reader/screens/Reader.tsx'), lazyLoadFallback);
const { SearchAll } = loadable(() => import('@/screens/SearchAll'), lazyLoadFallback); const { SearchAll } = loadable(() => import('@/screens/SearchAll'), lazyLoadFallback);
const { Settings } = loadable(() => import('@/screens/Settings'), lazyLoadFallback); const { Settings } = loadable(() => import('@/screens/Settings'), lazyLoadFallback);
const { About } = loadable(() => import('@/screens/settings/About'), lazyLoadFallback); const { About } = loadable(() => import('@/screens/settings/About'), lazyLoadFallback);
const { Backup } = loadable(() => import('@/screens/settings/Backup'), lazyLoadFallback); const { Backup } = loadable(() => import('@/screens/settings/Backup'), lazyLoadFallback);
const { Categories } = loadable(() => import('@/screens/settings/Categories'), lazyLoadFallback); const { Categories } = loadable(() => import('@/screens/settings/Categories'), lazyLoadFallback);
const { DefaultReaderSettings } = loadable(() => import('@/screens/settings/DefaultReaderSettings'), lazyLoadFallback); const { DefaultReaderSettings } = loadable(
() => import('@/modules/reader/screens/DefaultReaderSettings.tsx'),
lazyLoadFallback,
);
const { SourceConfigure } = loadable(() => import('@/screens/SourceConfigure'), lazyLoadFallback); const { SourceConfigure } = loadable(() => import('@/screens/SourceConfigure'), lazyLoadFallback);
const { SourceMangas } = loadable(() => import('@/screens/SourceMangas'), lazyLoadFallback); const { SourceMangas } = loadable(() => import('@/screens/SourceMangas'), lazyLoadFallback);
const { Updates } = loadable(() => import('@/screens/Updates'), lazyLoadFallback); const { Updates } = loadable(() => import('@/screens/Updates'), lazyLoadFallback);

View File

@@ -14,7 +14,7 @@ import { useManageMangaLibraryState } from '@/modules/manga/hooks/useManageManga
import { MangaThumbnailInfo } from '@/modules/manga/services/Mangas.ts'; import { MangaThumbnailInfo } from '@/modules/manga/services/Mangas.ts';
import { ChapterType, MangaType } from '@/lib/graphql/generated/graphql.ts'; import { ChapterType, MangaType } from '@/lib/graphql/generated/graphql.ts';
import { SingleModeProps } from '@/modules/manga/components/MangaActionMenuItems.tsx'; import { SingleModeProps } from '@/modules/manga/components/MangaActionMenuItems.tsx';
import { IReaderSettings } from '@/typings'; import { IReaderSettings } from '@/modules/reader/Reader.types';
export type MangaCardMode = 'default' | 'source' | 'migrate.search' | 'migrate.select' | 'duplicate'; export type MangaCardMode = 'default' | 'source' | 'migrate.search' | 'migrate.select' | 'duplicate';

View File

@@ -0,0 +1,21 @@
/*
* 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 { IReaderSettings } from '@/modules/reader/Reader.types.ts';
export const DEFAULT_READER_SETTINGS: IReaderSettings = {
staticNav: false,
showPageNumber: true,
loadNextOnEnding: false,
skipDupChapters: true,
fitPageToWindow: true,
scalePage: false,
readerType: 'ContinuesVertical',
offsetFirstPage: false,
readerWidth: 50,
};

View File

@@ -0,0 +1,55 @@
/*
* 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 { GetChaptersReaderQuery, MangaReaderFieldsFragment } from '@/lib/graphql/generated/graphql.ts';
export type ReaderType =
| 'ContinuesVertical'
| 'Webtoon'
| 'SingleVertical'
| 'SingleRTL'
| 'SingleLTR'
| 'DoubleVertical'
| 'DoubleRTL'
| 'DoubleLTR'
| 'ContinuesHorizontalLTR'
| 'ContinuesHorizontalRTL';
export interface IReaderSettings {
staticNav: boolean;
showPageNumber: boolean;
loadNextOnEnding: boolean;
skipDupChapters: boolean;
fitPageToWindow: boolean;
scalePage: boolean;
readerType: ReaderType;
offsetFirstPage: boolean;
readerWidth: number;
}
export type UndefinedReaderSettings = {
[setting in keyof IReaderSettings]: IReaderSettings[setting] | undefined;
};
export interface IReaderPage {
index: number;
src: string;
}
export interface IReaderProps {
pages: Array<IReaderPage>;
pageCount: number;
setCurPage: React.Dispatch<React.SetStateAction<number>>;
curPage: number;
initialPage: number;
settings: IReaderSettings;
manga: MangaReaderFieldsFragment;
chapter: GetChaptersReaderQuery['chapters']['nodes'][number];
nextChapter: () => void;
prevChapter: () => void;
}

View File

@@ -27,8 +27,8 @@ import ListItem from '@mui/material/ListItem';
import ListItemText from '@mui/material/ListItemText'; import ListItemText from '@mui/material/ListItemText';
import Collapse from '@mui/material/Collapse'; import Collapse from '@mui/material/Collapse';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { AllowedMetadataValueTypes, IReaderSettings } from '@/typings'; import { AllowedMetadataValueTypes } from '@/typings.ts';
import { ReaderSettingsOptions } from '@/components/reader/ReaderSettingsOptions'; import { ReaderSettingsOptions } from '@/modules/reader/components/ReaderSettingsOptions.tsx';
import { useBackButton } from '@/modules/core/hooks/useBackButton.ts'; import { useBackButton } from '@/modules/core/hooks/useBackButton.ts';
import { Select } from '@/modules/core/components/inputs/Select.tsx'; import { Select } from '@/modules/core/components/inputs/Select.tsx';
import { useGetOptionForDirection } from '@/theme.tsx'; import { useGetOptionForDirection } from '@/theme.tsx';
@@ -37,6 +37,7 @@ import { MangaChapterCountInfo, MangaIdInfo } from '@/modules/manga/services/Man
import { useNavBarContext } from '@/components/context/NavbarContext.tsx'; import { useNavBarContext } from '@/components/context/NavbarContext.tsx';
import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx';
import { CustomIconButton } from '@/modules/core/components/buttons/CustomIconButton.tsx'; import { CustomIconButton } from '@/modules/core/components/buttons/CustomIconButton.tsx';
import { IReaderSettings } from '@/modules/reader/Reader.types.ts';
import { DirectionOffset } from '@/Base.types.ts'; import { DirectionOffset } from '@/Base.types.ts';
const Root = styled('div')({ const Root = styled('div')({

View File

@@ -12,10 +12,11 @@ import ListItemText from '@mui/material/ListItemText';
import Switch from '@mui/material/Switch'; import Switch from '@mui/material/Switch';
import MenuItem from '@mui/material/MenuItem'; import MenuItem from '@mui/material/MenuItem';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { AllowedMetadataValueTypes, IReaderSettings } from '@/typings'; import { AllowedMetadataValueTypes } from '@/typings.ts';
import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx'; import { NumberSetting } from '@/modules/core/components/settings/NumberSetting.tsx';
import { isHorizontalReaderType } from '@/components/reader/Page.tsx'; import { isHorizontalReaderType } from '@/modules/reader/components/page/Page.tsx';
import { Select } from '@/modules/core/components/inputs/Select.tsx'; import { Select } from '@/modules/core/components/inputs/Select.tsx';
import { IReaderSettings } from '@/modules/reader/Reader.types.ts';
interface IProps extends IReaderSettings { interface IProps extends IReaderSettings {
setSettingValue: (key: keyof IReaderSettings, value: AllowedMetadataValueTypes, persist?: boolean) => void; setSettingValue: (key: keyof IReaderSettings, value: AllowedMetadataValueTypes, persist?: boolean) => void;

View File

@@ -8,10 +8,10 @@
import { CSSProperties, forwardRef } from 'react'; import { CSSProperties, forwardRef } from 'react';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import { IReaderSettings } from '@/typings';
import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx';
import { imageStyle } from '@/components/reader/Page'; import { imageStyle } from '@/modules/reader/components/page/Page.tsx';
import { getOptionForDirection } from '@/theme.tsx'; import { getOptionForDirection } from '@/theme.tsx';
import { IReaderSettings } from '@/modules/reader/Reader.types.ts';
interface IProps { interface IProps {
index: number; index: number;

View File

@@ -10,9 +10,9 @@ import { CSSProperties, forwardRef } from 'react';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import { useTheme } from '@mui/material/styles'; import { useTheme } from '@mui/material/styles';
import useMediaQuery from '@mui/material/useMediaQuery'; import useMediaQuery from '@mui/material/useMediaQuery';
import { IReaderSettings, ReaderType } from '@/typings';
import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx'; import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx';
import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx';
import { IReaderSettings, ReaderType } from '@/modules/reader/Reader.types.ts';
export const isHorizontalReaderType = (readerType: ReaderType): boolean => export const isHorizontalReaderType = (readerType: ReaderType): boolean =>
['ContinuesHorizontalLTR', 'ContinuesHorizontalRTL'].includes(readerType); ['ContinuesHorizontalLTR', 'ContinuesHorizontalRTL'].includes(readerType);

View File

@@ -7,7 +7,8 @@
*/ */
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import { IReaderSettings } from '@/typings';
import { IReaderSettings } from '@/modules/reader/Reader.types.ts';
interface IProps { interface IProps {
settings: IReaderSettings; settings: IReaderSettings;

View File

@@ -8,8 +8,8 @@
import { MouseEvent, useEffect, useRef, useState } from 'react'; import { MouseEvent, useEffect, useRef, useState } from 'react';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import { IReaderProps } from '@/typings'; import { Page } from '@/modules/reader/components/page/Page.tsx';
import { Page } from '@/components/reader/Page'; import { IReaderProps } from '@/modules/reader/Reader.types.ts';
const isSpreadPage = (image: HTMLImageElement): boolean => { const isSpreadPage = (image: HTMLImageElement): boolean => {
const aspectRatio = image.height / image.width; const aspectRatio = image.height / image.width;

View File

@@ -8,9 +8,9 @@
import { MouseEvent as ReactMouseEvent, WheelEvent as ReactWheelEvent, useCallback, useEffect, useRef } from 'react'; import { MouseEvent as ReactMouseEvent, WheelEvent as ReactWheelEvent, useCallback, useEffect, useRef } from 'react';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import { IReaderProps } from '@/typings'; import { Page } from '@/modules/reader/components/page/Page.tsx';
import { Page } from '@/components/reader/Page';
import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx';
import { IReaderProps } from '@/modules/reader/Reader.types.ts';
const findCurrentPageIndex = (wrapper: HTMLDivElement): number => { const findCurrentPageIndex = (wrapper: HTMLDivElement): number => {
for (let i = 0; i < wrapper.children.length; i++) { for (let i = 0; i < wrapper.children.length; i++) {

View File

@@ -8,8 +8,8 @@
import { MouseEvent, useEffect, useRef } from 'react'; import { MouseEvent, useEffect, useRef } from 'react';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import { IReaderProps } from '@/typings'; import { Page } from '@/modules/reader/components/page/Page.tsx';
import { Page } from '@/components/reader/Page'; import { IReaderProps } from '@/modules/reader/Reader.types.ts';
export function PagedPager(props: IReaderProps) { export function PagedPager(props: IReaderProps) {
const { pages, settings, setCurPage, initialPage, curPage, nextChapter, prevChapter } = props; const { pages, settings, setCurPage, initialPage, curPage, nextChapter, prevChapter } = props;

View File

@@ -8,9 +8,9 @@
import { useCallback, useEffect, useRef } from 'react'; import { useCallback, useEffect, useRef } from 'react';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import { IReaderProps } from '@/typings'; import { Page } from '@/modules/reader/components/page/Page.tsx';
import { Page } from '@/components/reader/Page';
import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx'; import { useResizeObserver } from '@/modules/core/hooks/useResizeObserver.tsx';
import { IReaderProps } from '@/modules/reader/Reader.types.ts';
const findCurrentPageIndex = (wrapper: HTMLDivElement): number => { const findCurrentPageIndex = (wrapper: HTMLDivElement): number => {
for (let i = 0; i < wrapper.children.length; i++) { for (let i = 0; i < wrapper.children.length; i++) {

View File

@@ -8,19 +8,20 @@
import { useContext, useLayoutEffect } from 'react'; import { useContext, useLayoutEffect } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { AllowedMetadataValueTypes, IReaderSettings } from '@/typings'; import { AllowedMetadataValueTypes } from '@/typings.ts';
import { convertToGqlMeta, requestUpdateServerMetadata } from '@/lib/metadata/metadata.ts'; import { convertToGqlMeta, requestUpdateServerMetadata } from '@/lib/metadata/metadata.ts';
import { import {
checkAndHandleMissingStoredReaderSettings, checkAndHandleMissingStoredReaderSettings,
getDefaultSettings,
useDefaultReaderSettings, useDefaultReaderSettings,
} from '@/lib/metadata/readerSettings.ts'; } from '@/modules/reader/services/ReaderSettingsMetadata.ts';
import { ReaderSettingsOptions } from '@/components/reader/ReaderSettingsOptions'; import { ReaderSettingsOptions } from '@/modules/reader/components/ReaderSettingsOptions.tsx';
import { makeToast } from '@/lib/ui/Toast.ts'; import { makeToast } from '@/lib/ui/Toast.ts';
import { NavBarContext } from '@/components/context/NavbarContext'; import { NavBarContext } from '@/components/context/NavbarContext.tsx';
import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts'; import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts';
import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx'; import { EmptyViewAbsoluteCentered } from '@/modules/core/components/placeholder/EmptyViewAbsoluteCentered.tsx';
import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx';
import { DEFAULT_READER_SETTINGS } from '@/modules/reader/Reader.constants.ts';
import { IReaderSettings } from '@/modules/reader/Reader.types.ts';
export function DefaultReaderSettings() { export function DefaultReaderSettings() {
const { t } = useTranslation(); const { t } = useTranslation();
@@ -67,7 +68,7 @@ export function DefaultReaderSettings() {
checkAndHandleMissingStoredReaderSettings( checkAndHandleMissingStoredReaderSettings(
{ meta: convertToGqlMeta(metadata)! }, { meta: convertToGqlMeta(metadata)! },
'server', 'server',
getDefaultSettings(), DEFAULT_READER_SETTINGS,
).catch(defaultPromiseErrorHandler('DefaultReaderSettings::checkAndHandleMissingStoredReaderSettings')); ).catch(defaultPromiseErrorHandler('DefaultReaderSettings::checkAndHandleMissingStoredReaderSettings'));
return ( return (

View File

@@ -11,20 +11,20 @@ import { useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, u
import { useLocation, useNavigate, useParams } from 'react-router-dom'; import { useLocation, useNavigate, useParams } from 'react-router-dom';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { AllowedMetadataValueTypes, IReaderSettings, ReaderType } from '@/typings'; import { AllowedMetadataValueTypes } from '@/typings.ts';
import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
import { import {
checkAndHandleMissingStoredReaderSettings, checkAndHandleMissingStoredReaderSettings,
getReaderSettingsFor, getReaderSettingsFor,
useDefaultReaderSettings, useDefaultReaderSettings,
} from '@/lib/metadata/readerSettings.ts'; } from '@/modules/reader/services/ReaderSettingsMetadata.ts';
import { requestUpdateMangaMetadata } from '@/lib/metadata/metadata.ts'; import { requestUpdateMangaMetadata } from '@/lib/metadata/metadata.ts';
import { HorizontalPager } from '@/components/reader/pager/HorizontalPager'; import { HorizontalPager } from '@/modules/reader/components/pager/HorizontalPager.tsx';
import { PageNumber } from '@/components/reader/PageNumber'; import { PageNumber } from '@/modules/reader/components/page/PageNumber.tsx';
import { PagedPager } from '@/components/reader/pager/PagedPager'; import { PagedPager } from '@/modules/reader/components/pager/PagedPager.tsx';
import { DoublePagedPager } from '@/components/reader/pager/DoublePagedPager'; import { DoublePagedPager } from '@/modules/reader/components/pager/DoublePagedPager.tsx';
import { VerticalPager } from '@/components/reader/pager/VerticalPager'; import { VerticalPager } from '@/modules/reader/components/pager/VerticalPager.tsx';
import { ReaderNavBar } from '@/components/navbar/ReaderNavBar'; import { ReaderNavBar } from '@/modules/reader/components/ReaderNavBar.tsx';
import { makeToast } from '@/lib/ui/Toast.ts'; import { makeToast } from '@/lib/ui/Toast.ts';
import { NavBarContext } from '@/components/context/NavbarContext.tsx'; import { NavBarContext } from '@/components/context/NavbarContext.tsx';
import { useDebounce } from '@/modules/core/hooks/useDebounce.ts'; import { useDebounce } from '@/modules/core/hooks/useDebounce.ts';
@@ -43,6 +43,7 @@ import { GET_MANGA_READER } from '@/lib/graphql/queries/MangaQuery.ts';
import { TMangaReader } from '@/modules/manga/services/Mangas.ts'; import { TMangaReader } from '@/modules/manga/services/Mangas.ts';
import { CHAPTER_READER_FIELDS } from '@/lib/graphql/fragments/ChapterFragments.ts'; import { CHAPTER_READER_FIELDS } from '@/lib/graphql/fragments/ChapterFragments.ts';
import { MediaQuery } from '@/lib/ui/MediaQuery.tsx'; import { MediaQuery } from '@/lib/ui/MediaQuery.tsx';
import { IReaderSettings, ReaderType } from '@/modules/reader/Reader.types.ts';
import { DirectionOffset } from '@/Base.types.ts'; import { DirectionOffset } from '@/Base.types.ts';
type TChapter = GetChaptersReaderQuery['chapters']['nodes'][number]; type TChapter = GetChaptersReaderQuery['chapters']['nodes'][number];

View File

@@ -6,7 +6,7 @@
* 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 { Metadata, IReaderSettings, MetadataKeyValuePair, GqlMetaHolder } from '@/typings.ts'; import { GqlMetaHolder, Metadata, MetadataKeyValuePair } from '@/typings.ts';
import { requestManager } from '@/lib/requests/requests/RequestManager.ts'; import { requestManager } from '@/lib/requests/requests/RequestManager.ts';
import { import {
convertFromGqlMeta, convertFromGqlMeta,
@@ -16,26 +16,12 @@ import {
} from '@/lib/metadata/metadata.ts'; } from '@/lib/metadata/metadata.ts';
import { MetaType } from '@/lib/graphql/generated/graphql.ts'; import { MetaType } from '@/lib/graphql/generated/graphql.ts';
import { MangaIdInfo } from '@/modules/manga/services/Mangas.ts'; import { MangaIdInfo } from '@/modules/manga/services/Mangas.ts';
import { DEFAULT_READER_SETTINGS } from '@/modules/reader/Reader.constants.ts';
type UndefinedReaderSettings = { import { IReaderSettings, UndefinedReaderSettings } from '@/modules/reader/Reader.types.ts';
[setting in keyof IReaderSettings]: IReaderSettings[setting] | undefined;
};
export const getDefaultSettings = (): IReaderSettings => ({
staticNav: false,
showPageNumber: true,
loadNextOnEnding: false,
skipDupChapters: true,
fitPageToWindow: true,
scalePage: false,
readerType: 'ContinuesVertical',
offsetFirstPage: false,
readerWidth: 50,
});
const getReaderSettingsWithDefaultValueFallback = <DefaultSettings extends IReaderSettings | UndefinedReaderSettings>( const getReaderSettingsWithDefaultValueFallback = <DefaultSettings extends IReaderSettings | UndefinedReaderSettings>(
meta?: Metadata, meta?: Metadata,
defaultSettings: DefaultSettings = getDefaultSettings() as DefaultSettings, defaultSettings: DefaultSettings = DEFAULT_READER_SETTINGS as DefaultSettings,
applyMetadataMigration: boolean = true, applyMetadataMigration: boolean = true,
): DefaultSettings => getMetadataFrom({ meta }, defaultSettings, applyMetadataMigration); ): DefaultSettings => getMetadataFrom({ meta }, defaultSettings, applyMetadataMigration);

View File

@@ -9,11 +9,9 @@
import { OverridableComponent } from '@mui/material/OverridableComponent'; import { OverridableComponent } from '@mui/material/OverridableComponent';
import { SvgIconTypeMap } from '@mui/material/SvgIcon'; import { SvgIconTypeMap } from '@mui/material/SvgIcon';
import { import {
GetChaptersReaderQuery,
GetServerSettingsQuery, GetServerSettingsQuery,
GetSourceBrowseQuery, GetSourceBrowseQuery,
GetSourceSettingsQuery, GetSourceSettingsQuery,
MangaReaderFieldsFragment,
MetaType, MetaType,
SourcePreferenceChangeInput, SourcePreferenceChangeInput,
} from '@/lib/graphql/generated/graphql.ts'; } from '@/lib/graphql/generated/graphql.ts';
@@ -88,30 +86,6 @@ export interface INavbarOverride {
value: any; value: any;
} }
export type ReaderType =
| 'ContinuesVertical'
| 'Webtoon'
| 'SingleVertical'
| 'SingleRTL'
| 'SingleLTR'
| 'DoubleVertical'
| 'DoubleRTL'
| 'DoubleLTR'
| 'ContinuesHorizontalLTR'
| 'ContinuesHorizontalRTL';
export interface IReaderSettings {
staticNav: boolean;
showPageNumber: boolean;
loadNextOnEnding: boolean;
skipDupChapters: boolean;
fitPageToWindow: boolean;
scalePage: boolean;
readerType: ReaderType;
offsetFirstPage: boolean;
readerWidth: number;
}
export type MetadataDownloadSettings = { export type MetadataDownloadSettings = {
deleteChaptersManuallyMarkedRead: boolean; deleteChaptersManuallyMarkedRead: boolean;
deleteChaptersWhileReading: number; deleteChaptersWhileReading: number;
@@ -163,24 +137,6 @@ export interface ISearchSettings {
ignoreFilters: boolean; ignoreFilters: boolean;
} }
export interface IReaderPage {
index: number;
src: string;
}
export interface IReaderProps {
pages: Array<IReaderPage>;
pageCount: number;
setCurPage: React.Dispatch<React.SetStateAction<number>>;
curPage: number;
initialPage: number;
settings: IReaderSettings;
manga: MangaReaderFieldsFragment;
chapter: GetChaptersReaderQuery['chapters']['nodes'][number];
nextChapter: () => void;
prevChapter: () => void;
}
export type SourcePreferences = GetSourceSettingsQuery['source']['preferences'][number]; export type SourcePreferences = GetSourceSettingsQuery['source']['preferences'][number];
export interface PreferenceProps { export interface PreferenceProps {