From b350fe7d74346f307a81d6893eba2d8aa142eb6e Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Mon, 31 Jan 2022 21:32:19 +0000 Subject: [PATCH] Handle some differences between js/ts --- web/index.html | 2 +- web/src/store/index.ts | 41 ++++++++++++++++++++++++++--------------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/web/index.html b/web/index.html index 030a6ff..11603f8 100644 --- a/web/index.html +++ b/web/index.html @@ -8,6 +8,6 @@
- + diff --git a/web/src/store/index.ts b/web/src/store/index.ts index 7f2bd19..89eac63 100644 --- a/web/src/store/index.ts +++ b/web/src/store/index.ts @@ -20,6 +20,7 @@ export interface State { export interface Budget { ID: string + Name: string } export interface Account { @@ -53,11 +54,24 @@ export const store = createStore({ }, initializeStore(state) { const store = localStorage.getItem("store"); - if (store) { - this.replaceState( - Object.assign(state, JSON.parse(store)) - ); - } + if (!store) + return; + + const restoredState = JSON.parse(store); + if(!restoredState) + return; + + state.Session = restoredState.Session; + state.CurrentBudgetID= restoredState.CurrentBudgetID; + state.CurrentAccountID= restoredState.CurrentAccountID; + state.ShowMenu = restoredState.ShowMenu; + + for (const budget of restoredState.Budgets) { + state.Budgets.set(budget[0], budget[1]); + } + for (const account of restoredState.Accounts) { + state.Accounts.set(account[0], account[1]); + } }, [TITLE](state, title) { document.title = "Budgeteer - " + title; @@ -71,9 +85,6 @@ export const store = createStore({ state.Budgets.set(budget.ID, budget) } }, - setBudgets(state, budgets) { - state.Budgets = budgets; - }, addBudget(state, budget) { state.Budgets.set(budget.ID, budget); }, @@ -178,7 +189,10 @@ export const store = createStore({ }, getters: { Budgets(state) { - return state.Budgets || []; + return state.Budgets.values(); + }, + Accounts(state) { + return state.Accounts.values(); }, AuthHeaders(state) { return { @@ -189,10 +203,7 @@ export const store = createStore({ if (state.CurrentBudgetID == null) return {}; - return state.Budgets.get(state.CurrentBudgetID); - }, - Accounts(state) { - return state.Accounts || []; + return state.Budgets.get(state.CurrentBudgetID) || {}; }, CurrentAccount(state) { if (state.CurrentAccountID == null) @@ -215,8 +226,8 @@ export const store = createStore({ store.subscribe((mutation, state) => { let persistedState = { Session: state.Session, - Budgets: state.Budgets, - Accounts: state.Accounts, + Budgets: [...state.Budgets], + Accounts: [...state.Accounts], CurrentBudgetID: state.CurrentBudgetID, CurrentAccountID: state.CurrentAccountID, ShowMenu: state.ShowMenu