Files
zellyy-finance/src/components/RecentTransactionsSection.tsx
hansoo 4d9effce41 fix: ESLint 오류 수정 - 사용하지 않는 변수들에 underscore prefix 추가
- AddTransactionButton.tsx: useEffect import 제거
- BudgetProgressCard.tsx: localBudgetData를 _localBudgetData로 변경
- Header.tsx: isMobile을 _isMobile로 변경
- RecentTransactionsSection.tsx: isDeleting을 _isDeleting로 변경
- TransactionCard.tsx: cn import 제거
- ExpenseForm.tsx: useState import 제거
- cacheStrategies.ts: QueryClient, Transaction import 제거
- Analytics.tsx: Separator import 제거, 미사용 변수들에 underscore prefix 추가
- Index.tsx: useMemo import 제거
- Login.tsx: setLoginError를 _setLoginError로 변경
- Register.tsx: useEffect dependency 수정 및 useCallback 추가
- Settings.tsx: toast, handleClick에 underscore prefix 추가
- authStore.ts: setError, setAppwriteInitialized에 underscore prefix 추가
- budgetStore.ts: ranges를 _ranges로 변경
- BudgetProgressCard.test.tsx: waitFor import 제거

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 20:49:36 +09:00

84 lines
2.6 KiB
TypeScript

import React from "react";
import { Transaction } from "@/contexts/budget/types";
import TransactionEditDialog from "./TransactionEditDialog";
import { ChevronRight } from "lucide-react";
import { useBudget } from "@/stores";
import { Link } from "react-router-dom";
import { useRecentTransactions } from "@/hooks/transactions/useRecentTransactions";
import { useRecentTransactionsDialog } from "@/hooks/transactions/useRecentTransactionsDialog";
import RecentTransactionItem from "./recent-transactions/RecentTransactionItem";
interface RecentTransactionsSectionProps {
transactions: Transaction[];
onUpdateTransaction?: (transaction: Transaction) => void;
}
const RecentTransactionsSection: React.FC<RecentTransactionsSectionProps> = ({
transactions,
onUpdateTransaction,
}) => {
const { updateTransaction, deleteTransaction } = useBudget();
// 트랜잭션 삭제 관련 로직은 커스텀 훅으로 분리
const { handleDeleteTransaction, isDeleting: _isDeleting } =
useRecentTransactions(deleteTransaction);
// 다이얼로그 관련 로직 분리
const {
selectedTransaction,
isDialogOpen,
handleTransactionClick,
setIsDialogOpen,
} = useRecentTransactionsDialog();
const handleUpdateTransaction = (updatedTransaction: Transaction) => {
if (onUpdateTransaction) {
onUpdateTransaction(updatedTransaction);
}
// 직접 컨텍스트를 통해 업데이트
updateTransaction(updatedTransaction);
};
return (
<div className="mt-4 mb-[50px]">
<div className="flex justify-between items-center mb-2">
<h2 className="text-lg font-semibold"> </h2>
<Link
to="/transactions"
className="text-sm text-neuro-income flex items-center"
>
<ChevronRight size={16} />
</Link>
</div>
<div className="neuro-card divide-y divide-gray-100 w-full">
{transactions.length > 0 ? (
transactions.map((transaction) => (
<RecentTransactionItem
key={transaction.id}
transaction={transaction}
onClick={() => handleTransactionClick(transaction)}
/>
))
) : (
<div className="py-3 text-center text-gray-500">
</div>
)}
</div>
{selectedTransaction && (
<TransactionEditDialog
transaction={selectedTransaction}
open={isDialogOpen}
onOpenChange={setIsDialogOpen}
onSave={handleUpdateTransaction}
onDelete={handleDeleteTransaction}
/>
)}
</div>
);
};
export default RecentTransactionsSection;