import React, { useContext, useEffect, useState } from 'react'; import { CommonMenuList, Headline } from "../component/mod"; import { UserContext } from "../state"; import { Box, Grid, Paper, Typography,Button, Theme } from "@mui/material"; import {Stack} from '@mui/material'; const useStyles = ((theme:Theme)=>({ paper:{ padding: theme.spacing(2), }, commitable:{ display:'grid', gridTemplateColumns: `100px auto`, }, contentTitle:{ marginLeft: theme.spacing(2) } })); type FileDifference = { type:string, value:{ type:string, path:string, }[] } function TypeDifference(prop:{ content:FileDifference, onCommit:(v:{type:string,path:string})=>void, onCommitAll:(type:string) => void }){ //const classes = useStyles(); const x = prop.content; const [button_disable,set_disable] = useState(false); return ( {x.type} {x.value.map(y=>( {y.path} ))} ); } export function DifferencePage(){ const ctx = useContext(UserContext); //const classes = useStyles(); const [diffList,setDiffList] = useState< FileDifference[] >([]); const doLoad = async ()=>{ const list = await fetch('/api/diff/list'); if(list.ok){ const inner = await list.json(); setDiffList(inner); } else{ //setDiffList([]); } }; const Commit = async(x:{type:string,path:string})=>{ const res = await fetch('/api/diff/commit',{ method:'POST', body: JSON.stringify([{...x}]), headers:{ 'content-type':'application/json' } }); const bb = await res.json(); if(bb.ok){ doLoad(); } else{ console.error("fail to add document"); } } const CommitAll = async (type :string)=>{ const res = await fetch("/api/diff/commitall",{ method:"POST", body: JSON.stringify({type:type}), headers:{ 'content-type':'application/json' } }); const bb = await res.json(); if(bb.ok){ doLoad(); } else{ console.error("fail to add document"); } } useEffect( ()=>{ doLoad(); const i = setInterval(doLoad,5000); return ()=>{ clearInterval(i); } },[] ) const menu = CommonMenuList(); return ( {(ctx.username == "admin") ? (
{(diffList.map(x=> ))}
) :(Not Allowed : please login as an admin) }
) }