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

View File

@@ -1030,6 +1030,7 @@ export function PacketVisualizer3D({
// Persist visualizer controls to localStorage on change
useEffect(() => {
saveVisualizerSettings({
...getVisualizerSettings(),
showAmbiguousPaths,
showAmbiguousNodes,
useAdvertPathHints,

View File

@@ -5,6 +5,7 @@ import { PacketVisualizer3D } from './PacketVisualizer3D';
import { RawPacketList } from './RawPacketList';
import { Tabs, TabsContent, TabsList, TabsTrigger } from './ui/tabs';
import { cn } from '@/lib/utils';
import { getVisualizerSettings, saveVisualizerSettings } from '../utils/visualizerSettings';
interface VisualizerViewProps {
packets: RawPacket[];
@@ -13,10 +14,18 @@ interface 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 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.)
useEffect(() => {
const handler = () => {

View File

@@ -12,6 +12,7 @@ export interface VisualizerSettings {
pruneStaleNodes: boolean;
autoOrbit: boolean;
showControls: boolean;
hidePacketFeed: boolean;
}
export const VISUALIZER_DEFAULTS: VisualizerSettings = {
@@ -26,6 +27,7 @@ export const VISUALIZER_DEFAULTS: VisualizerSettings = {
pruneStaleNodes: false,
autoOrbit: false,
showControls: true,
hidePacketFeed: false,
};
export function getVisualizerSettings(): VisualizerSettings {
@@ -74,6 +76,10 @@ export function getVisualizerSettings(): VisualizerSettings {
typeof parsed.showControls === 'boolean'
? parsed.showControls
: VISUALIZER_DEFAULTS.showControls,
hidePacketFeed:
typeof parsed.hidePacketFeed === 'boolean'
? parsed.hidePacketFeed
: VISUALIZER_DEFAULTS.hidePacketFeed,
};
} catch {
return { ...VISUALIZER_DEFAULTS };