'use client'

import { createContext, useContext, useState, useCallback } from 'react'

interface NoteRefreshContextType {
  refreshKey: number
  triggerRefresh: () => void
}

const NoteRefreshContext = createContext<NoteRefreshContextType | undefined>(undefined)

export function NoteRefreshProvider({ children }: { children: React.ReactNode }) {
  const [refreshKey, setRefreshKey] = useState(0)

  const triggerRefresh = useCallback(() => {
    setRefreshKey(prev => prev + 1)
  }, [])

  return (
    <NoteRefreshContext.Provider value={{ refreshKey, triggerRefresh }}>
      {children}
    </NoteRefreshContext.Provider>
  )
}

export function useNoteRefresh() {
  const context = useContext(NoteRefreshContext)
  if (!context) {
    throw new Error('useNoteRefresh must be used within NoteRefreshProvider')
  }
  return context
}
