"use client" import { createTransactionAction } from "@/app/(app)/transactions/actions" import { FormError } from "@/components/forms/error" import { FormSelectCategory } from "@/components/forms/select-category" import { FormSelectCurrency } from "@/components/forms/select-currency" import { FormSelectProject } from "@/components/forms/select-project" import { FormSelectType } from "@/components/forms/select-type" import { FormInput, FormTextarea } from "@/components/forms/simple" import { Button } from "@/components/ui/button" import { Category, Currency, Project } from "@/prisma/client" import { format } from "date-fns" import { Import, Loader2 } from "lucide-react" import Link from "next/link" import { useRouter } from "next/navigation" import { useActionState, useEffect, useState } from "react" export default function TransactionCreateForm({ categories, projects, currencies, settings, }: { categories: Category[] projects: Project[] currencies: Currency[] settings: Record }) { const router = useRouter() const [createState, createAction, isCreating] = useActionState(createTransactionAction, null) const [formData, setFormData] = useState({ name: "", merchant: "", description: "", total: 0.0, convertedTotal: 0.0, currencyCode: settings.default_currency, convertedCurrencyCode: settings.default_currency, type: settings.default_type, categoryCode: settings.default_category, projectCode: settings.default_project, issuedAt: format(new Date(), "yyyy-MM-dd"), note: "", }) useEffect(() => { if (createState?.success && createState.data) { router.push(`/transactions/${createState.data.id}`) } }, [createState, router]) return (
{ setFormData({ ...formData, currencyCode: value }) }} />
{formData.currencyCode !== settings.default_currency ? (
) : ( <> )}
{createState?.error && {createState.error}} ) }