From 3da668a94a4067f1704ff9efe27142a12e3ff957 Mon Sep 17 00:00:00 2001 From: i701 Date: Sun, 27 Jul 2025 16:01:15 +0500 Subject: [PATCH] feat(admin-topup): add description field to topup form and validation for amount fix(verify-registration-otp): improve styling and structure of OTP verification form --- actions/user-actions.ts | 24 +++++++++++++------ components/admin/admin-topup-form.tsx | 23 ++++++++++++++++-- .../auth/verify-registration-otp-form.tsx | 14 +++++------ 3 files changed, 45 insertions(+), 16 deletions(-) diff --git a/actions/user-actions.ts b/actions/user-actions.ts index dafc5df..596c3b0 100644 --- a/actions/user-actions.ts +++ b/actions/user-actions.ts @@ -11,14 +11,14 @@ import { handleApiResponse } from "@/utils/tryCatch"; type VerifyUserResponse = | { - ok: boolean; - mismatch_fields: string[] | null; - error: string | null; - detail: string | null; - } + ok: boolean; + mismatch_fields: string[] | null; + error: string | null; + detail: string | null; + } | { - message: boolean; - }; + message: boolean; + }; export async function verifyUser(userId: string) { const session = await getServerSession(authOptions); if (!session?.apiToken) { @@ -230,6 +230,7 @@ export type AddTopupFormState = { message: string; fieldErrors?: { amount?: string[]; + description?: string[]; }; payload?: FormData; }; @@ -242,6 +243,15 @@ export async function adminUserTopup( const amount = formData.get("amount") as string; const session = await getServerSession(authOptions); + + if (!amount) { + return { + status: false, + message: "Amount is required", + fieldErrors: { amount: ["Amount is required"], description: [] }, + payload: formData, + } + } const response = await fetch( `${process.env.SARLINK_API_BASE_URL}/api/billing/admin-topup/`, { diff --git a/components/admin/admin-topup-form.tsx b/components/admin/admin-topup-form.tsx index aa3bb06..397d1f1 100644 --- a/components/admin/admin-topup-form.tsx +++ b/components/admin/admin-topup-form.tsx @@ -17,12 +17,14 @@ import { } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; +import { Textarea } from "../ui/textarea"; export type AddTopupFormState = { status: boolean; message: string; fieldErrors?: { amount?: string[]; + description?: string[]; }; payload?: FormData; }; @@ -81,9 +83,9 @@ export default function AddTopupDialogForm({ user_id }: { user_id?: string }) {
-
+
- + )}
+
+ + +