Merge "Context" and "ContextProvider" components

This commit is contained in:
schroda
2025-08-16 02:14:49 +02:00
parent f548ba9502
commit f4c06d474d
65 changed files with 290 additions and 422 deletions

View File

@@ -6,10 +6,30 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import React, { useCallback, useMemo, useState } from 'react';
import { NavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx';
import React, { useContext, useCallback, useMemo, useState } from 'react';
import { INavbarOverride, NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts';
import { useLocalStorage } from '@/features/core/hooks/useStorage.tsx';
import { INavbarOverride } from '@/features/navigation-bar/NavigationBar.types.ts';
export const NavBarContext = React.createContext<NavbarContextType>({
title: 'Suwayomi',
setTitle: (): void => {},
appBarHeight: 0,
setAppBarHeight: (): void => {},
action: <div />,
setAction: (): void => {},
override: { status: false, value: <div /> },
setOverride: (): void => {},
isCollapsed: false,
setIsCollapsed: (): void => {},
navBarWidth: 0,
setNavBarWidth: (): void => {},
readerNavBarWidth: 0,
setReaderNavBarWidth: (): void => {},
bottomBarHeight: 0,
setBottomBarHeight: (): void => {},
});
export const useNavBarContext = () => useContext(NavBarContext);
interface IProps {
children: React.ReactNode;

View File

@@ -23,7 +23,7 @@ import { MediaQuery } from '@/features/core/utils/MediaQuery.tsx';
import { DesktopSideBar } from '@/features/navigation-bar/components/DesktopSideBar.tsx';
import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx';
import { MobileBottomBar } from '@/features/navigation-bar/components/MobileBottomBar.tsx';
import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx';
import { useNavBarContext } from '@/features/navigation-bar/NavbarContext.tsx';
import { useMetadataServerSettings } from '@/features/settings/services/ServerSettingsMetadata.ts';
import { NAVIGATION_BAR_ITEMS } from '@/features/navigation-bar/NavigationBar.constants.ts';
import { NavigationBarUtil } from '@/features/navigation-bar/NavigationBar.util.ts';

View File

@@ -25,7 +25,7 @@ import Typography from '@mui/material/Typography';
import { CustomTooltip } from '@/features/core/components/CustomTooltip.tsx';
import { ListItemLink } from '@/features/core/components/lists/ListItemLink.tsx';
import { useGetOptionForDirection } from '@/features/theme/services/ThemeCreator.ts';
import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx';
import { useNavBarContext } from '@/features/navigation-bar/NavbarContext.tsx';
import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx';
import { NavbarItem } from '@/features/navigation-bar/NavigationBar.types.ts';
import { TypographyMaxLines } from '@/features/core/components/texts/TypographyMaxLines.tsx';

View File

@@ -15,7 +15,7 @@ import { useLocation, useNavigate } from 'react-router-dom';
import { useTheme } from '@mui/material/styles';
import Badge from '@mui/material/Badge';
import { useResizeObserver } from '@/features/core/hooks/useResizeObserver.tsx';
import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx';
import { useNavBarContext } from '@/features/navigation-bar/NavbarContext.tsx';
import { NavbarItem } from '@/features/navigation-bar/NavigationBar.types.ts';
import { StaticAppRoute } from '@/features/core/AppRoute.constants.ts';

View File

@@ -1,32 +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 { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts';
export const NavBarContext = React.createContext<NavbarContextType>({
title: 'Suwayomi',
setTitle: (): void => {},
appBarHeight: 0,
setAppBarHeight: (): void => {},
action: <div />,
setAction: (): void => {},
override: { status: false, value: <div /> },
setOverride: (): void => {},
isCollapsed: false,
setIsCollapsed: (): void => {},
navBarWidth: 0,
setNavBarWidth: (): void => {},
readerNavBarWidth: 0,
setReaderNavBarWidth: (): void => {},
bottomBarHeight: 0,
setBottomBarHeight: (): void => {},
});
export const useNavBarContext = () => useContext(NavBarContext);

View File

@@ -7,7 +7,7 @@
*/
import { useEffect } from 'react';
import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx';
import { useNavBarContext } from '@/features/navigation-bar/NavbarContext.tsx';
import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts';
export const useAppAction = (action: NavbarContextType['action'], dependencies: any[] = []) => {

View File

@@ -7,7 +7,7 @@
*/
import { useLayoutEffect } from 'react';
import { useNavBarContext } from '@/features/navigation-bar/contexts/NavbarContext.tsx';
import { useNavBarContext } from '@/features/navigation-bar/NavbarContext.tsx';
import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts';
export function useAppTitle(