/home/vianto5/hidalgoresidences.mx/wp-content/plugins/code-snippets/js/hooks
Edit: /home/vianto5/hidalgoresidences.mx/wp-content/plugins/code-snippets/js/hooks/useSnippetsList.tsx (1467B)
import React, { useCallback, useEffect, useState } from 'react'
import { createContextHook } from '../utils/bootstrap'
import { isNetworkAdmin } from '../utils/screen'
import { parseSnippetObject } from '../utils/snippets/objects'
import { useSnippetsAPI } from './useSnippetsAPI'
import type { PropsWithChildren } from 'react'
import type { Snippet } from '../types/Snippet'
export interface SnippetsListContext {
snippetsList: readonly Snippet[] | undefined
refreshSnippetsList: () => Promise
}
const [Context, useSnippetsList] = createContextHook('useSnippetsList')
export const WithSnippetsListContext: React.FC = ({ children }) => {
const { fetchAll } = useSnippetsAPI()
const [snippetsList, setSnippetsList] = useState(
() => window.CODE_SNIPPETS_MANAGE?.snippetsList?.map(parseSnippetObject)
)
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 }