Skip to content

Commit 2dbbe8b

Browse files
committed
feat: integrate financial summary hook with transaction components and add auto-category selection
1 parent 437681a commit 2dbbe8b

File tree

3 files changed

+30
-7
lines changed

3 files changed

+30
-7
lines changed

src/components/TransactionForm.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
2-
import { useState } from 'react';
1+
import React, { useState, useEffect } from 'react';
32
import { Button } from "@/components/ui/button";
43
import { Input } from "@/components/ui/input";
54
import { Label } from "@/components/ui/label";
@@ -28,6 +27,16 @@ export function TransactionForm({ onSubmit, onCancel, type }: TransactionFormPro
2827
const [description, setDescription] = useState('');
2928
const isMobile = useIsMobile();
3029

30+
// Reset category when transaction type changes
31+
useEffect(() => {
32+
// Set appropriate default category based on transaction type
33+
if (type === 'income') {
34+
setCategory('chicken_sale');
35+
} else {
36+
setCategory('food');
37+
}
38+
}, [type]);
39+
3140
const handleSubmit = (e: React.FormEvent) => {
3241
e.preventDefault();
3342

src/components/TransactionSummary.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,23 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
33
import { ArrowUp, ArrowDown, DollarSign, Package } from "lucide-react";
44
import { useIsMobile } from "@/hooks/use-mobile";
55
import { Transaction } from "@/pages/Index";
6-
import { useFinancialSummary } from "@/hooks/use-financial-summary";
76
import { Skeleton } from "@/components/ui/skeleton";
87
import { cn } from "@/lib/utils";
98
import { formatCurrency } from "@/utils/format";
109

1110
interface TransactionSummaryProps {
1211
transactions: Transaction[];
12+
summary: {
13+
total_income: number;
14+
total_expenses: number;
15+
total_profit: number;
16+
} | null;
17+
loading: boolean;
18+
error: string | null;
1319
}
1420

15-
export function TransactionSummary({ transactions }: TransactionSummaryProps) {
21+
export function TransactionSummary({ transactions, summary, loading, error }: TransactionSummaryProps) {
1622
const isMobile = useIsMobile();
17-
const { summary, loading, error, fetchFinancialSummary } = useFinancialSummary();
18-
1923

2024
// Use centralized formatting utility
2125
const formatCurrencyWithMobile = (amount: number) => {

src/pages/Index.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { TransactionForm } from "@/components/TransactionForm";
88
import { TransactionList } from "@/components/TransactionList";
99
import { TransactionSummary } from "@/components/TransactionSummary";
1010
import { useIsMobile } from "@/hooks/use-mobile";
11+
import { useFinancialSummary } from "@/hooks/use-financial-summary";
1112
import { useToast } from '@/components/ui/use-toast';
1213
import { Link, useNavigate } from 'react-router-dom';
1314
import {
@@ -41,7 +42,9 @@ export interface Transaction {
4142

4243

4344

45+
4446
const Index = () => {
47+
const { summary, loading: summaryLoading, error: summaryError, fetchFinancialSummary } = useFinancialSummary();
4548
const [transactions, setTransactions] = useState<Transaction[]>([]);
4649
const [showTransactionForm, setShowTransactionForm] = useState(false);
4750
const [activeTab, setActiveTab] = useState<'expenses' | 'income'>('expenses');
@@ -228,6 +231,7 @@ const Index = () => {
228231

229232
// Force refresh transactions after adding a new one
230233
loadTransactionsFromServer(categoryFilter, activeTab, true);
234+
fetchFinancialSummary(); // Refresh the financial summary
231235
setShowTransactionForm(false);
232236
toast({ title: 'Success', description: 'Transaction added successfully and list updated.' });
233237
} catch (error: any) {
@@ -302,7 +306,12 @@ const Index = () => {
302306
</div>
303307
</div>
304308
<div className="grid gap-6 grid-cols-1 md:grid-cols-3">
305-
<TransactionSummary transactions={transactions} />
309+
<TransactionSummary
310+
transactions={transactions}
311+
summary={summary}
312+
loading={summaryLoading}
313+
error={summaryError}
314+
/>
306315
</div>
307316
</section>
308317

@@ -391,6 +400,7 @@ const Index = () => {
391400
</CardHeader>
392401
<CardContent className="p-0">
393402
<div className="overflow-x-auto">
403+
{/* TransactionSummary removed to prevent duplication */}
394404
<TransactionList
395405
transactions={activeTab === 'expenses' ? expenses : income}
396406
type={activeTab}

0 commit comments

Comments
 (0)