diff options
Diffstat (limited to 'src/state/models')
-rw-r--r-- | src/state/models/root-store.ts | 11 | ||||
-rw-r--r-- | src/state/models/session.ts | 21 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/state/models/root-store.ts b/src/state/models/root-store.ts index 164dfcced..143c59ea1 100644 --- a/src/state/models/root-store.ts +++ b/src/state/models/root-store.ts @@ -4,12 +4,21 @@ import {Instance, SnapshotOut, types} from 'mobx-state-tree' import {createContext, useContext} from 'react' +import {SessionModel, createDefaultSession} from './session' -export const RootStoreModel = types.model('RootStore').props({}) +export const RootStoreModel = types.model('RootStore').props({ + session: SessionModel, +}) export interface RootStore extends Instance<typeof RootStoreModel> {} export interface RootStoreSnapshot extends SnapshotOut<typeof RootStoreModel> {} +export function createDefaultRootStore() { + return { + session: createDefaultSession(), + } +} + // react context & hook utilities const RootStoreContext = createContext<RootStore>({} as RootStore) export const RootStoreProvider = RootStoreContext.Provider diff --git a/src/state/models/session.ts b/src/state/models/session.ts new file mode 100644 index 000000000..675feb8bc --- /dev/null +++ b/src/state/models/session.ts @@ -0,0 +1,21 @@ +import {Instance, SnapshotOut, types} from 'mobx-state-tree' + +export const SessionModel = types + .model('Session') + .props({ + isAuthed: types.boolean, + }) + .actions(self => ({ + setAuthed: (v: boolean) => { + self.isAuthed = v + }, + })) + +export interface Session extends Instance<typeof SessionModel> {} +export interface SessionSnapshot extends SnapshotOut<typeof SessionModel> {} + +export function createDefaultSession() { + return { + isAuthed: false, + } +} |