Dolor David Prince
fix: add use client directive to all components for static export
c9d42cc
Raw
History Blame Contribute Delete
1.69 kB
'use client';
"use client";
import {useEffect,useState} from "react";
export default function GitWorkspace(){
const [status,setStatus]=useState("");
const [branches,setBranches]=useState([]);
const [history,setHistory]=useState([]);
async function load(){
try{
const s=await fetch("/api/workspace/git/status");
const statusData=await s.json();
setStatus(JSON.stringify(statusData,null,2));
}catch{
setStatus("Git service unavailable.");
}
try{
const b=await fetch("/api/workspace/git/branches");
if(b.ok){
setBranches(await b.json());
}
}catch{}
try{
const h=await fetch("/api/workspace/git/history");
if(h.ok){
setHistory(await h.json());
}
}catch{}
}
useEffect(()=>{
load();
},[]);
return(
<div className="h-full flex flex-col bg-neutral-950 text-white">
<div className="border-b border-neutral-800 p-3 text-lg font-bold">
Git Workspace
</div>
<div className="grid grid-cols-3 flex-1">
<div className="border-r border-neutral-800 overflow-auto p-4">
<h2 className="font-semibold mb-2">
Branches
</h2>
<ul className="space-y-2">
{branches.length===0?
<li>No branches.</li>:
branches.map((b,i)=>
<li key={i}>{typeof b==="string"?b:b.name}</li>
)}
</ul>
</div>
<div className="border-r border-neutral-800 overflow-auto p-4">
<h2 className="font-semibold mb-2">
Commit History
</h2>
<ul className="space-y-2 text-sm">
{history.length===0?
<li>No commits.</li>:
history.map((c,i)=>
<li key={i}>
{typeof c==="string"?c:(c.message||JSON.stringify(c))}
</li>
)}
</ul>
</div>
<div className="overflow-auto p-4">
<h2 className="font-semibold mb-2">
Repository Status
</h2>
<pre className="text-xs whitespace-pre-wrap">
{status}
</pre>
</div>
</div>
</div>
);
}