'use client' import { createContext, useContext, useState, useCallback, useMemo, type ReactNode } from 'react' /** * @deprecated Use React Query's `useQueryClient.invalidateQueries()` instead. * This context is kept for backward compatibility during migration. * * Migration guide: * - Replace `const { triggerRefresh } = useNoteRefresh()` with `const { refreshNotes } = useRefresh()` * - Replace `triggerRefresh()` with `refreshNotes(notebookId)` or `refreshNotes(null)` * - Replace `triggerNotebooksRefresh()` with `refreshNotebooks()` * * @see {@link https://tanstack.com/query/latest/docs/react/reference/queryclient | React Query invalidateQueries} * @see lib/use-refresh.ts */ interface NoteRefreshContextType { refreshKey: number triggerRefresh: () => void notebooksRefreshKey: number triggerNotebooksRefresh: () => void } const NoteRefreshContext = createContext(undefined) export function NoteRefreshProvider({ children }: { children: 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} ) } /** * @deprecated Use `useRefresh()` from `@/lib/use-refresh` instead. * This hook is kept for backward compatibility during migration. */ export function useNoteRefresh() { const context = useContext(NoteRefreshContext) if (!context) { throw new Error('useNoteRefresh must be used within NoteRefreshProvider') } return context } /** * @deprecated Use `useRefresh()` from `@/lib/use-refresh` instead. * This hook is kept for backward compatibility during migration. */ export function useNoteRefreshOptional(): NoteRefreshContextType { const context = useContext(NoteRefreshContext) return context ?? { refreshKey: 0, triggerRefresh: () => {}, notebooksRefreshKey: 0, triggerNotebooksRefresh: () => {} } }