"use client"; import { useEffect, useMemo, useRef, useState } from "react"; import { ClientTableConfig, ServiceTableConfig } from "@/config/client_1"; import CustomTable from "@/components/table"; import { Alert, Button, Card, CardContent, CardHeader, Snackbar, Typography, } from "@mui/material"; import CopyToClipboard from "@/components/copy_to_clipboard"; import { useGetServicesByName } from "@/api/services/services"; import { attachEntity, detachEntity } from "@/api/entities/entities"; import { mutate } from "swr"; import { Skeleton } from "@mui/material"; import { Service } from "@/api/model"; export default function Client({ params, }: { params: { client_name: string }; }) { const { client_name } = params; const { data: services, isLoading: services_loading, swrKey: entityKeyFunc, } = useGetServicesByName({ entity_name: client_name, }); const entity = services?.data?.entity; const clients: Service[] = useMemo(() => { if (services?.data?.services) { return services.data.services.filter((service) => { if (service.entity_did !== entity?.did) return true; }); } return []; }, [services, entity?.did]); const onRefresh = () => { const entityKey = typeof entityKeyFunc === "function" ? entityKeyFunc() : entityKeyFunc; if (entityKey) mutate(entityKey); }; useEffect(() => { const interval = setInterval(() => { onRefresh(); }, 5000); return () => clearInterval(interval); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const cardContentRef = useRef(null); const [snackbarOpen, setSnackbarOpen] = useState(false); const [snackbarMessage, setSnackbarMessage] = useState(""); const [isAttached, setIsAttached] = useState(entity?.attached); const closeSnackBar = () => { setSnackbarMessage(""); setSnackbarOpen(false); }; const onAttachEntity = async () => { try { if (entity) { const response = await attachEntity(entity.did); setSnackbarMessage(response.data.message); setSnackbarOpen(true); } else { console.error("no entity"); } } catch (error) { console.error(error); } finally { setIsAttached(true); } }; const onDetachEntity = async () => { try { if (entity) { const response = await detachEntity(entity.did); console.log(response); setSnackbarMessage("Entity detached successfully."); setSnackbarOpen(true); } else { console.error("no entity"); } } catch (error) { console.error(error); } finally { setIsAttached(false); } }; if (services_loading) return ; if (!services) return Client not found; return (

Client 1

{isAttached === false ? ( ) : ( )}
} /> DID: {entity?.did} IP: {entity?.ip} Network: {entity?.other?.network}

Client View

Service View

{snackbarMessage}
); }