From d593d20cecb82928d0210cb769e07d28b728707f Mon Sep 17 00:00:00 2001 From: rufinomec-afk Date: Mon, 8 Jun 2026 11:56:28 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20persiste=20passo=20do=20pre=C3=A7o=20e?= =?UTF-8?q?=20modo=20de=20exibi=C3=A7=C3=A3o=20no=20localStorage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/App.jsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 5eb2b60..4e270b0 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -14,10 +14,10 @@ export default function App() { const [lastBid, setLastBid] = useState(0); const [lastAsk, setLastAsk] = useState(0); - // Phase 2 & 4 Settings - const [stepMultiplier, setStepMultiplier] = useState(75); - const [viewMode, setViewMode] = useState('bidask'); // 'bidask' or 'delta' - const [imbalanceRatio, setImbalanceRatio] = useState(300); // percentage + // Phase 2 & 4 Settings — persistidos no localStorage + const [stepMultiplier, setStepMultiplier] = useState(() => Number(localStorage.getItem('yc_step') || 75)); + const [viewMode, setViewMode] = useState(() => localStorage.getItem('yc_viewmode') || 'bidask'); + const [imbalanceRatio, setImbalanceRatio] = useState(300); // Cluster aggregator config const [closeMode, setCloseMode] = useState('delta'); @@ -135,6 +135,10 @@ export default function App() { const wsStatus = useWebSocket(WS_URL, handleWebSocketMessage); + // Persistência local + useEffect(() => { localStorage.setItem('yc_step', stepMultiplier); }, [stepMultiplier]); + useEffect(() => { localStorage.setItem('yc_viewmode', viewMode); }, [viewMode]); + useEffect(() => { fetchHistory(); fetchConfig();