feat: frontend core — auth, layout, transactions, categories
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||
import {
|
||||
createCategory,
|
||||
deleteCategory,
|
||||
getCategories,
|
||||
updateCategory,
|
||||
} from "../api/client";
|
||||
import type {
|
||||
CreateCategoryPayload,
|
||||
UpdateCategoryPayload,
|
||||
} from "../api/types";
|
||||
|
||||
export function useCategories() {
|
||||
return useQuery({
|
||||
queryKey: ["categories"],
|
||||
queryFn: () => getCategories(),
|
||||
});
|
||||
}
|
||||
|
||||
export function useCreateCategory() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (payload: CreateCategoryPayload) => createCategory(payload),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ["categories"] }),
|
||||
});
|
||||
}
|
||||
|
||||
export function useUpdateCategory() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: ({ id, payload }: { id: string; payload: UpdateCategoryPayload }) =>
|
||||
updateCategory(id, payload),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ["categories"] }),
|
||||
});
|
||||
}
|
||||
|
||||
export function useDeleteCategory() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (id: string) => deleteCategory(id),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ["categories"] }),
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||
import {
|
||||
createTransaction,
|
||||
deleteTransaction,
|
||||
getTransactions,
|
||||
updateTransaction,
|
||||
} from "../api/client";
|
||||
import type {
|
||||
CreateTransactionPayload,
|
||||
TransactionFilters,
|
||||
UpdateTransactionPayload,
|
||||
} from "../api/types";
|
||||
|
||||
export function useTransactions(filters: TransactionFilters) {
|
||||
return useQuery({
|
||||
queryKey: ["transactions", filters],
|
||||
queryFn: () => getTransactions(filters),
|
||||
});
|
||||
}
|
||||
|
||||
export function useCreateTransaction() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (payload: CreateTransactionPayload) =>
|
||||
createTransaction(payload),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ["transactions"] }),
|
||||
});
|
||||
}
|
||||
|
||||
export function useUpdateTransaction() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: ({
|
||||
id,
|
||||
payload,
|
||||
}: {
|
||||
id: string;
|
||||
payload: UpdateTransactionPayload;
|
||||
}) => updateTransaction(id, payload),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ["transactions"] }),
|
||||
});
|
||||
}
|
||||
|
||||
export function useDeleteTransaction() {
|
||||
const qc = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (id: string) => deleteTransaction(id),
|
||||
onSuccess: () => qc.invalidateQueries({ queryKey: ["transactions"] }),
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user