mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-11 18:33:53 +00:00
9e04a1dcfa
--------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Carlos Valente <34649812+cpvalente@users.noreply.github.com> Co-authored-by: Carlos Valente <carlosvalente@pm.me>
38 lines
814 B
TypeScript
38 lines
814 B
TypeScript
import { create } from 'zustand';
|
|
|
|
export enum AppMode {
|
|
Run = 'run',
|
|
Edit = 'edit',
|
|
Freeze = 'freeze',
|
|
}
|
|
|
|
const appModeKey = 'ontime-app-mode';
|
|
|
|
function getModeFromSession() {
|
|
return sessionStorage.getItem(appModeKey) === AppMode.Run ? AppMode.Run : AppMode.Edit;
|
|
}
|
|
|
|
function persistModeToSession(mode: AppMode) {
|
|
sessionStorage.setItem(appModeKey, mode);
|
|
}
|
|
|
|
type AppModeStore = {
|
|
mode: AppMode;
|
|
setMode: (mode: AppMode) => void;
|
|
cursor: string | null;
|
|
setCursor: (cursor: string | null) => void;
|
|
};
|
|
|
|
export const useAppMode = create<AppModeStore>()((set) => ({
|
|
mode: getModeFromSession(),
|
|
cursor: null,
|
|
setMode: (mode: AppMode) => {
|
|
persistModeToSession(mode);
|
|
|
|
return set(() => {
|
|
return { mode };
|
|
});
|
|
},
|
|
setCursor: (cursor: string | null) => set({ cursor }),
|
|
}));
|