diff --git a/src/app/core/persistence/storage-keys.const.ts b/src/app/core/persistence/storage-keys.const.ts index c596e0a7e1..c6e2c6995a 100644 --- a/src/app/core/persistence/storage-keys.const.ts +++ b/src/app/core/persistence/storage-keys.const.ts @@ -35,6 +35,8 @@ export enum LS { WEB_APP_INSTALL = 'WEB_APP_INSTALL', IS_ADD_TO_BOTTOM = 'SUP_IS_ADD_TO_BOTTOM', + + FOCUS_MODE_MODE = 'FOCUS_MODE_MODE', } // SESSION STORAGE diff --git a/src/app/features/focus-mode/store/focus-mode.effects.ts b/src/app/features/focus-mode/store/focus-mode.effects.ts index 8fae46527d..eee2209295 100644 --- a/src/app/features/focus-mode/store/focus-mode.effects.ts +++ b/src/app/features/focus-mode/store/focus-mode.effects.ts @@ -3,6 +3,7 @@ import { Actions, createEffect, ofType } from '@ngrx/effects'; import { cancelFocusSession, focusSessionDone, + setFocusModeMode, setFocusSessionActivePage, setFocusSessionTimeElapsed, setFocusSessionTimeToGo, @@ -39,6 +40,7 @@ import { IS_ELECTRON } from '../../../app.constants'; import { IdleService } from '../../idle/idle.service'; import { FocusModeMode, FocusModePage } from '../focus-mode.const'; import { selectFocusModeConfig } from '../../config/store/global-config.reducer'; +import { LS } from '../../../core/persistence/storage-keys.const'; const TICK_DURATION = 500; const SESSION_DONE_SOUND = 'positive.ogg'; @@ -191,4 +193,15 @@ export class FocusModeEffects { ), { dispatch: false }, ); + + modeToLS$ = createEffect( + () => + this._actions$.pipe( + ofType(setFocusModeMode), + tap(({ mode }) => { + localStorage.setItem(LS.FOCUS_MODE_MODE, mode); + }), + ), + { dispatch: false }, + ); } diff --git a/src/app/features/focus-mode/store/focus-mode.reducer.ts b/src/app/features/focus-mode/store/focus-mode.reducer.ts index 80bf5aa0de..a0e6aa9c9d 100644 --- a/src/app/features/focus-mode/store/focus-mode.reducer.ts +++ b/src/app/features/focus-mode/store/focus-mode.reducer.ts @@ -12,6 +12,7 @@ import { startFocusSession, } from './focus-mode.actions'; import { FocusModeMode, FocusModePage } from '../focus-mode.const'; +import { LS } from '../../../core/persistence/storage-keys.const'; const DEFAULT_FOCUS_SESSION_DURATION = 25 * 60 * 1000; const USE_REMAINING_SESSION_TIME_THRESHOLD = 60 * 1000; @@ -28,6 +29,8 @@ export interface State { lastFocusSessionDuration: number; } +const focusModeModeFromLS = localStorage.getItem(LS.FOCUS_MODE_MODE); + export const initialState: State = { isFocusOverlayShown: false, isFocusSessionRunning: false, @@ -36,8 +39,9 @@ export const initialState: State = { focusSessionTimeToGo: 0, focusSessionTimeElapsed: 0, focusSessionActivePage: FocusModePage.TaskSelection, - // TODO get from LS if available - mode: FocusModeMode.Flowtime, + mode: Object.values(FocusModeMode).includes(focusModeModeFromLS as any) + ? (focusModeModeFromLS as any) + : FocusModeMode.Flowtime, }; export const focusModeReducer = createReducer(