import React, { createContext, useContext, useState, useCallback } from 'react'; import { ConfirmModal } from '../components/ConfirmModal'; interface ConfirmOptions { title?: string; message?: string; } const ConfirmContext = createContext<((options: ConfirmOptions) => Promise) | undefined>(undefined); export const ConfirmProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { const [state, setState] = useState<{ isOpen: boolean; title?: string; message?: string; resolve?: (value: boolean) => void; }>({ isOpen: false }); const confirm = useCallback((options: ConfirmOptions) => { return new Promise((resolve) => { setState({ isOpen: true, title: options.title, message: options.message, resolve, }); }); }, []); const handleConfirm = () => { const resolve = state.resolve; setState({ isOpen: false, resolve: undefined }); resolve?.(true); }; const handleCancel = () => { const resolve = state.resolve; setState({ isOpen: false, resolve: undefined }); resolve?.(false); }; return ( {children} ); }; export const useConfirm = () => { const confirm = useContext(ConfirmContext); if (!confirm) throw new Error('useConfirm must be used within a ConfirmProvider'); return confirm; };