519c411db0
* feat: sync and update with all changes from fork * refactor: extract clipboard copy logic into custom hook * fix: correct spelling of DEFAULT_REFRESH_FREQUENCY_MS in Stamps and WalletBalance providers * refactor(ui-tests): replace fixed sleeps with condition-based waits * fix: handle null values for size and granteeCount in infoGroups * fix(lint): add newline at end of file in useClipboardCopy hook * fix(ui-tests): page.goto URL * refactor: update import paths for useClipboardCopy --------- Co-authored-by: Ferenc Sárai <sarai.ferenc@gmail.com>
41 lines
975 B
TypeScript
41 lines
975 B
TypeScript
import { createContext, ReactNode, useContext, useState } from 'react'
|
|
|
|
import { ViewType } from '../../modules/filemanager/constants/transfers'
|
|
|
|
interface ViewContextProps {
|
|
view: ViewType
|
|
setView: (view: ViewType) => void
|
|
actualItemView?: string
|
|
setActualItemView?: (view: string) => void
|
|
}
|
|
|
|
const ViewContext = createContext<ViewContextProps | undefined>(undefined)
|
|
|
|
export function ViewProvider({ children }: { children: ReactNode }) {
|
|
const [view, setView] = useState<ViewType>(ViewType.File)
|
|
const [actualItemView, setActualItemView] = useState<string | undefined>(undefined)
|
|
|
|
return (
|
|
<ViewContext.Provider
|
|
value={{
|
|
view,
|
|
setView,
|
|
actualItemView,
|
|
setActualItemView,
|
|
}}
|
|
>
|
|
{children}
|
|
</ViewContext.Provider>
|
|
)
|
|
}
|
|
|
|
export function useView() {
|
|
const context = useContext(ViewContext)
|
|
|
|
if (!context) {
|
|
throw new Error('useView must be used within a ViewProvider')
|
|
}
|
|
|
|
return context
|
|
}
|