Remove "LibraryOptionsContext"
These options are saved in the category metadata which made the context unnecessary
This commit is contained in:
@@ -13,7 +13,6 @@ import { QueryParamProvider } from 'use-query-params';
|
|||||||
import { ReactRouter6Adapter } from 'use-query-params/adapters/react-router-6';
|
import { ReactRouter6Adapter } from 'use-query-params/adapters/react-router-6';
|
||||||
import { SnackbarProvider } from 'notistack';
|
import { SnackbarProvider } from 'notistack';
|
||||||
import { NavBarContextProvider } from '@/modules/navigation-bar/contexts/NavBarContextProvider.tsx';
|
import { NavBarContextProvider } from '@/modules/navigation-bar/contexts/NavBarContextProvider.tsx';
|
||||||
import { LibraryOptionsContextProvider } from '@/modules/library/contexts/LibraryOptionsProvider.tsx';
|
|
||||||
import { ActiveDeviceContextProvider } from '@/modules/device/contexts/DeviceContext.tsx';
|
import { ActiveDeviceContextProvider } from '@/modules/device/contexts/DeviceContext.tsx';
|
||||||
import { ReaderContextProvider } from '@/modules/reader/contexts/ReaderContextProvider.tsx';
|
import { ReaderContextProvider } from '@/modules/reader/contexts/ReaderContextProvider.tsx';
|
||||||
import { AppHotkeysProvider } from '@/modules/hotkeys/contexts/AppHotkeysProvider.tsx';
|
import { AppHotkeysProvider } from '@/modules/hotkeys/contexts/AppHotkeysProvider.tsx';
|
||||||
@@ -30,27 +29,25 @@ export const AppContext: React.FC<Props> = ({ children }) => (
|
|||||||
<StyledEngineProvider injectFirst>
|
<StyledEngineProvider injectFirst>
|
||||||
<AppThemeContextProvider>
|
<AppThemeContextProvider>
|
||||||
<QueryParamProvider adapter={ReactRouter6Adapter}>
|
<QueryParamProvider adapter={ReactRouter6Adapter}>
|
||||||
<LibraryOptionsContextProvider>
|
<NavBarContextProvider>
|
||||||
<NavBarContextProvider>
|
<AppPageHistoryContextProvider>
|
||||||
<AppPageHistoryContextProvider>
|
<ActiveDeviceContextProvider>
|
||||||
<ActiveDeviceContextProvider>
|
<SnackbarProvider
|
||||||
<SnackbarProvider
|
Components={{
|
||||||
Components={{
|
default: SnackbarWithDescription,
|
||||||
default: SnackbarWithDescription,
|
info: SnackbarWithDescription,
|
||||||
info: SnackbarWithDescription,
|
success: SnackbarWithDescription,
|
||||||
success: SnackbarWithDescription,
|
warning: SnackbarWithDescription,
|
||||||
warning: SnackbarWithDescription,
|
error: SnackbarWithDescription,
|
||||||
error: SnackbarWithDescription,
|
}}
|
||||||
}}
|
>
|
||||||
>
|
<ReaderContextProvider>
|
||||||
<ReaderContextProvider>
|
<AppHotkeysProvider>{children}</AppHotkeysProvider>
|
||||||
<AppHotkeysProvider>{children}</AppHotkeysProvider>
|
</ReaderContextProvider>
|
||||||
</ReaderContextProvider>
|
</SnackbarProvider>
|
||||||
</SnackbarProvider>
|
</ActiveDeviceContextProvider>
|
||||||
</ActiveDeviceContextProvider>
|
</AppPageHistoryContextProvider>
|
||||||
</AppPageHistoryContextProvider>
|
</NavBarContextProvider>
|
||||||
</NavBarContextProvider>
|
|
||||||
</LibraryOptionsContextProvider>
|
|
||||||
</QueryParamProvider>
|
</QueryParamProvider>
|
||||||
</AppThemeContextProvider>
|
</AppThemeContextProvider>
|
||||||
</StyledEngineProvider>
|
</StyledEngineProvider>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { ComponentProps, useState } from 'react';
|
|||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx';
|
import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx';
|
||||||
import { LibraryOptionsPanel } from '@/modules/library/components/LibraryOptionsPanel.tsx';
|
import { LibraryOptionsPanel } from '@/modules/library/components/LibraryOptionsPanel.tsx';
|
||||||
import { useLibraryOptionsContext } from '@/modules/library/contexts/LibraryOptionsContext.tsx';
|
import { getCategoryMetadata } from '@/modules/category/services/CategoryMetadata.ts';
|
||||||
|
|
||||||
export const LibraryToolbarMenu = ({
|
export const LibraryToolbarMenu = ({
|
||||||
category,
|
category,
|
||||||
@@ -22,7 +22,7 @@ export const LibraryToolbarMenu = ({
|
|||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const [open, setOpen] = useState(false);
|
const [open, setOpen] = useState(false);
|
||||||
const { options } = useLibraryOptionsContext();
|
const options = getCategoryMetadata(category);
|
||||||
const active =
|
const active =
|
||||||
options.hasDownloadedChapters != null ||
|
options.hasDownloadedChapters != null ||
|
||||||
options.hasUnreadChapters != null ||
|
options.hasUnreadChapters != null ||
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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 React, { useContext } from 'react';
|
|
||||||
import { DEFAULT_CATEGORY_METADATA } from '@/modules/category/services/CategoryMetadata.ts';
|
|
||||||
import { LibraryOptionsContextType } from '@/modules/library/Library.types.ts';
|
|
||||||
|
|
||||||
export const LibraryOptionsContext = React.createContext<LibraryOptionsContextType>({
|
|
||||||
options: DEFAULT_CATEGORY_METADATA,
|
|
||||||
setOptions: () => {},
|
|
||||||
});
|
|
||||||
|
|
||||||
export function useLibraryOptionsContext() {
|
|
||||||
return useContext(LibraryOptionsContext);
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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 React, { useMemo } from 'react';
|
|
||||||
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
|
|
||||||
import { LibraryOptionsContext } from '@/modules/library/contexts/LibraryOptionsContext.tsx';
|
|
||||||
import { DEFAULT_CATEGORY_METADATA } from '@/modules/category/services/CategoryMetadata.ts';
|
|
||||||
import { LibraryOptions } from '@/modules/library/Library.types.ts';
|
|
||||||
|
|
||||||
interface IProps {
|
|
||||||
children: React.ReactNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const LibraryOptionsContextProvider: React.FC<IProps> = ({ children }) => {
|
|
||||||
const [options, setOptions] = useLocalStorage<LibraryOptions>('libraryOptions', DEFAULT_CATEGORY_METADATA);
|
|
||||||
|
|
||||||
const value = useMemo(
|
|
||||||
() => ({ options: { ...DEFAULT_CATEGORY_METADATA, ...options }, setOptions }),
|
|
||||||
[options, setOptions],
|
|
||||||
);
|
|
||||||
|
|
||||||
return <LibraryOptionsContext.Provider value={value}>{children}</LibraryOptionsContext.Provider>;
|
|
||||||
};
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
import Chip, { ChipProps } from '@mui/material/Chip';
|
import Chip, { ChipProps } from '@mui/material/Chip';
|
||||||
import Tab from '@mui/material/Tab';
|
import Tab from '@mui/material/Tab';
|
||||||
import { styled } from '@mui/material/styles';
|
import { styled } from '@mui/material/styles';
|
||||||
import { useCallback, useLayoutEffect, useMemo, useState } from 'react';
|
import { useCallback, useMemo, useState } from 'react';
|
||||||
import { useQueryParam, NumberParam } from 'use-query-params';
|
import { useQueryParam, NumberParam } from 'use-query-params';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { requestManager } from '@/lib/requests/RequestManager.ts';
|
import { requestManager } from '@/lib/requests/RequestManager.ts';
|
||||||
@@ -39,9 +39,7 @@ import {
|
|||||||
import { GET_CATEGORIES_LIBRARY } from '@/lib/graphql/queries/CategoryQuery.ts';
|
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 { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
import { useMetadataServerSettings } from '@/modules/settings/services/ServerSettingsMetadata.ts';
|
||||||
import { getCategoryMetadata } from '@/modules/category/services/CategoryMetadata.ts';
|
|
||||||
import { GET_LIBRARY_MANGA_COUNT } from '@/lib/graphql/queries/MangaQuery.ts';
|
import { GET_LIBRARY_MANGA_COUNT } from '@/lib/graphql/queries/MangaQuery.ts';
|
||||||
import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts';
|
import { useAppTitle } from '@/modules/navigation-bar/hooks/useAppTitle.ts';
|
||||||
import { useAppAction } from '@/modules/navigation-bar/hooks/useAppAction.ts';
|
import { useAppAction } from '@/modules/navigation-bar/hooks/useAppAction.ts';
|
||||||
@@ -87,13 +85,8 @@ export function Library() {
|
|||||||
|
|
||||||
const [tabSearchParam, setTabSearchParam] = useQueryParam('tab', NumberParam);
|
const [tabSearchParam, setTabSearchParam] = useQueryParam('tab', NumberParam);
|
||||||
|
|
||||||
const { setOptions } = useLibraryOptionsContext();
|
|
||||||
const activeTab: (typeof tabs)[number] | undefined = tabs.find((tab) => tab.id === tabSearchParam) ?? tabs[0];
|
const activeTab: (typeof tabs)[number] | undefined = tabs.find((tab) => tab.id === tabSearchParam) ?? tabs[0];
|
||||||
|
|
||||||
useLayoutEffect(() => {
|
|
||||||
setOptions(getCategoryMetadata(activeTab ?? { id: -1 }));
|
|
||||||
}, [activeTab]);
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
data: categoryMangaResponse,
|
data: categoryMangaResponse,
|
||||||
error: mangaError,
|
error: mangaError,
|
||||||
|
|||||||
Reference in New Issue
Block a user