diff --git a/src/app/App.tsx b/src/app/App.tsx index 96b4d2c5..afc110c3 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -5,6 +5,7 @@ import { Classes } from '@blueprintjs/core'; import React, { useEffect, useState } from 'react'; import { useDispatch } from 'react-redux'; import SplitterLayout from 'react-splitter-layout'; +import { useLocalStorage } from 'usehooks-ts'; import Editor, { EditorType } from '../editor/Editor'; import Explorer from '../explorer/Explorer'; import { useSelector } from '../reducers'; @@ -134,6 +135,9 @@ const App: React.VoidFunctionComponent = ({ onEditorChanged }) => { const [isDragging, setIsDragging] = useState(false); const dispatch = useDispatch(); + const [docsSplit, setDocsSplit] = useLocalStorage('app-docs-split', 30); + const [terminalSplit, setTerminalSplit] = useLocalStorage('app-terminal-split', 30); + // darkMode class has to be applied to body element, otherwise it won't // affect portals useEffect(() => { @@ -161,25 +165,14 @@ const App: React.VoidFunctionComponent = ({ onEditorChanged }) => { onDragStart={(): void => setIsDragging(true)} onDragEnd={(): void => setIsDragging(false)} percentage={true} - secondaryInitialSize={Number( - localStorage.getItem('app-docs-split') || 30, - )} - onSecondaryPaneSizeChange={(value): void => - localStorage.setItem('app-docs-split', String(value)) - } + secondaryInitialSize={docsSplit} + onSecondaryPaneSizeChange={setDocsSplit} > - localStorage.setItem( - 'app-terminal-split', - String(value), - ) - } + secondaryInitialSize={terminalSplit} + onSecondaryPaneSizeChange={setTerminalSplit} > {