import { useState, useEffect, useCallback } from 'react'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { Transaction } from '../types'; const STORAGE_KEY = '@finance_transactions'; export const useTransactions = () => { const [transactions, setTransactions] = useState([]); const [loading, setLoading] = useState(true); const loadTransactions = useCallback(async () => { try { setLoading(true); const stored = await AsyncStorage.getItem(STORAGE_KEY); if (stored) { setTransactions(JSON.parse(stored)); } } catch (error) { console.error('Error loading transactions:', error); } finally { setLoading(false); } }, []); useEffect(() => { loadTransactions(); }, [loadTransactions]); const addTransaction = useCallback((transaction: Transaction) => { setTransactions((prev) => { const updated = [transaction, ...prev]; AsyncStorage.setItem(STORAGE_KEY, JSON.stringify(updated)); return updated; }); }, []); const deleteTransaction = useCallback((id: string) => { setTransactions((prev) => { const updated = prev.filter((t) => t.id !== id); AsyncStorage.setItem(STORAGE_KEY, JSON.stringify(updated)); return updated; }); }, []); return { transactions, loading, addTransaction, deleteTransaction, refresh: loadTransactions, }; };