Route saving

This commit is contained in:
2026-02-27 23:31:58 +01:00
parent e9c0bf5c52
commit a9bf6d894b
2 changed files with 39 additions and 41 deletions
+10 -14
View File
@@ -14,9 +14,6 @@ import {
} from "@/lib/workspace";
export default function Workspace() {
const [currentWorkspace, setCurrentWorkspace] = useState<string>();
const [isInitialized, setIsInitialized] = useState(false);
const { workspace, loadWorkspace, updateEntity, setWorkspace } =
useWorkspace();
@@ -26,9 +23,10 @@ export default function Workspace() {
* Initialize workspace from cookie on mount
*/
useEffect(() => {
const workspaceId = Cookies.get("workspace");
setCurrentWorkspace(workspaceId);
setIsInitialized(true);
const routeString = Cookies.get("route");
if (!routeString) return;
const route = JSON.parse(routeString) as Route;
setRoute(route);
}, []);
/**
@@ -41,16 +39,14 @@ export default function Workspace() {
* for this case.
*/
useEffect(() => {
if (!isInitialized) return;
loadWorkspace(currentWorkspace);
if (currentWorkspace) {
Cookies.set("workspace", currentWorkspace);
loadWorkspace(route.workspace);
if (route.workspace) {
Cookies.set("route", JSON.stringify(route));
} else {
Cookies.remove("workspace");
Cookies.remove("route");
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [currentWorkspace, isInitialized]);
}, [route]);
/**
* Load route (entity) from localStorage when workspace loads
@@ -103,7 +99,7 @@ export default function Workspace() {
onClick={() => {
const w = createDefaultWorkspace();
saveWorkspaceToLocalStorage(w);
setCurrentWorkspace(w.id);
setRoute({ workspace: w.id });
}}
>
<div className="text-center space-y-6">
+29 -27
View File
@@ -92,34 +92,36 @@ export default function TaskView({
};
return (
<div className="px-6 pt-4 flex flex-col gap-4">
<div className="flex items-center justify-end">
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline" size="sm" disabled={isExporting}>
<FileDown className="h-4 w-4 mr-2" />
Export
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem onClick={() => handleExport("csv")}>
Export as CSV
</DropdownMenuItem>
<DropdownMenuItem onClick={() => handleExport("markdown")}>
Export as Markdown
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem onClick={() => handleExport("json")}>
Export as JSON
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div>
<div className="flex items-center justify-end"></div>
<Tabs defaultValue="board" className="w-full">
<TabsList className="mb-4">
<TabsTrigger value="board">Board</TabsTrigger>
<TabsTrigger value="table">Table</TabsTrigger>
<TabsTrigger value="edit">Edit</TabsTrigger>
</TabsList>
<div className="flex justify-between">
<TabsList className="mb-4">
<TabsTrigger value="board">Board</TabsTrigger>
<TabsTrigger value="table">Table</TabsTrigger>
<TabsTrigger value="edit">Edit</TabsTrigger>
</TabsList>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline" size="sm" disabled={isExporting}>
<FileDown className="h-4 w-4 mr-2" />
Export
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem onClick={() => handleExport("csv")}>
Export as CSV
</DropdownMenuItem>
<DropdownMenuItem onClick={() => handleExport("markdown")}>
Export as Markdown
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem onClick={() => handleExport("json")}>
Export as JSON
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div>
<TabsContent value="board" className="mt-0">
<BoardView