Files
frontend/src/pages/cards/ui/CardsPage.vm.ts
T

42 lines
1.1 KiB
TypeScript

import { useState } from "react";
import { useSearchParams } from "react-router";
import {
bankPeriod,
useBankCards,
useBankCategories,
useBankSummary,
} from "@/entities/bank-card";
function useCardsPageVm() {
const [params, setParams] = useSearchParams();
const period = bankPeriod(params);
const [archive, setArchive] = useState(false);
const categories = useBankCategories();
const [managingCategories, setManagingCategories] = useState(false);
const [adding, setAdding] = useState(false);
const cards = useBankCards(archive);
const summary = useBankSummary(period);
return {
categories,
managingCategories,
setManagingCategories,
period,
archive,
setArchive,
adding,
setAdding,
cards,
summary,
setPeriod: (value: [string | null, string | null]) => {
if (value[0] && value[1]) setParams({ from: value[0], to: value[1] });
},
items: cards.data?.map((card) => ({
...card,
to: `/cards/${card.id}?${new URLSearchParams(period)}`,
})),
};
}
type CardsPageVm = ReturnType<typeof useCardsPageVm>;
export { type CardsPageVm, useCardsPageVm };