125 lines
2.7 KiB
TypeScript
125 lines
2.7 KiB
TypeScript
import { selectAllAction } from "@/app/_actions/service";
|
|
import { ServiceConfig } from "@/app/_lib/service";
|
|
|
|
const tableLookup = {
|
|
whatsapp: "WhatsappBot",
|
|
facebook: "FacebookBot",
|
|
signal: "SignalBot",
|
|
};
|
|
|
|
export const webhooksConfig: ServiceConfig = {
|
|
entity: "webhooks",
|
|
table: "Webhook",
|
|
displayName: "Webhook",
|
|
createFields: [
|
|
{
|
|
name: "name",
|
|
label: "Name",
|
|
required: true,
|
|
size: 12,
|
|
},
|
|
{
|
|
name: "description",
|
|
label: "Description",
|
|
size: 12,
|
|
lines: 3,
|
|
},
|
|
{
|
|
name: "httpMethod",
|
|
label: "HTTP Method",
|
|
kind: "select",
|
|
getOptions: async () => [
|
|
{ value: "post", label: "POST" },
|
|
{ value: "put", label: "PUT" },
|
|
],
|
|
defaultValue: "post",
|
|
required: true,
|
|
size: 2,
|
|
},
|
|
|
|
{
|
|
name: "endpointUrl",
|
|
label: "Endpoint",
|
|
required: true,
|
|
size: 10,
|
|
},
|
|
{
|
|
name: "backendType",
|
|
label: "Backend Type",
|
|
kind: "select",
|
|
getOptions: async (_formState: any) => [
|
|
{ value: "whatsapp", label: "WhatsApp" },
|
|
{ value: "facebook", label: "Facebook" },
|
|
{ value: "signal", label: "Signal" },
|
|
],
|
|
defaultValue: "facebook",
|
|
required: true,
|
|
},
|
|
{
|
|
name: "backendId",
|
|
label: "Backend ID",
|
|
kind: "select",
|
|
getOptions: async (formState: any) => {
|
|
console.log({ formState });
|
|
if (!formState || !formState.values.backendType) {
|
|
return [];
|
|
}
|
|
|
|
// @ts-expect-error
|
|
const table = tableLookup[formState.values.backendType];
|
|
console.log({ table });
|
|
const result = await selectAllAction(table);
|
|
console.log({ result });
|
|
|
|
return result.map((item: any) => ({
|
|
value: item.id,
|
|
label: item.name,
|
|
}));
|
|
},
|
|
required: true,
|
|
},
|
|
{
|
|
name: "headers",
|
|
label: "HTTP Headers",
|
|
kind: "multi",
|
|
size: 12,
|
|
helperText: "Useful for including authentication headers",
|
|
},
|
|
],
|
|
updateFields: [
|
|
{ name: "name", label: "Name", required: true, size: 12 },
|
|
{
|
|
name: "description",
|
|
label: "Description",
|
|
required: true,
|
|
size: 12,
|
|
},
|
|
],
|
|
displayFields: [
|
|
{ name: "name", label: "Name", required: true, size: 12 },
|
|
{
|
|
name: "description",
|
|
label: "Description",
|
|
required: true,
|
|
size: 12,
|
|
},
|
|
],
|
|
listColumns: [
|
|
{
|
|
field: "name",
|
|
headerName: "Name",
|
|
flex: 1,
|
|
},
|
|
{
|
|
field: "description",
|
|
headerName: "Description",
|
|
flex: 2,
|
|
},
|
|
{
|
|
field: "updatedAt",
|
|
headerName: "Updated At",
|
|
valueGetter: (value: any) => new Date(value).toLocaleString(),
|
|
flex: 1,
|
|
},
|
|
],
|
|
};
|