fix duplicated keyerror

This commit is contained in:
monoid 2021-01-20 14:27:14 +09:00
parent 50ce70435a
commit eb6523f9c0
1 changed files with 42 additions and 23 deletions

View File

@ -15,32 +15,48 @@ const useStyles = makeStyles((theme:Theme)=>({
marginLeft: theme.spacing(2) 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
}){
const classes = useStyles();
const x = prop.content;
return (<Paper className={classes.paper}>
<Typography variant='h3' className={classes.contentTitle}>{x.type}</Typography>
{x.value.map(y=>(
<Box className={classes.commitable} key={y.path}>
<Button onClick={()=>prop.onCommit(y)}>Commit</Button>
<Typography variant='h5'>{y.path}</Typography>
</Box>
))}
</Paper>);
}
export function DifferencePage(){ export function DifferencePage(){
const ctx = useContext(UserContext); const ctx = useContext(UserContext);
const classes = useStyles(); const classes = useStyles();
const [diffList,setDiffList] = useState< const [diffList,setDiffList] = useState<
{type:string,value:{path:string,type:string}[]}[] FileDifference[]
>([]); >([]);
const doLoad = async ()=>{ const doLoad = async ()=>{
const list = await fetch('/api/diff/list'); const list = await fetch('/api/diff/list');
if(list.ok){ if(list.ok){
const inner = await list.json(); const inner = await list.json();
setDiffList(inner); setDiffList(inner);
} }
else{ else{
//setDiffList([]); //setDiffList([]);
} }
}; };
useEffect(
()=>{
doLoad();
const i = setInterval(doLoad,5000);
return ()=>{
clearInterval(i);
}
},[]
)
const Commit = async(x:{type:string,path:string})=>{ const Commit = async(x:{type:string,path:string})=>{
const res = await fetch('/api/diff/commit',{ const res = await fetch('/api/diff/commit',{
method:'POST', method:'POST',
@ -54,19 +70,22 @@ export function DifferencePage(){
doLoad(); doLoad();
} }
} }
useEffect(
()=>{
doLoad();
const i = setInterval(doLoad,5000);
return ()=>{
clearInterval(i);
}
},[]
)
const menu = CommonMenuList(); const menu = CommonMenuList();
(ctx.username == "admin")
return (<Headline menu={menu}> return (<Headline menu={menu}>
{(ctx.username == "admin") ? (diffList.map(x=><Paper key={x.type} className={classes.paper}> {(ctx.username == "admin") ? (<div>
<Typography variant='h3' className={classes.contentTitle}>{x.type}</Typography> {(diffList.map(x=>
<Box className={classes.commitable}> <TypeDifference key={x.type} content={x} onCommit={Commit}/>))}
{x.value.map(y=>( </div>)
<> :(<Typography variant='h2'>Not Allowed : please login as an admin</Typography>)
<Button key={`button_${y.path}`} onClick={()=>Commit(y)}>Commit</Button>
<Typography key={`typography_${y.path}`} variant='h5'>{y.path}</Typography>
</>))}
</Box>
</Paper>)):(<Typography variant='h2'>Not Allowed : please login as an admin</Typography>)
} }
</Headline>) </Headline>)