From 34b9c1441923f29e85beebc978c2fd937e260a26 Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Mon, 31 Jan 2022 16:12:17 +0000 Subject: [PATCH] Redirect to dashboard and remove budget on delete --- web/src/pages/Settings.vue | 4 ++- web/src/store/index.js | 65 ++++++++++++++++++++------------------ 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/web/src/pages/Settings.vue b/web/src/pages/Settings.vue index 83a369f..1f91fa7 100644 --- a/web/src/pages/Settings.vue +++ b/web/src/pages/Settings.vue @@ -29,7 +29,9 @@ export default { headers: { 'Authorization': 'Bearer ' + this.$store.state.Session.Token }, - }) + }); + this.$store.commit("deleteBudget", this.$store.getters.CurrentBudget.ID) + this.$router.push("/") }, clearBudget() { fetch("/api/v1/budget/" + this.$store.getters.CurrentBudget.ID + "/settings/clear", { diff --git a/web/src/store/index.js b/web/src/store/index.js index fa923fc..748be06 100644 --- a/web/src/store/index.js +++ b/web/src/store/index.js @@ -2,14 +2,14 @@ import { createStore, createLogger } from 'vuex' import { LOGIN, LOGIN_SUCCESS, LOGOUT, TITLE } from './mutation-types' const store = createStore({ - state () { + state() { return { Session: { Token: null, User: null }, ShowMenu: null, - Budgets: {}, + Budgets: [], CurrentBudgetID: null, Accounts: [], CurrentAccountID: null, @@ -19,12 +19,15 @@ const store = createStore({ } }, mutations: { + deleteBudget(state, budgetid) { + delete state.Budgets[budgetid] + }, toggleMenu(state) { state.ShowMenu = !state.ShowMenu; }, initializeStore(state) { const store = localStorage.getItem("store"); - if(store){ + if (store) { this.replaceState( Object.assign(state, JSON.parse(store)) ); @@ -39,17 +42,22 @@ const store = createStore({ Token: result.Token }; for (const budget of result.Budgets) { - state.Budgets[budget.ID] = budget + state.Budgets[budget.ID] = budget } }, - setBudgets (state, budgets) { + setBudgets(state, budgets) { state.Budgets = budgets; }, addBudget(state, budget) { state.Budgets.push(budget); }, [LOGOUT](state, token) { - state.Session = { Token: null, User: null } + state.Session = { Token: null, User: null }; + state.Budgets = {}; + state.Accounts = []; + state.Categories = []; + state.Transactions = []; + state.Assignments = []; }, setCurrentBudgetID(state, budgetid) { state.CurrentBudgetID = budgetid; @@ -57,30 +65,30 @@ const store = createStore({ setCurrentAccountID(state, accountid) { state.CurrentAccountID = accountid; }, - setAccounts (state, accounts) { + setAccounts(state, accounts) { state.Accounts = accounts; }, - setTransactions(state, transactions){ + setTransactions(state, transactions) { state.Transactions = transactions; } }, actions: { - [LOGIN]({state, commit}, login) { - return fetch("/api/v1/user/login", {method: "POST", body: JSON.stringify(login)}) + [LOGIN]({ state, commit }, login) { + return fetch("/api/v1/user/login", { method: "POST", body: JSON.stringify(login) }) .then(x => x.json()) .then(x => { commit(LOGIN_SUCCESS, x); }) }, - YNAB({getters, dispatch}, formData) { - return dispatch("POST", {path: "/budget/"+getters.CurrentBudget.ID+"/import/ynab", body: formData}); + YNAB({ getters, dispatch }, formData) { + return dispatch("POST", { path: "/budget/" + getters.CurrentBudget.ID + "/import/ynab", body: formData }); }, - GET({getters}, {path}){ + GET({ getters }, { path }) { return fetch("/api/v1" + path, { headers: getters.AuthHeaders, }) }, - POST({getters}, {path, body}){ + POST({ getters }, { path, body }) { return fetch("/api/v1" + path, { method: "POST", headers: getters.AuthHeaders, @@ -96,14 +104,15 @@ const store = createStore({ const data = await response.json(); commit("setBudgets", data.Budgets); },*/ - async newBudget ({state, commit, dispatch, rootState}, budgetName) { + async newBudget({ state, commit, dispatch, rootState }, budgetName) { const result = await dispatch("POST", { - path: "/budget/new", - body: JSON.stringify({name: budgetName})}); + path: "/budget/new", + body: JSON.stringify({ name: budgetName }) + }); const response = await result.json(); commit("addBudget", response) }, - async setCurrentBudget({state, commit, dispatch, rootState}, budgetid) { + async setCurrentBudget({ state, commit, dispatch, rootState }, budgetid) { commit("setCurrentBudgetID", budgetid); if (budgetid == null) @@ -111,12 +120,12 @@ const store = createStore({ await dispatch("fetchBudget", budgetid) }, - async fetchBudget ({state, commit, dispatch, rootState}, budgetid) { - const result = await dispatch("GET", {path: "/budget/" + budgetid}); + async fetchBudget({ state, commit, dispatch, rootState }, budgetid) { + const result = await dispatch("GET", { path: "/budget/" + budgetid }); const response = await result.json(); return commit("setAccounts", response.Accounts); }, - async fetchAccount ({state, commit, rootState}, accountid) { + async fetchAccount({ state, commit, rootState }, accountid) { const result = await fetch("/api/v1/account/" + accountid + "/transactions", { headers: { 'Authorization': 'Bearer ' + rootState.Session.Token @@ -125,7 +134,7 @@ const store = createStore({ const response = await result.json(); commit("setTransactions", response.Transactions); }, - async setCurrentAccount({state, commit, dispatch, getters}, {budgetid, accountid}) { + async setCurrentAccount({ state, commit, dispatch, getters }, { budgetid, accountid }) { if (budgetid == null) return @@ -148,21 +157,17 @@ const store = createStore({ } }, CurrentBudget(state) { - if(state.CurrentBudgetID == null) + if (state.CurrentBudgetID == null) return {}; - const budgets = state.Budgets.filter(x => x.ID == state.CurrentBudgetID); - if(budgets.length > 0) - return budgets[0]; - - return {}; + return state.Budgets[state.CurrentBudgetID]; }, Accounts(state) { return state.Accounts || []; }, CurrentAccount(state) { - if(state.CurrentAccountID == null) - return {name: "Not found"}; + if (state.CurrentAccountID == null) + return { name: "Not found" }; return state.Accounts.filter(x => x.ID == state.CurrentAccountID)[0]; }, OnBudgetAccounts(state) {