"use client"; import { FC, useState } from "react"; import { Grid, Box } from "@mui/material"; import { useRouter } from "next/navigation"; import { DisplayTextField, Button, Dialog, colors, typography, } from "@link-stack/ui"; import { Selectable } from "kysely"; import { type Database } from "@link-stack/bridge-common"; import { QRCode } from "./QRCode"; import { generateDeleteAction } from "../lib/actions"; import { serviceConfig } from "../config/config"; import { FieldDescription } from "../lib/service"; import { getBasePath } from "../lib/frontendUtils"; type DetailProps = { service: string; row: Selectable; }; export const Detail: FC = ({ service, row }) => { const { [service]: { entity, table, displayName, displayFields: fields }, } = serviceConfig; const id = row.id as string; const token = row.token as string; const deleteAction = generateDeleteAction({ entity, table }); const router = useRouter(); const { almostBlack } = colors; const { bodyLarge } = typography; const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false); const [showRelinkConfirmation, setShowRelinkConfirmation] = useState(false); const [isRelinking, setIsRelinking] = useState(false); const continueDeleteAction = async () => { await deleteAction?.(id); setShowDeleteConfirmation(false); router.push(`${getBasePath()}${entity}`); }; const continueRelinkAction = async () => { setIsRelinking(true); try { const response = await fetch(`/link/api/${entity}/bots/${token}/relink`, { method: "POST", }); if (response.ok) { setShowRelinkConfirmation(false); router.refresh(); } } catch (error) { console.error("Relink failed:", error); } finally { setIsRelinking(false); } }; return ( <> router.push(`${getBasePath()}${entity}`)} buttons={ ); };