add NavBarContextProvider (#128)

This commit is contained in:
abhijeetChawla
2022-03-03 15:09:18 +05:30
committed by GitHub
parent 7d890ea093
commit 052c9c3ba6
2 changed files with 40 additions and 19 deletions

View File

@@ -5,7 +5,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * 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/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
import React, { useState } from 'react'; import React from 'react';
import { import {
BrowserRouter as Router, Switch, BrowserRouter as Router, Switch,
Route, Route,
@@ -18,7 +18,6 @@ import {
createTheme, ThemeProvider, Theme, StyledEngineProvider, createTheme, ThemeProvider, Theme, StyledEngineProvider,
} from '@mui/material/styles'; } from '@mui/material/styles';
import DefaultNavBar from 'components/navbar/DefaultNavBar'; import DefaultNavBar from 'components/navbar/DefaultNavBar';
import NavbarContext from 'components/context/NavbarContext';
import DarkTheme from 'components/context/DarkTheme'; import DarkTheme from 'components/context/DarkTheme';
import useLocalStorage from 'util/useLocalStorage'; import useLocalStorage from 'util/useLocalStorage';
import Settings from 'screens/Settings'; import Settings from 'screens/Settings';
@@ -36,6 +35,7 @@ import DownloadQueue from 'screens/DownloadQueue';
import Browse from 'screens/Browse'; import Browse from 'screens/Browse';
import Sources from 'screens/Sources'; import Sources from 'screens/Sources';
import Extensions from 'screens/Extensions'; import Extensions from 'screens/Extensions';
import NavBarContextProvider from 'components/navbar/NavBarContextProvider';
declare module '@mui/styles/defaultTheme' { declare module '@mui/styles/defaultTheme' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface // eslint-disable-next-line @typescript-eslint/no-empty-interface
@@ -44,23 +44,8 @@ declare module '@mui/styles/defaultTheme' {
} }
export default function App() { export default function App() {
const [title, setTitle] = useState<string>('Tachidesk');
const [action, setAction] = useState<any>(<div />);
const [override, setOverride] = useState<INavbarOverride>({
status: false,
value: <div />,
});
const [darkTheme, setDarkTheme] = useLocalStorage<boolean>('darkTheme', true); const [darkTheme, setDarkTheme] = useLocalStorage<boolean>('darkTheme', true);
const navBarContext = {
title,
setTitle,
action,
setAction,
override,
setOverride,
};
const darkThemeContext = { const darkThemeContext = {
darkTheme, darkTheme,
setDarkTheme, setDarkTheme,
@@ -96,7 +81,7 @@ export default function App() {
<StyledEngineProvider injectFirst> <StyledEngineProvider injectFirst>
<ThemeProvider theme={theme}> <ThemeProvider theme={theme}>
<QueryParamProvider ReactRouterRoute={Route}> <QueryParamProvider ReactRouterRoute={Route}>
<NavbarContext.Provider value={navBarContext}> <NavBarContextProvider>
<CssBaseline /> <CssBaseline />
<DefaultNavBar /> <DefaultNavBar />
<Container <Container
@@ -188,7 +173,7 @@ export default function App() {
} }
/> />
</Switch> </Switch>
</NavbarContext.Provider> </NavBarContextProvider>
</QueryParamProvider> </QueryParamProvider>
</ThemeProvider> </ThemeProvider>
</StyledEngineProvider> </StyledEngineProvider>

View File

@@ -0,0 +1,36 @@
/*
* 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, { useState } from 'react';
import NavBarContext from 'components/context/NavbarContext';
interface IProps{
children: React.ReactNode
}
export default function NavBarProvider({ children }:IProps) {
const [title, setTitle] = useState<string>('Tachidesk');
const [action, setAction] = useState<any>(<div />);
const [override, setOverride] = useState<INavbarOverride>({
status: false,
value: <div />,
});
const value = {
title,
setTitle,
action,
setAction,
override,
setOverride,
};
return (
<NavBarContext.Provider value={value}>
{children}
</NavBarContext.Provider>
);
}