diff --git a/web/src/stores/budget.ts b/web/src/stores/budget.ts index b8cf5bc..736662b 100644 --- a/web/src/stores/budget.ts +++ b/web/src/stores/budget.ts @@ -1,4 +1,3 @@ -import { useStorage } from "@vueuse/core"; import { defineStore } from "pinia"; import { useAPI } from "./api"; import { useAccountStore } from "./budget-account"; @@ -9,7 +8,7 @@ interface State { } export const useBudgetsStore = defineStore('budget', { - state: () => useStorage('budget', { + state: () => ({ CurrentBudgetID: null, }), getters: { diff --git a/web/src/stores/session.ts b/web/src/stores/session.ts index 3f879b5..eba19d1 100644 --- a/web/src/stores/session.ts +++ b/web/src/stores/session.ts @@ -1,13 +1,17 @@ -import { useStorage } from '@vueuse/core'; +import { StorageSerializers, useStorage } from '@vueuse/core'; import { defineStore } from 'pinia' import { useAPI } from './api'; interface State { - Token: string | null - User: string | null + Session: Session | null Budgets: Map, } +interface Session { + Token: string + User: string +} + export interface Budget { ID: string Name: string @@ -15,23 +19,24 @@ export interface Budget { } export const useSessionStore = defineStore('session', { - state: () => useStorage('session', { - Token: null, - User: null, - Budgets: new Map(), + state: () => ({ + Session: useStorage('session', null, undefined, { serializer: StorageSerializers.object }), + Budgets: useStorage>('budgets', new Map()), }), getters: { BudgetsList: (state) => [ ...state.Budgets.values() ], - AuthHeaders: (state) => ({'Authorization': 'Bearer ' + state.Token}), - LoggedIn: (state) => state.Token != null, + AuthHeaders: (state) => ({'Authorization': 'Bearer ' + state.Session.Token}), + LoggedIn: (state) => state.Session != null, }, actions: { setTitle(title : string) { document.title = "Budgeteer - " + title; }, loginSuccess(x : any) { - this.User = x.User; - this.Token = x.Token; + this.Session = { + User: x.User, + Token: x.Token, + }, this.Budgets = x.Budgets; }, async login(login: any) { diff --git a/web/src/stores/settings.ts b/web/src/stores/settings.ts index f8c10f4..c63e70a 100644 --- a/web/src/stores/settings.ts +++ b/web/src/stores/settings.ts @@ -2,21 +2,27 @@ import { useStorage } from "@vueuse/core"; import { defineStore } from "pinia"; interface State { - ShowMenu: boolean | null, - ExpandMenu: boolean, + Menu: MenuSettings +} + +interface MenuSettings { + Show: boolean | null, + Expand: boolean | null, } export const useSettingsStore = defineStore('settings', { - state: () => useStorage('settings', { - ShowMenu: null, - ExpandMenu: false, + state: () => ({ + Menu: useStorage('settings', { + Show: null, + Expand: false, + }), }), actions: { toggleMenu() { - this.ShowMenu = !this.ShowMenu; + this.Menu.Show = !this.Menu.Show; }, toggleMenuSize() { - this.ExpandMenu = !this.ExpandMenu; + this.Menu.Expand = !this.Menu.Expand; }, } }); \ No newline at end of file