feat: Implement localStorage persistence for UI panel resize states in Draft and Deck views.

This commit is contained in:
2025-12-18 02:09:44 +01:00
parent db601048d9
commit e6e452b030
4 changed files with 45 additions and 4 deletions

View File

@@ -1,4 +1,4 @@
import React, { useState, useMemo } from 'react';
import React, { useState, useMemo, useEffect } from 'react';
import { socketService } from '../../services/SocketService';
import { Save, Layers, Clock, Columns, LayoutTemplate, List, LayoutGrid, ChevronDown, Check, GripVertical } from 'lucide-react';
import { StackView } from '../../components/StackView';
@@ -239,8 +239,14 @@ export const DeckBuilderView: React.FC<DeckBuilderViewProps> = ({ initialPool, a
const [sortDropdownOpen, setSortDropdownOpen] = useState(false);
// --- Resize State ---
const [sidebarWidth, setSidebarWidth] = useState(320); // Initial 320px
const [poolHeightPercent, setPoolHeightPercent] = useState(60); // Initial 60% for pool (horizontal layout)
const [sidebarWidth, setSidebarWidth] = useState(() => {
const saved = localStorage.getItem('deck_sidebarWidth');
return saved ? parseInt(saved, 10) : 320;
});
const [poolHeightPercent, setPoolHeightPercent] = useState(() => {
const saved = localStorage.getItem('deck_poolHeightPercent');
return saved ? parseFloat(saved) : 60;
});
const sidebarRef = React.useRef<HTMLDivElement>(null);
const poolRef = React.useRef<HTMLDivElement>(null);
@@ -258,6 +264,15 @@ export const DeckBuilderView: React.FC<DeckBuilderViewProps> = ({ initialPool, a
if (poolRef.current) poolRef.current.style.height = `${poolHeightPercent}%`;
}, []);
// Persist Resize
useEffect(() => {
localStorage.setItem('deck_sidebarWidth', sidebarWidth.toString());
}, [sidebarWidth]);
useEffect(() => {
localStorage.setItem('deck_poolHeightPercent', poolHeightPercent.toString());
}, [poolHeightPercent]);
const [pool, setPool] = useState<any[]>(initialPool);
const [deck, setDeck] = useState<any[]>([]);
const [lands, setLands] = useState({ Plains: 0, Island: 0, Swamp: 0, Mountain: 0, Forest: 0 });

View File

@@ -61,7 +61,10 @@ export const DraftView: React.FC<DraftViewProps> = ({ draftState, currentPlayerI
// --- UI State & Persistence ---
const [sidebarWidth, setSidebarWidth] = useState(320);
const [sidebarWidth, setSidebarWidth] = useState(() => {
const saved = localStorage.getItem('draft_sidebarWidth');
return saved ? parseInt(saved, 10) : 320;
});
const [poolHeight, setPoolHeight] = useState<number>(() => {
const saved = localStorage.getItem('draft_poolHeight');
return saved ? parseInt(saved, 10) : 220;
@@ -107,6 +110,10 @@ export const DraftView: React.FC<DraftViewProps> = ({ draftState, currentPlayerI
localStorage.setItem('draft_poolHeight', poolHeight.toString());
}, [poolHeight]);
useEffect(() => {
localStorage.setItem('draft_sidebarWidth', sidebarWidth.toString());
}, [sidebarWidth]);
useEffect(() => {
localStorage.setItem('draft_cardScale', cardScale.toString());
}, [cardScale]);