From ecd3ccf7bec9c726790ba6e144f426242a07e82f Mon Sep 17 00:00:00 2001 From: uutbudiarto2012 Date: Tue, 5 Aug 2025 21:24:30 +0700 Subject: [PATCH] crud chain --- .../(admin)/(masters)/chain/form-submit.tsx | 107 ++++++++++++------ .../(admin)/(masters)/chain/table/columns.tsx | 35 +++++- src/modules/chain/schema.ts | 3 + src/types/chain.d.ts | 4 + 4 files changed, 111 insertions(+), 38 deletions(-) diff --git a/src/app/(admin)/(masters)/chain/form-submit.tsx b/src/app/(admin)/(masters)/chain/form-submit.tsx index 8e4368e..bb66920 100644 --- a/src/app/(admin)/(masters)/chain/form-submit.tsx +++ b/src/app/(admin)/(masters)/chain/form-submit.tsx @@ -15,6 +15,7 @@ import { DialogTrigger, } from "@/components/ui/dialog" import { Form } from "@/components/ui/form" +import { ScrollArea } from "@/components/ui/scroll-area" import { useUpload } from "@/hooks/useUpload" import { toUrlAsset } from "@/lib/utils" import { useCreateChain, useUpdateChain } from "@/modules/chain/hooks/useChain" @@ -24,7 +25,7 @@ import { zodResolver } from "@hookform/resolvers/zod" import { useState } from "react" import { useForm } from "react-hook-form" -export function FormSubmit({ data }: { data?:TChain }) { +export function FormSubmit({ data }: { data?: TChain }) { const [dialog, setDialog] = useState(false) const { mutate: upload } = useUpload() const { mutate: createChain, isPending: updating } = useCreateChain() @@ -36,13 +37,16 @@ export function FormSubmit({ data }: { data?:TChain }) { logo: "", ticker: "", urlScanner: "", - type: "" + type: "", + chainid: 1, + urlApi: '', + urlRpc: '' }, }) function onSubmit(values: TFormChain) { if (data?.id) { - updateChain({id:data.id, data:values}, { + updateChain({ id: data.id, data: values }, { onSuccess: () => { setDialog(false) } @@ -67,14 +71,23 @@ export function FormSubmit({ data }: { data?:TChain }) { } function handleOpen() { setDialog(!dialog) - form.reset({ ...data }) + form.reset({ + chainid: data?.chainid, + logo: data?.logo, + name: data?.name, + ticker: data?.ticker, + type: data?.type, + urlApi: data?.urlApi || '-', + urlRpc: data?.urlRpc || '-', + urlScanner: data?.urlScanner, + }) } return (
{ - data?.id? ( + data?.id ? ( ) : ( @@ -92,45 +105,67 @@ export function FormSubmit({ data }: { data?:TChain }) {
-
-
- + +
+
+ +
+
+ +
+ + +
+
-
+
+ +
-
-
- - -
+
diff --git a/src/app/(admin)/(masters)/chain/table/columns.tsx b/src/app/(admin)/(masters)/chain/table/columns.tsx index 6e73132..678e5b1 100644 --- a/src/app/(admin)/(masters)/chain/table/columns.tsx +++ b/src/app/(admin)/(masters)/chain/table/columns.tsx @@ -44,8 +44,39 @@ export const columns: ColumnDef[] = [ header: 'Type', }, { - accessorKey: 'urlScanner', - header: 'Scanner', + accessorKey: 'chainid', + header: 'Chainid', + }, + { + accessorKey: 'url', + header: 'Urls', + cell: ({ row }) => { + return ( +
+
+
Api Url
+
:
+
+ {row.original.urlApi ?? "-"} +
+
+
+
Rpc Url
+
:
+
+ {row.original.urlRpc ?? "-"} +
+
+
+
Scanner
+
:
+
+ {row.original.urlScanner ?? "-"} +
+
+
+ ) + } }, { id: "actions", diff --git a/src/modules/chain/schema.ts b/src/modules/chain/schema.ts index eeb3de1..e67cf2a 100644 --- a/src/modules/chain/schema.ts +++ b/src/modules/chain/schema.ts @@ -9,4 +9,7 @@ export const formChainSchema = z.object({ ticker: z.string(), type: z.string(), urlScanner: z.string().optional(), + chainid: z.coerce.number(), + urlApi: z.string().optional(), + urlRpc: z.string().optional(), }) \ No newline at end of file diff --git a/src/types/chain.d.ts b/src/types/chain.d.ts index 0c4dacb..018b6f9 100644 --- a/src/types/chain.d.ts +++ b/src/types/chain.d.ts @@ -11,4 +11,8 @@ export type TChain = { logo: string urlScanner: string type: string + urlScanner: string | null + chainid: number, + urlApi: string | null, + urlRpc: string | null }