feat: add account and category filter functionality to TransactionsPage; implement hooks for filtering transactions based on selected accounts and categories

This commit is contained in:
Julien Froidefond
2025-12-21 08:29:10 +01:00
parent a01345c1fb
commit 8b62cd8385
3 changed files with 238 additions and 5 deletions

View File

@@ -27,6 +27,8 @@ import { useTransactionsPage } from "@/hooks/use-transactions-page";
import { useTransactionMutations } from "@/hooks/use-transaction-mutations";
import { useTransactionRules } from "@/hooks/use-transaction-rules";
import { useTransactionsChartData } from "@/hooks/use-transactions-chart-data";
import { useTransactionsForAccountFilter } from "@/hooks/use-transactions-for-account-filter";
import { useTransactionsForCategoryFilter } from "@/hooks/use-transactions-for-category-filter";
import { useLocalStorage } from "@/hooks/use-local-storage";
export default function TransactionsPage() {
@@ -113,6 +115,28 @@ export default function TransactionsPage() {
searchQuery,
});
// Transactions for account filter (filtered by categories, period, search, reconciled - NOT by accounts)
const { transactions: transactionsForAccountFilter } =
useTransactionsForAccountFilter({
selectedCategories,
period,
customStartDate,
customEndDate,
showReconciled,
searchQuery,
});
// Transactions for category filter (filtered by accounts, period, search, reconciled - NOT by categories)
const { transactions: transactionsForCategoryFilter } =
useTransactionsForCategoryFilter({
selectedAccounts,
period,
customStartDate,
customEndDate,
showReconciled,
searchQuery,
});
const invalidateAll = useCallback(() => {
invalidateTransactions();
queryClient.invalidateQueries({ queryKey: ["banking-metadata"] });
@@ -157,11 +181,6 @@ export default function TransactionsPage() {
true
);
// For filter comboboxes, we'll use empty arrays for now
// They can be enhanced later with separate queries if needed
const transactionsForAccountFilter: never[] = [];
const transactionsForCategoryFilter: never[] = [];
// Early return for loading state - prevents sidebar flash
if (isLoadingMetadata || !metadata) {
return (