From dbe61e447ac17ec7f3b16c61fc0be8458ab8a388 Mon Sep 17 00:00:00 2001 From: talksik Date: Sun, 12 Apr 2026 13:44:35 -0700 Subject: [PATCH] fix: persist selected streams tab This used to navigate me back to the open streams tab even if I click a stream in the closed list --- js/src/features/network-root.tsx | 19 ++++++++++++++++--- js/src/features/particles/stream-view.tsx | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) 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() {
setStatusTab(v as "open" | "closed")} + onValueChange={(v) => setStatusTab(v === "closed" ? "closed" : "open")} > Open diff --git a/js/src/features/particles/stream-view.tsx b/js/src/features/particles/stream-view.tsx index ab4e8fa..d38e54e 100644 --- a/js/src/features/particles/stream-view.tsx +++ b/js/src/features/particles/stream-view.tsx @@ -287,7 +287,7 @@ function StreamViewInner({ path, streamParticle }: StreamViewProps) { break; case "Escape": e.preventDefault(); - navigate(`/${networkId}`); + navigate(-1); break; case "h": { e.preventDefault();