Display improvements

This commit is contained in:
Darren Clarke 2024-04-26 16:29:13 +02:00
parent cca8d03988
commit 39cfada3e8
9 changed files with 98 additions and 24 deletions

View file

@ -39,18 +39,21 @@ export const Create: FC<CreateProps> = ({ service }) => {
formState={formState}
>
<Grid container direction="row" rowSpacing={3} columnSpacing={2}>
{fields.map((field) => (
<Grid key={field.name} item xs={field.size ?? 6}>
<TextField
name={field.name}
label={field.label}
lines={field.lines ?? 1}
required={field.required ?? false}
formState={formState}
helperText={field.helperText}
/>
</Grid>
))}
{fields.map(
(field) =>
!field.hidden && (
<Grid key={field.name} item xs={field.size ?? 6}>
<TextField
name={field.name}
label={field.label}
lines={field.lines ?? 1}
required={field.required ?? false}
formState={formState}
helperText={field.helperText}
/>
</Grid>
),
)}
</Grid>
</InternalCreate>
);

View file

@ -46,6 +46,8 @@ export const Edit: FC<EditProps> = ({ service, row }) => {
name={field.name}
label={field.label}
lines={field.lines ?? 1}
disabled={field.disabled ?? false}
refreshable={field.refreshable ?? false}
required={field.required ?? false}
formState={formState}
helperText={field.helperText}

View file

@ -3,6 +3,15 @@
import { revalidatePath } from "next/cache";
import { db, Database } from "@/app/_lib/database";
import { FieldDescription, Entity } from "@/app/_lib/service";
import crypto from "crypto";
const generateToken = () => {
const length = 20;
const randomBytes = crypto.randomBytes(length);
const randomString = randomBytes.toString("hex").slice(0, length);
return randomString;
};
type CreateActionArgs = {
entity: Entity;
@ -20,8 +29,12 @@ export const createAction = async ({
formData,
}: CreateActionArgs) => {
const newRecord = fields.reduce(
(acc: Record<string, string>, field: FieldDescription) => {
// @ts-expect-error
(acc: Record<string, any>, field: FieldDescription) => {
if (field.autogenerated === "token") {
acc[field.name] = generateToken();
return acc;
}
acc[field.name] = formData.get(field.name)?.toString() ?? null;
return acc;
},
@ -56,8 +69,7 @@ export const updateAction = async ({
}: UpdateActionArgs) => {
const id = currentState.values.id;
const updatedRecord = fields.reduce(
(acc: Record<string, string>, field: FieldDescription) => {
// @ts-expect-error
(acc: Record<string, any>, field: FieldDescription) => {
acc[field.name] = formData.get(field.name)?.toString() ?? null;
return acc;
},

View file

@ -26,6 +26,20 @@ export const facebookConfig: ServiceConfig = {
label: "Page Access Token",
required: true,
},
{
name: "token",
label: "Token",
hidden: true,
required: true,
autogenerated: "token",
},
{
name: "verifyToken",
label: "Verify Token",
hidden: true,
required: true,
autogenerated: "token",
},
],
updateFields: [
{ name: "name", label: "Name", required: true, size: 12 },
@ -35,6 +49,18 @@ export const facebookConfig: ServiceConfig = {
size: 12,
lines: 3,
},
{
name: "token",
label: "Token",
disabled: true,
refreshable: true,
},
{
name: "verifyToken",
label: "Verify Token",
disabled: true,
refreshable: true,
},
{ name: "appId", label: "App ID", required: true },
{ name: "appSecret", label: "App Secret", required: true },
{ name: "pageId", label: "Page ID", required: true },
@ -52,6 +78,17 @@ export const facebookConfig: ServiceConfig = {
required: true,
size: 12,
},
{
name: "token",
label: "Token",
copyable: true,
},
{
name: "verifyToken",
label: "Verify Token",
copyable: true,
},
{ name: "appId", label: "App ID", required: true },
{ name: "appSecret", label: "App Secret", required: true },
{

View file

@ -16,9 +16,12 @@ export type Entity = (typeof entities)[number];
export type FieldDescription = {
name: string;
label: string;
autogenerated?: "token";
hidden?: boolean;
type?: string;
lines?: number;
copyable?: boolean;
refreshable?: boolean;
defaultValue?: string;
required?: boolean;
disabled?: boolean;

View file

@ -23,13 +23,19 @@ export const signalConfig: ServiceConfig = {
label: "phoneNumber",
required: true,
},
{
name: "token",
label: "Token",
hidden: true,
required: true,
autogenerated: "token",
},
],
updateFields: [
{ name: "name", label: "Name", required: true, size: 12 },
{
name: "description",
label: "Description",
required: true,
size: 12,
},
{
@ -43,13 +49,16 @@ export const signalConfig: ServiceConfig = {
{
name: "description",
label: "Description",
required: true,
size: 12,
},
{
name: "phoneNumber",
label: "phoneNumber",
required: true,
},
{
name: "token",
label: "Token",
copyable: true,
},
],
listColumns: [

View file

@ -23,13 +23,19 @@ export const whatsappConfig: ServiceConfig = {
label: "Phone Number",
required: true,
},
{
name: "token",
label: "Token",
hidden: true,
required: true,
autogenerated: "token",
},
],
updateFields: [
{ name: "name", label: "Name", required: true, size: 12 },
{
name: "description",
label: "Description",
required: true,
size: 12,
},
{
@ -43,13 +49,16 @@ export const whatsappConfig: ServiceConfig = {
{
name: "description",
label: "Description",
required: true,
size: 12,
},
{
name: "phoneNumber",
label: "Phone Number",
required: true,
},
{
name: "token",
label: "Token",
copyable: true,
},
],
listColumns: [