open-notebook / frontend /src /lib /hooks /use-create-dialogs.tsx
baveshraam's picture
FIX: SurrealDB 2.0 migration syntax and Frontend/CORS link
f871fed
'use client'
import { createContext, useContext, useState, useCallback, ReactNode } from 'react'
import { AddSourceDialog } from '@/components/sources/AddSourceDialog'
import { CreateNotebookDialog } from '@/components/notebooks/CreateNotebookDialog'
import { GeneratePodcastDialog } from '@/components/podcasts/GeneratePodcastDialog'
interface CreateDialogsContextType {
openSourceDialog: () => void
openNotebookDialog: () => void
openPodcastDialog: () => void
}
const CreateDialogsContext = createContext<CreateDialogsContextType | null>(null)
export function CreateDialogsProvider({ children }: { children: ReactNode }) {
const [sourceDialogOpen, setSourceDialogOpen] = useState(false)
const [notebookDialogOpen, setNotebookDialogOpen] = useState(false)
const [podcastDialogOpen, setPodcastDialogOpen] = useState(false)
const openSourceDialog = useCallback(() => setSourceDialogOpen(true), [])
const openNotebookDialog = useCallback(() => setNotebookDialogOpen(true), [])
const openPodcastDialog = useCallback(() => setPodcastDialogOpen(true), [])
return (
<CreateDialogsContext.Provider
value={{
openSourceDialog,
openNotebookDialog,
openPodcastDialog,
}}
>
{children}
<AddSourceDialog open={sourceDialogOpen} onOpenChange={setSourceDialogOpen} />
<CreateNotebookDialog open={notebookDialogOpen} onOpenChange={setNotebookDialogOpen} />
<GeneratePodcastDialog open={podcastDialogOpen} onOpenChange={setPodcastDialogOpen} />
</CreateDialogsContext.Provider>
)
}
export function useCreateDialogs() {
const context = useContext(CreateDialogsContext)
if (!context) {
throw new Error('useCreateDialogs must be used within a CreateDialogsProvider')
}
return context
}