Custom reader profiles
This commit is contained in:
@@ -10,11 +10,14 @@ import { ReactNode } from 'react';
|
||||
import { ReaderStatePagesContextProvider } from '@/modules/reader/contexts/state/ReaderStatePagesContextProvider.tsx';
|
||||
import { ReaderStateChaptersContextProvider } from '@/modules/reader/contexts/state/ReaderStateChaptersContextProvider.tsx';
|
||||
import { ReaderStateMangaContextProvider } from '@/modules/reader/contexts/state/ReaderStateMangaContextProvider.tsx';
|
||||
import { ReaderStateSettingsContextProvider } from '@/modules/reader/contexts/state/ReaderStateSettingsContextProvider.tsx';
|
||||
|
||||
export const ReaderStateContextProvider = ({ children }: { children: ReactNode }) => (
|
||||
<ReaderStateMangaContextProvider>
|
||||
<ReaderStateChaptersContextProvider>
|
||||
<ReaderStatePagesContextProvider>{children}</ReaderStatePagesContextProvider>
|
||||
<ReaderStateSettingsContextProvider>
|
||||
<ReaderStatePagesContextProvider>{children}</ReaderStatePagesContextProvider>
|
||||
</ReaderStateSettingsContextProvider>
|
||||
</ReaderStateChaptersContextProvider>
|
||||
</ReaderStateMangaContextProvider>
|
||||
);
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* 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 { createContext, useContext } from 'react';
|
||||
import { IReaderSettingsWithDefaultFlag } from '@/modules/reader/types/Reader.types.ts';
|
||||
import { DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG } from '@/modules/reader/services/ReaderSettingsMetadata.ts';
|
||||
|
||||
type TReaderStateSettingsContext = {
|
||||
settings: IReaderSettingsWithDefaultFlag;
|
||||
setSettings: (settings: IReaderSettingsWithDefaultFlag) => void;
|
||||
};
|
||||
|
||||
export const ReaderStateSettingsContext = createContext<TReaderStateSettingsContext>({
|
||||
settings: DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG,
|
||||
setSettings: () => undefined,
|
||||
});
|
||||
|
||||
export const useReaderStateSettingsContext = () => useContext(ReaderStateSettingsContext);
|
||||
@@ -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 { ContextType, ReactNode, useMemo, useState } from 'react';
|
||||
import { ReaderStateSettingsContext } from '@/modules/reader/contexts/state/ReaderStateSettingsContext.tsx';
|
||||
import { DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG } from '@/modules/reader/services/ReaderSettingsMetadata.ts';
|
||||
|
||||
export const ReaderStateSettingsContextProvider = ({ children }: { children: ReactNode }) => {
|
||||
const [settings, setSettings] = useState<ContextType<typeof ReaderStateSettingsContext>['settings']>(
|
||||
DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG,
|
||||
);
|
||||
|
||||
const value = useMemo(() => ({ settings, setSettings }), [settings]);
|
||||
|
||||
return <ReaderStateSettingsContext.Provider value={value}>{children}</ReaderStateSettingsContext.Provider>;
|
||||
};
|
||||
Reference in New Issue
Block a user