"use client" import { useState, useEffect, useCallback } from "react" import type { BankingData } from "./types" import { loadData } from "./store-db" export function useBankingData() { const [data, setData] = useState(null) const [isLoading, setIsLoading] = useState(true) const [error, setError] = useState(null) const fetchData = useCallback(async () => { try { setIsLoading(true) setError(null) const fetchedData = await loadData() setData(fetchedData) } catch (err) { setError(err instanceof Error ? err : new Error("Failed to load data")) console.error("Error loading banking data:", err) } finally { setIsLoading(false) } }, []) useEffect(() => { fetchData() }, [fetchData]) const refresh = useCallback(() => { fetchData() }, [fetchData]) const update = useCallback((newData: BankingData) => { // Optimistic update - the actual save happens in individual operations setData(newData) }, []) return { data, isLoading, error, refresh, update } } export function useLocalStorage(key: string, initialValue: T) { const [storedValue, setStoredValue] = useState(initialValue) useEffect(() => { try { const item = window.localStorage.getItem(key) if (item) { setStoredValue(JSON.parse(item)) } } catch (error) { console.error(error) } }, [key]) const setValue = (value: T | ((val: T) => T)) => { try { const valueToStore = value instanceof Function ? value(storedValue) : value setStoredValue(valueToStore) window.localStorage.setItem(key, JSON.stringify(valueToStore)) } catch (error) { console.error(error) } } return [storedValue, setValue] as const }