Spaces:
Sleeping
Sleeping
| import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; | |
| import { api } from '../api'; | |
| import type { Loan } from '../types'; | |
| export const useRates = () => useQuery({ | |
| queryKey: ['rates'], | |
| queryFn: api.getRates, | |
| }); | |
| export const useWallets = () => useQuery({ | |
| queryKey: ['wallets'], | |
| queryFn: api.getWallets, | |
| }); | |
| export const useTransactions = () => useQuery({ | |
| queryKey: ['transactions'], | |
| queryFn: api.getTransactions, | |
| }); | |
| export const useCreateTransaction = () => { | |
| const queryClient = useQueryClient(); | |
| return useMutation({ | |
| mutationFn: api.createTransaction, | |
| onSuccess: () => { | |
| queryClient.invalidateQueries({ queryKey: ['transactions'] }); | |
| queryClient.invalidateQueries({ queryKey: ['dashboard-analytics'] }); | |
| queryClient.invalidateQueries({ queryKey: ['wallets'] }); | |
| }, | |
| }); | |
| }; | |
| export const useExchanges = () => useQuery({ | |
| queryKey: ['exchanges'], | |
| queryFn: api.getExchanges, | |
| }); | |
| export const useCreateExchange = () => { | |
| const queryClient = useQueryClient(); | |
| return useMutation({ | |
| mutationFn: api.createExchange, | |
| onSuccess: () => { | |
| queryClient.invalidateQueries({ queryKey: ['exchanges'] }); | |
| queryClient.invalidateQueries({ queryKey: ['transactions'] }); | |
| queryClient.invalidateQueries({ queryKey: ['dashboard-analytics'] }); | |
| queryClient.invalidateQueries({ queryKey: ['wallets'] }); | |
| }, | |
| }); | |
| }; | |
| export const useLoans = () => useQuery({ | |
| queryKey: ['loans'], | |
| queryFn: api.getLoans, | |
| }); | |
| export const useCreateLoan = () => { | |
| const queryClient = useQueryClient(); | |
| return useMutation({ | |
| mutationFn: api.createLoan, | |
| onSuccess: () => { | |
| queryClient.invalidateQueries({ queryKey: ['loans'] }); | |
| queryClient.invalidateQueries({ queryKey: ['transactions'] }); | |
| queryClient.invalidateQueries({ queryKey: ['dashboard-analytics'] }); | |
| queryClient.invalidateQueries({ queryKey: ['wallets'] }); | |
| }, | |
| }); | |
| }; | |
| export const useUpdateLoan = () => { | |
| const queryClient = useQueryClient(); | |
| return useMutation({ | |
| mutationFn: ({ id, data }: { id: number, data: Omit<Loan, 'id'> }) => api.updateLoan(id, data), | |
| onSuccess: () => { | |
| queryClient.invalidateQueries({ queryKey: ['loans'] }); | |
| queryClient.invalidateQueries({ queryKey: ['transactions'] }); | |
| queryClient.invalidateQueries({ queryKey: ['dashboard-analytics'] }); | |
| queryClient.invalidateQueries({ queryKey: ['wallets'] }); | |
| }, | |
| }); | |
| }; | |
| export const useDeleteLoan = () => { | |
| const queryClient = useQueryClient(); | |
| return useMutation({ | |
| mutationFn: (id: number) => api.deleteLoan(id), | |
| onSuccess: () => { | |
| queryClient.invalidateQueries({ queryKey: ['loans'] }); | |
| queryClient.invalidateQueries({ queryKey: ['transactions'] }); | |
| queryClient.invalidateQueries({ queryKey: ['dashboard-analytics'] }); | |
| queryClient.invalidateQueries({ queryKey: ['wallets'] }); | |
| }, | |
| }); | |
| }; | |
| export const usePayLoan = () => { | |
| const queryClient = useQueryClient(); | |
| return useMutation({ | |
| mutationFn: ({ id, amount }: { id: number, amount: number }) => api.payLoan(id, amount), | |
| onSuccess: () => { | |
| queryClient.invalidateQueries({ queryKey: ['loans'] }); | |
| queryClient.invalidateQueries({ queryKey: ['transactions'] }); | |
| queryClient.invalidateQueries({ queryKey: ['dashboard-analytics'] }); | |
| queryClient.invalidateQueries({ queryKey: ['wallets'] }); | |
| }, | |
| }); | |
| }; | |
| export const useDashboardAnalytics = () => useQuery({ | |
| queryKey: ['dashboard-analytics'], | |
| queryFn: api.getDashboardAnalytics, | |
| }); | |