import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { createManualEntry, fetchJournalEntries, fetchJournalEntry, reverseJournalEntry } from '../api/journalEntries.api'; import type { BranchSelection } from '../store/branchStore'; export function useJournalEntries(branchScope: BranchSelection) { return useQuery({ queryKey: ['journalEntries', branchScope], queryFn: () => fetchJournalEntries(branchScope) }); } export function useJournalEntry(id: number | undefined) { return useQuery({ queryKey: ['journalEntry', id], queryFn: () => fetchJournalEntry(id as number), enabled: id !== undefined, }); } export function useCreateManualEntry() { const queryClient = useQueryClient(); return useMutation({ mutationFn: createManualEntry, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['journalEntries'] }); queryClient.invalidateQueries({ queryKey: ['glAccounts'] }); }, }); } export function useReverseJournalEntry() { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ id, reason }: { id: number; reason?: string }) => reverseJournalEntry(id, reason), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['journalEntries'] }); queryClient.invalidateQueries({ queryKey: ['journalEntry'] }); }, }); }