"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, } from "@/components/ui/dialog"; import { Label } from "@/components/ui/label"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { AlertTriangle, Info } from "lucide-react"; import type { Account } from "@/lib/types"; import { getAccountBalance } from "@/lib/account-utils"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; interface AccountMergeSelectDialogProps { open: boolean; onOpenChange: (open: boolean) => void; accounts: Account[]; selectedAccountIds: string[]; onMerge: (sourceAccountId: string, targetAccountId: string) => Promise; formatCurrency: (amount: number) => string; } export function AccountMergeSelectDialog({ open, onOpenChange, accounts, selectedAccountIds, onMerge, formatCurrency, }: AccountMergeSelectDialogProps) { const [targetAccountId, setTargetAccountId] = useState(""); const [isMerging, setIsMerging] = useState(false); const selectedAccounts = accounts.filter((a) => selectedAccountIds.includes(a.id), ); const sourceAccountId = selectedAccounts.length === 2 && targetAccountId ? selectedAccounts.find((a) => a.id !== targetAccountId)?.id || "" : ""; const sourceAccount = accounts.find((a) => a.id === sourceAccountId); const targetAccount = accounts.find((a) => a.id === targetAccountId); // Initialiser avec le premier compte si pas encore sélectionné if (open && selectedAccounts.length === 2 && !targetAccountId) { setTargetAccountId(selectedAccounts[0].id); } const handleMerge = async () => { if ( !sourceAccountId || !targetAccountId || sourceAccountId === targetAccountId ) { return; } setIsMerging(true); try { await onMerge(sourceAccountId, targetAccountId); setTargetAccountId(""); onOpenChange(false); } catch (error) { console.error("Error merging accounts:", error); alert("Erreur lors de la fusion des comptes"); } finally { setIsMerging(false); } }; const canMerge = selectedAccounts.length === 2 && sourceAccountId && targetAccountId && sourceAccountId !== targetAccountId && sourceAccount && targetAccount; if (selectedAccounts.length !== 2) { return null; } return ( Fusionner des comptes Choisissez quel compte conserver. Toutes les transactions de l'autre compte seront déplacées vers celui-ci.
Le compte sélectionné sera conservé et utilisé pour les prochains imports. Choisissez celui qui a le bon bankId.
{selectedAccounts.map((account) => (
))}
{canMerge && ( Attention : Toutes les transactions du compte " {sourceAccount.name}" seront déplacées vers " {targetAccount.name}". Le compte "{sourceAccount.name}" sera supprimé après la fusion. Cette action est irréversible. )}
); }