diff --git a/components/system/StartMenu/Sidebar/index.tsx b/components/system/StartMenu/Sidebar/index.tsx index 85839299..e042b92e 100644 --- a/components/system/StartMenu/Sidebar/index.tsx +++ b/components/system/StartMenu/Sidebar/index.tsx @@ -12,6 +12,7 @@ import StyledSidebar from "components/system/StartMenu/Sidebar/StyledSidebar"; import { useFileSystem } from "contexts/fileSystem"; import { resetStorage } from "contexts/fileSystem/functions"; import { useProcesses } from "contexts/process"; +import { useSession } from "contexts/session"; import { useEffect, useMemo, useRef, useState } from "react"; import { useTheme } from "styled-components"; import { HOME, TASKBAR_HEIGHT } from "utils/constants"; @@ -36,6 +37,7 @@ type SidebarProps = { const Sidebar: FC = ({ height }) => { const { rootFs } = useFileSystem(); const { open } = useProcesses(); + const { setHaltSession } = useSession(); const [collapsed, setCollapsed] = useState(true); const expandTimer = useRef(); const clearTimer = (): void => { @@ -103,8 +105,10 @@ const Sidebar: FC = ({ height }) => { } : undefined, { - action: () => - resetStorage(rootFs).finally(() => window.location.reload()), + action: () => { + setHaltSession(true); + resetStorage(rootFs).finally(() => window.location.reload()); + }, icon: , name: "Power", tooltip: "Clears session data and reloads the page.", diff --git a/contexts/session/types.ts b/contexts/session/types.ts index d695aa9d..97d630ef 100644 --- a/contexts/session/types.ts +++ b/contexts/session/types.ts @@ -47,6 +47,7 @@ export type SessionContextState = SessionData & { sessionLoaded: boolean; setClockSource: React.Dispatch>; setForegroundId: React.Dispatch>; + setHaltSession: React.Dispatch>; setIconPositions: React.Dispatch>; setRunHistory: React.Dispatch>; setSortOrder: ( diff --git a/contexts/session/useSessionContextState.ts b/contexts/session/useSessionContextState.ts index 6a356b47..a00f565b 100644 --- a/contexts/session/useSessionContextState.ts +++ b/contexts/session/useSessionContextState.ts @@ -55,9 +55,10 @@ const useSessionContextState = (): SessionContextState => { }, [] ); + const [haltSession, setHaltSession] = useState(false); useEffect(() => { - if (sessionLoaded) { + if (sessionLoaded && !haltSession) { writeFile( SESSION_FILE, JSON.stringify({ @@ -75,6 +76,7 @@ const useSessionContextState = (): SessionContextState => { } }, [ clockSource, + haltSession, iconPositions, runHistory, sessionLoaded, @@ -149,6 +151,7 @@ const useSessionContextState = (): SessionContextState => { sessionLoaded, setClockSource, setForegroundId, + setHaltSession, setIconPositions, setRunHistory, setSortOrder,