import { createContext, useContext } from 'react' export type Ressource = { id: number name: string path: string extension?: string isVisible: boolean isOpen?: boolean isDir: boolean childrenIds?: number[] depth: number } export type Ressources = Ressource[] export type ConfigT = { indent: number defaultDepth: number defaultRes: Ressource } export type StateT = { config: ConfigT ressources: Ressources } export const fetchRessources = async (): Promise<Ressources> => fetch('http://127.0.0.1:2000/api/ressources') .then(response => response.json()) .then(json => json.ressources) export const initState = async (): Promise<StateT> => { const ressources = await fetchRessources() return { config: { indent: 12, defaultDepth: 1, defaultRes: ressources.at(0), }, ressources, } } export type DataCtxT = { data: StateT } export const DataCtx = createContext<Partial<DataCtxT>>({}) export const useDataCtx = () => useContext(DataCtx)