diff --git a/js/src/features/network-root.tsx b/js/src/features/network-root.tsx index baec43f..64c7087 100644 --- a/js/src/features/network-root.tsx +++ b/js/src/features/network-root.tsx @@ -1,5 +1,5 @@ import { useCallback, useState } from "react"; -import { useNavigate, useParams } from "react-router-dom"; +import { useNavigate, useParams, useSearchParams } from "react-router-dom"; import { CircleDot, CircleCheckBig } from "lucide-react"; import { particlePath } from "@/lib/particle-path"; import { ParticleListView } from "@/features/particles/particle-list-view"; @@ -19,7 +19,20 @@ export default function NetworkRoot() { const path = particlePath(networkId!, []); const [composeActive, setComposeActive] = useState(false); - const [statusTab, setStatusTab] = useState<"open" | "closed">("open"); + const [searchParams, setSearchParams] = useSearchParams(); + const statusTab: "open" | "closed" = + searchParams.get("status") === "closed" ? "closed" : "open"; + const setStatusTab = (next: "open" | "closed") => { + setSearchParams( + (prev) => { + const params = new URLSearchParams(prev); + if (next === "open") params.delete("status"); + else params.set("status", next); + return params; + }, + { replace: true }, + ); + }; const { streams, isLoading, canLoadMore, loadMore } = useStreamParticles(path, { status: statusTab, @@ -40,7 +53,7 @@ export default function NetworkRoot() {