­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ import React, { useCallback, useEffect, useState } from 'react' import { createContextHook } from '../utils/hooks' import { isNetworkAdmin } from '../utils/screen' import { useRestAPI } from './useRestAPI' import type { PropsWithChildren } from 'react' import type { Snippet } from '../types/Snippet' export interface SnippetsListContext { snippetsList: readonly Snippet[] | undefined refreshSnippetsList: () => Promise } const [SnippetsListContext, useSnippetsList] = createContextHook('SnippetsList') export const WithSnippetsListContext: React.FC = ({ children }) => { const { snippetsAPI: { fetchAll } } = useRestAPI() const [snippetsList, setSnippetsList] = useState() const refreshSnippetsList = useCallback(async (): Promise => { try { console.info('Fetching snippets list') const response = await fetchAll(isNetworkAdmin()) setSnippetsList(response) } catch (error: unknown) { console.error('Error fetching snippets list', error) } }, [fetchAll]) useEffect(() => { refreshSnippetsList() .catch(() => undefined) }, [refreshSnippetsList]) const value: SnippetsListContext = { snippetsList, refreshSnippetsList } return {children} } export { useSnippetsList }