import {useContext, useEffect, useState} from "react"; import {deleteRequest, getRequest, patchRequest} from "@/common/utils/RequestUtil.js"; import {ProjectContext} from "@/states/Dashboard/contexts/Project"; import {Button, Chip, CircularProgress, IconButton, Link, Stack, Typography} from "@mui/material"; import {Delete, TextFields, ToggleOn, LooksOneRounded, Edit} from "@mui/icons-material"; import PermissionCreationDialog from "./components/MetaCreationDialog"; export const MetaData = () => { const {currentProject} = useContext(ProjectContext); const [editItem, setEditItem] = useState(null); const [loading, setLoading] = useState(true); const [dialogOpen, setDialogOpen] = useState(false); const [metaData, setMetaData] = useState([]); const fetchMetaData = async () => { try { const data = await getRequest(`/meta/${currentProject.id}/list`); if (!data) return; setMetaData(data); setLoading(false); } catch (e) { console.error(e); } } const toggleVisibility = async (meta) => { try { await patchRequest(`/meta/${currentProject.id}/${meta.name}`, { public: !meta.public }); await fetchMetaData(); } catch (e) { console.error(e); } } const deleteMetaItem = async (meta) => { try { await deleteRequest(`/meta/${currentProject.id}/${meta}`); await fetchMetaData(); } catch (e) { console.error(e); } } useEffect(() => { fetchMetaData(); const timer = setInterval(fetchMetaData, 5000); return () => clearInterval(timer); }, []); return ( setDialogOpen(false)} fetchPermissions={fetchMetaData} editItem={editItem} setEditItem={setEditItem} /> {loading && <>Meta-Items} {!loading && <>{metaData.length} Meta-Items} {metaData.map((meta, index) => ( {meta.type === "BOOLEAN" && } {meta.type === "TEXT" && } {meta.type === "NUMBER" && } {meta.name} toggleVisibility(meta)}/> {meta.description} {meta.defaultValue} { setEditItem(meta); setDialogOpen(true); }}> deleteMetaItem(meta.name)}> ))} {loading && } {!loading && metaData.length === 0 && No meta data created. setDialogOpen(true)} color="primary" sx={{cursor: "pointer"}}>Create one } ); }