"use client"; import { RiCalculatorLine, RiFundsLine } from "@remixicon/react"; import { useRouter } from "next/navigation"; import { useEffect, useState, useTransition } from "react"; import { toast } from "sonner"; import { addAccountYieldAction } from "@/features/accounts/actions"; import { CalculatorDialogButton } from "@/shared/components/calculator/calculator-dialog"; import { Button } from "@/shared/components/ui/button"; import { CurrencyInput } from "@/shared/components/ui/currency-input"; import { DatePicker } from "@/shared/components/ui/date-picker"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/shared/components/ui/dialog"; import { Label } from "@/shared/components/ui/label"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/shared/components/ui/tooltip"; type AddYieldDialogProps = { accountId: string; defaultDate: string; }; export function AddYieldDialog({ accountId, defaultDate, }: AddYieldDialogProps) { const router = useRouter(); const [open, setOpen] = useState(false); const [isPending, startTransition] = useTransition(); const [amount, setAmount] = useState(""); const [date, setDate] = useState(defaultDate); useEffect(() => { if (open) { setAmount(""); setDate(defaultDate); } }, [open, defaultDate]); const handleSave = () => { const numericAmount = Number(amount); if (!Number.isFinite(numericAmount) || numericAmount <= 0) { toast.error("Informe um valor maior que zero."); return; } if (!date) { toast.error("Informe a data do rendimento."); return; } startTransition(async () => { const result = await addAccountYieldAction({ accountId, amount: numericAmount, date, }); if (result.success) { toast.success(result.message); setOpen(false); router.refresh(); return; } toast.error(result.error); }); }; return ( Adicionar rendimento Adicionar rendimento Registre um rendimento como receita paga nesta conta.
); }