diff --git a/components/transactions/edit.tsx b/components/transactions/edit.tsx index ba67442..1502fd8 100644 --- a/components/transactions/edit.tsx +++ b/components/transactions/edit.tsx @@ -12,7 +12,7 @@ import { Category, Currency, Field, Project, Transaction } from "@prisma/client" import { format } from "date-fns" import { Loader2 } from "lucide-react" import { useRouter } from "next/navigation" -import { startTransition, useActionState, useEffect, useState } from "react" +import { startTransition, useActionState, useEffect, useMemo, useState } from "react" export default function TransactionEditForm({ transaction, @@ -56,6 +56,16 @@ export default function TransactionEditForm({ ), }) + const fieldMap = useMemo(() => { + return fields.reduce( + (acc, field) => { + acc[field.code] = field + return acc + }, + {} as Record + ) + }, [fields]) + const handleDelete = async () => { if (confirm("Are you sure? This will delete the transaction with all the files permanently")) { startTransition(async () => { @@ -75,15 +85,15 @@ export default function TransactionEditForm({
- + - + - +
{ @@ -101,7 +111,7 @@ export default function TransactionEditForm({ currencies={currencies} /> - +
{formData.currencyCode !== settings.default_currency || formData.convertedTotal !== 0 ? ( @@ -127,21 +137,26 @@ export default function TransactionEditForm({ )}
- +
- +
- + {extraFields.map((field) => ( field.renderer.sortable && handleSort(field.code)} > - {field.renderer.name} + {field.name || field.renderer.name} {field.renderer.sortable && getSortIcon(field.code)} ))} diff --git a/components/unsorted/analyze-form.tsx b/components/unsorted/analyze-form.tsx index c08606b..36752fd 100644 --- a/components/unsorted/analyze-form.tsx +++ b/components/unsorted/analyze-form.tsx @@ -37,17 +37,16 @@ export default function AnalyzeForm({ const [isSaving, setIsSaving] = useState(false) const [saveError, setSaveError] = useState("") - const fieldsMap = useMemo( - () => - fields.reduce( - (acc, field) => { - acc[field.code] = field - return acc - }, - {} as Record - ), - [fields] - ) + const fieldMap = useMemo(() => { + return fields.reduce( + (acc, field) => { + acc[field.code] = field + return acc + }, + {} as Record + ) + }, [fields]) + const extraFields = useMemo(() => fields.filter((field) => field.isExtra), [fields]) const initialFormState = useMemo( () => ({ @@ -141,7 +140,7 @@ export default function AnalyzeForm({ setFormData((prev) => ({ ...prev, name: e.target.value }))} @@ -149,24 +148,24 @@ export default function AnalyzeForm({ /> setFormData((prev) => ({ ...prev, merchant: e.target.value }))} - hideIfEmpty={!fieldsMap["merchant"]?.isVisibleInAnalysis} + hideIfEmpty={!fieldMap.merchant.isVisibleInAnalysis} /> setFormData((prev) => ({ ...prev, description: e.target.value }))} - hideIfEmpty={!fieldsMap["description"]?.isVisibleInAnalysis} + hideIfEmpty={!fieldMap.description.isVisibleInAnalysis} />
setFormData((prev) => ({ ...prev, currencyCode: value }))} - hideIfEmpty={!fieldsMap["currencyCode"]?.isVisibleInAnalysis} + hideIfEmpty={!fieldMap.currencyCode.isVisibleInAnalysis} /> setFormData((prev) => ({ ...prev, type: value }))} - hideIfEmpty={!fieldsMap["type"]?.isVisibleInAnalysis} + hideIfEmpty={!fieldMap.type.isVisibleInAnalysis} />
@@ -212,45 +211,45 @@ export default function AnalyzeForm({
setFormData((prev) => ({ ...prev, issuedAt: e.target.value }))} - hideIfEmpty={!fieldsMap["issuedAt"]?.isVisibleInAnalysis} + hideIfEmpty={!fieldMap.issuedAt.isVisibleInAnalysis} />
setFormData((prev) => ({ ...prev, categoryCode: value }))} placeholder="Select Category" - hideIfEmpty={!fieldsMap["categoryCode"]?.isVisibleInAnalysis} + hideIfEmpty={!fieldMap.categoryCode.isVisibleInAnalysis} /> {projects.length > 0 && ( setFormData((prev) => ({ ...prev, projectCode: value }))} placeholder="Select Project" - hideIfEmpty={!fieldsMap["projectCode"]?.isVisibleInAnalysis} + hideIfEmpty={!fieldMap.projectCode.isVisibleInAnalysis} /> )}
setFormData((prev) => ({ ...prev, note: e.target.value }))} - hideIfEmpty={!fieldsMap["note"]?.isVisibleInAnalysis} + hideIfEmpty={!fieldMap.note.isVisibleInAnalysis} /> {extraFields.map((field) => ( @@ -267,11 +266,11 @@ export default function AnalyzeForm({
setFormData((prev) => ({ ...prev, text: e.target.value }))} - hideIfEmpty={!fieldsMap["text"]?.isVisibleInAnalysis} + hideIfEmpty={!fieldMap.text.isVisibleInAnalysis} />