mirror of
https://github.com/ajvpot/meshexplorer.git
synced 2026-07-05 17:20:58 +02:00
persist selectedtab in usequeryparams
This commit is contained in:
@@ -52,4 +52,4 @@ export async function GET(
|
||||
code: "INTERNAL_ERROR"
|
||||
}, { status: 500 });
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
"use client";
|
||||
|
||||
import { useConfig } from '@/components/ConfigContext';
|
||||
import { useSearchQuery } from '@/hooks/useSearchQuery';
|
||||
import { useSearchQuery } from '@/hooks/useQueryParams';
|
||||
import { useMeshcoreSearch } from '@/hooks/useMeshcoreSearch';
|
||||
import SearchInput from '@/components/SearchInput';
|
||||
import SearchResults from '@/components/SearchResults';
|
||||
|
||||
@@ -9,6 +9,7 @@ import RegionSelector from "./RegionSelector";
|
||||
import { getRegionConfig } from "../lib/regions";
|
||||
import { useChatMessages } from "../hooks/useChatMessages";
|
||||
import { useIntersectionObserver } from "../hooks/useIntersectionObserver";
|
||||
import { useQueryParams } from "../hooks/useQueryParams";
|
||||
|
||||
|
||||
interface ChatBoxProps {
|
||||
@@ -23,6 +24,10 @@ interface TabItem {
|
||||
isAllMessages?: boolean;
|
||||
}
|
||||
|
||||
interface ChatBoxQuery {
|
||||
selectedTab?: number;
|
||||
}
|
||||
|
||||
export default function ChatBox({
|
||||
showAllMessagesTab = false,
|
||||
className = "",
|
||||
@@ -39,7 +44,18 @@ export default function ChatBox({
|
||||
? [{ channelName: "All Messages", privateKey: "", isAllMessages: true }, ...meshcoreKeys]
|
||||
: meshcoreKeys;
|
||||
|
||||
const [selectedTab, setSelectedTab] = useState(showAllMessagesTab ? 1 : 0);
|
||||
// Use query params to persist selected tab across navigation
|
||||
const { query, setParam } = useQueryParams<ChatBoxQuery>({
|
||||
selectedTab: showAllMessagesTab ? 1 : 0,
|
||||
});
|
||||
|
||||
// Ensure selectedTab is within bounds of available tabs
|
||||
const rawSelectedTab = query.selectedTab ?? (showAllMessagesTab ? 1 : 0);
|
||||
const selectedTab = rawSelectedTab >= 0 && rawSelectedTab < allTabs.length
|
||||
? rawSelectedTab
|
||||
: (showAllMessagesTab ? 1 : 0);
|
||||
const setSelectedTab = (tabIndex: number) => setParam('selectedTab', tabIndex);
|
||||
|
||||
const [minimized, setMinimized] = useState(!startExpanded); // Use startExpanded as default for minimized state
|
||||
|
||||
const selectedKey = allTabs[selectedTab];
|
||||
|
||||
Reference in New Issue
Block a user