Fix packet sidebar retention

This commit is contained in:
Jack Kingsman
2026-03-03 09:05:21 -08:00
parent 4c1d5fb8ec
commit 707f98d203
3 changed files with 17 additions and 1 deletions
@@ -1030,6 +1030,7 @@ export function PacketVisualizer3D({
// Persist visualizer controls to localStorage on change // Persist visualizer controls to localStorage on change
useEffect(() => { useEffect(() => {
saveVisualizerSettings({ saveVisualizerSettings({
...getVisualizerSettings(),
showAmbiguousPaths, showAmbiguousPaths,
showAmbiguousNodes, showAmbiguousNodes,
useAdvertPathHints, useAdvertPathHints,
+10 -1
View File
@@ -5,6 +5,7 @@ import { PacketVisualizer3D } from './PacketVisualizer3D';
import { RawPacketList } from './RawPacketList'; import { RawPacketList } from './RawPacketList';
import { Tabs, TabsContent, TabsList, TabsTrigger } from './ui/tabs'; import { Tabs, TabsContent, TabsList, TabsTrigger } from './ui/tabs';
import { cn } from '@/lib/utils'; import { cn } from '@/lib/utils';
import { getVisualizerSettings, saveVisualizerSettings } from '../utils/visualizerSettings';
interface VisualizerViewProps { interface VisualizerViewProps {
packets: RawPacket[]; packets: RawPacket[];
@@ -13,10 +14,18 @@ interface VisualizerViewProps {
} }
export function VisualizerView({ packets, contacts, config }: VisualizerViewProps) { export function VisualizerView({ packets, contacts, config }: VisualizerViewProps) {
const [fullScreen, setFullScreen] = useState(false); const [fullScreen, setFullScreen] = useState(() => getVisualizerSettings().hidePacketFeed);
const [paneFullScreen, setPaneFullScreen] = useState(false); const [paneFullScreen, setPaneFullScreen] = useState(false);
const containerRef = useRef<HTMLDivElement>(null); const containerRef = useRef<HTMLDivElement>(null);
// Persist packet feed visibility to localStorage
useEffect(() => {
const current = getVisualizerSettings();
if (current.hidePacketFeed !== fullScreen) {
saveVisualizerSettings({ ...current, hidePacketFeed: fullScreen });
}
}, [fullScreen]);
// Sync state when browser exits fullscreen (Escape, F11, etc.) // Sync state when browser exits fullscreen (Escape, F11, etc.)
useEffect(() => { useEffect(() => {
const handler = () => { const handler = () => {
+6
View File
@@ -12,6 +12,7 @@ export interface VisualizerSettings {
pruneStaleNodes: boolean; pruneStaleNodes: boolean;
autoOrbit: boolean; autoOrbit: boolean;
showControls: boolean; showControls: boolean;
hidePacketFeed: boolean;
} }
export const VISUALIZER_DEFAULTS: VisualizerSettings = { export const VISUALIZER_DEFAULTS: VisualizerSettings = {
@@ -26,6 +27,7 @@ export const VISUALIZER_DEFAULTS: VisualizerSettings = {
pruneStaleNodes: false, pruneStaleNodes: false,
autoOrbit: false, autoOrbit: false,
showControls: true, showControls: true,
hidePacketFeed: false,
}; };
export function getVisualizerSettings(): VisualizerSettings { export function getVisualizerSettings(): VisualizerSettings {
@@ -74,6 +76,10 @@ export function getVisualizerSettings(): VisualizerSettings {
typeof parsed.showControls === 'boolean' typeof parsed.showControls === 'boolean'
? parsed.showControls ? parsed.showControls
: VISUALIZER_DEFAULTS.showControls, : VISUALIZER_DEFAULTS.showControls,
hidePacketFeed:
typeof parsed.hidePacketFeed === 'boolean'
? parsed.hidePacketFeed
: VISUALIZER_DEFAULTS.hidePacketFeed,
}; };
} catch { } catch {
return { ...VISUALIZER_DEFAULTS }; return { ...VISUALIZER_DEFAULTS };