feat: persist active tab in URL (?tab=chat survives reload)
This commit is contained in:
parent
f4f09bfeee
commit
9b2026c5fa
@ -1,5 +1,5 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { useParams } from "react-router-dom";
|
||||
import { useParams, useSearchParams } from "react-router-dom";
|
||||
import { getProjects, type Project } from "@/lib/api";
|
||||
import Sidebar from "@/components/Sidebar";
|
||||
import KanbanBoard from "@/components/KanbanBoard";
|
||||
@ -16,9 +16,17 @@ const TABS = [
|
||||
|
||||
export default function ProjectPage() {
|
||||
const { slug } = useParams<{ slug: string }>();
|
||||
const [searchParams, setSearchParams] = useSearchParams();
|
||||
const [projects, setProjects] = useState<Project[]>([]);
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [activeTab, setActiveTab] = useState("board");
|
||||
|
||||
const validTabs = ["board", "chat", "files", "settings"];
|
||||
const tabFromUrl = searchParams.get("tab") || "board";
|
||||
const activeTab = validTabs.includes(tabFromUrl) ? tabFromUrl : "board";
|
||||
|
||||
const setActiveTab = (tab: string) => {
|
||||
setSearchParams(tab === "board" ? {} : { tab }, { replace: true });
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
getProjects()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user