Remove "LibraryOptionsContext"

These options are saved in the category metadata which made the context unnecessary
This commit is contained in:
schroda
2025-05-03 13:59:21 +02:00
parent 04768d5210
commit c82110b29d
5 changed files with 22 additions and 80 deletions

View File

@@ -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>

View File

@@ -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 ||

View File

@@ -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);
}

View File

@@ -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>;
};

View File

@@ -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,