From 0b1f673c05f1d6970a1b2299e7a44c0f756c3a68 Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Wed, 26 Jan 2022 21:55:36 +0000 Subject: [PATCH] Extract action for API calls --- web/src/pages/Settings.vue | 9 +-------- web/src/store/index.js | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/web/src/pages/Settings.vue b/web/src/pages/Settings.vue index b6bb4dd..cbcd344 100644 --- a/web/src/pages/Settings.vue +++ b/web/src/pages/Settings.vue @@ -39,14 +39,7 @@ export default { let formData = new FormData(); formData.append("transactions", this.$data.transactionsFile); formData.append("assignments", this.$data.assignmentsFile); - - fetch('/api/v1/budget/'+this.$store.getters.CurrentBudget.ID+"/import/ynab", { - method: "POST", - headers: { - 'Authorization': 'Bearer ' + this.$store.state.Session.Token - }, - body: formData} - ); + this.$store.dispatch("YNAB", formData); } } } diff --git a/web/src/store/index.js b/web/src/store/index.js index 9f710d0..58a8e08 100644 --- a/web/src/store/index.js +++ b/web/src/store/index.js @@ -51,12 +51,32 @@ const store = createStore({ commit(LOGIN_SUCCESS, x); this.$router.replace("/dashboard"); }) + }, + YNAB({getters, dispatch}, formData) { + return dispatch("POST", {path: "/budget/"+getters.CurrentBudget.ID+"/import/ynab", body: formData}); + }, + GET({getters}, {path}){ + return fetch("/api/v1" + path, { + headers: getters.AuthHeaders, + }) + }, + POST({getters}, {path, body}){ + return fetch("/api/v1" + path, { + method: "POST", + headers: getters.AuthHeaders, + body: body, + }) } }, getters: { Budgets(state) { return state.Budgets || []; }, + AuthHeaders(state) { + return { + 'Authorization': 'Bearer ' + state.Session.Token + } + } }, modules: { dashboard