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
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import { useCallback, useState } from "react";
|
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 { CircleDot, CircleCheckBig } from "lucide-react";
|
||||||
import { particlePath } from "@/lib/particle-path";
|
import { particlePath } from "@/lib/particle-path";
|
||||||
import { ParticleListView } from "@/features/particles/particle-list-view";
|
import { ParticleListView } from "@/features/particles/particle-list-view";
|
||||||
@@ -19,7 +19,20 @@ export default function NetworkRoot() {
|
|||||||
const path = particlePath(networkId!, []);
|
const path = particlePath(networkId!, []);
|
||||||
|
|
||||||
const [composeActive, setComposeActive] = useState(false);
|
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, {
|
const { streams, isLoading, canLoadMore, loadMore } = useStreamParticles(path, {
|
||||||
status: statusTab,
|
status: statusTab,
|
||||||
@@ -40,7 +53,7 @@ export default function NetworkRoot() {
|
|||||||
<div className="flex shrink-0 items-center justify-between p-1 border-b">
|
<div className="flex shrink-0 items-center justify-between p-1 border-b">
|
||||||
<Tabs
|
<Tabs
|
||||||
value={statusTab}
|
value={statusTab}
|
||||||
onValueChange={(v) => setStatusTab(v as "open" | "closed")}
|
onValueChange={(v) => setStatusTab(v === "closed" ? "closed" : "open")}
|
||||||
>
|
>
|
||||||
<TabsList>
|
<TabsList>
|
||||||
<TabsTrigger value="open"><CircleDot className="size-3 text-green-500" /> Open</TabsTrigger>
|
<TabsTrigger value="open"><CircleDot className="size-3 text-green-500" /> Open</TabsTrigger>
|
||||||
|
|||||||
@@ -287,7 +287,7 @@ function StreamViewInner({ path, streamParticle }: StreamViewProps) {
|
|||||||
break;
|
break;
|
||||||
case "Escape":
|
case "Escape":
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
navigate(`/${networkId}`);
|
navigate(-1);
|
||||||
break;
|
break;
|
||||||
case "h": {
|
case "h": {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|||||||
Reference in New Issue
Block a user