import { useState, useEffect } from 'react'; import { dataService } from '@/services/dataService'; import { IndJob } from '@/lib/types'; export function useJobs() { const [jobs, setJobs] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const loadJobs = async () => { try { setLoading(true); await dataService.loadJobs(); setError(null); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to load jobs'); } finally { setLoading(false); } }; loadJobs(); const unsubscribe = dataService.subscribe(() => { setJobs(dataService.getJobs()); }); return unsubscribe; }, []); return { jobs, loading, error, createJob: dataService.createJob.bind(dataService), updateJob: dataService.updateJob.bind(dataService), deleteJob: dataService.deleteJob.bind(dataService), createTransaction: dataService.createTransaction.bind(dataService), createMultipleTransactions: dataService.createMultipleTransactions.bind(dataService), updateTransaction: dataService.updateTransaction.bind(dataService), deleteTransaction: dataService.deleteTransaction.bind(dataService), createBillItem: dataService.createBillItem.bind(dataService), createMultipleBillItems: dataService.createMultipleBillItems.bind(dataService) }; } export function useJob(jobId: string | null) { const [job, setJob] = useState(null); useEffect(() => { if (!jobId) { setJob(null); return; } const updateJob = () => { setJob(dataService.getJob(jobId)); }; updateJob(); const unsubscribe = dataService.subscribe(updateJob); return unsubscribe; }, [jobId]); return job; }