/* eslint-disable react/prop-types */ /* eslint-disable @typescript-eslint/no-empty-function */ import { useCallback, useState, createContext, useContext } from 'react' import type { AssetsApi } from '#types/AssetsApi' interface AppState { assetsApi: AssetsApi sideBarOpen: boolean sideBarSlim: boolean } type UseAppManagerResult = ReturnType const initialAppState: AppState = { assetsApi: {} as AssetsApi, sideBarOpen: false, sideBarSlim: false, } const AppContext = createContext({ state: initialAppState, setAppState: () => {}, }) function useAppManager(): { state: AppState setAppState: (newState: Partial) => void } { const [state, setState] = useState(initialAppState) const setAppState = useCallback((newState: Partial) => { setState((prevState) => ({ ...prevState, ...newState, })) }, []) return { state, setAppState } } export const AppStateProvider: React.FunctionComponent<{ children?: React.ReactNode }> = ({ children }) => {children} export const useAppState = (): AppState => { const { state } = useContext(AppContext) return state } export const useSetAppState = (): UseAppManagerResult['setAppState'] => { const { setAppState } = useContext(AppContext) return setAppState }