'use client' import { createContext, useContext, useState, useCallback, useMemo } from 'react' interface NoteRefreshContextType { refreshKey: number triggerRefresh: () => void notebooksRefreshKey: number triggerNotebooksRefresh: () => void } const NoteRefreshContext = createContext(undefined) export function NoteRefreshProvider({ children }: { children: React.ReactNode }) { const [refreshKey, setRefreshKey] = useState(0) const [notebooksRefreshKey, setNotebooksRefreshKey] = useState(0) const triggerRefresh = useCallback(() => { setRefreshKey(prev => prev + 1) }, []) const triggerNotebooksRefresh = useCallback(() => { setNotebooksRefreshKey(prev => prev + 1) }, []) const value = useMemo(() => ({ refreshKey, triggerRefresh, notebooksRefreshKey, triggerNotebooksRefresh }), [refreshKey, triggerRefresh, notebooksRefreshKey, triggerNotebooksRefresh]) return ( {children} ) } export function useNoteRefresh() { const context = useContext(NoteRefreshContext) if (!context) { throw new Error('useNoteRefresh must be used within NoteRefreshProvider') } return context } export function useNoteRefreshOptional(): NoteRefreshContextType { const context = useContext(NoteRefreshContext) return context ?? { refreshKey: 0, triggerRefresh: () => {}, notebooksRefreshKey: 0, triggerNotebooksRefresh: () => {} } }