aboutsummaryrefslogtreecommitdiffstats
path: root/apps/twofactor_backupcodes/src/store.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/twofactor_backupcodes/src/store.js')
-rw-r--r--apps/twofactor_backupcodes/src/store.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/apps/twofactor_backupcodes/src/store.js b/apps/twofactor_backupcodes/src/store.js
new file mode 100644
index 00000000000..1d5cdcafc6d
--- /dev/null
+++ b/apps/twofactor_backupcodes/src/store.js
@@ -0,0 +1,53 @@
+/**
+ * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import Vue from 'vue'
+import Vuex, { Store } from 'vuex'
+import { generateCodes } from './service/BackupCodesService.js'
+
+Vue.use(Vuex)
+
+const state = {
+ enabled: false,
+ total: 0,
+ used: 0,
+ codes: [],
+}
+
+const mutations = {
+ setEnabled(state, enabled) {
+ Vue.set(state, 'enabled', enabled)
+ },
+ setTotal(state, total) {
+ Vue.set(state, 'total', total)
+ },
+ setUsed(state, used) {
+ Vue.set(state, 'used', used)
+ },
+ setCodes(state, codes) {
+ Vue.set(state, 'codes', codes)
+ },
+}
+
+const actions = {
+ generate({ commit }) {
+ commit('setEnabled', false)
+
+ return generateCodes().then(({ codes, state }) => {
+ commit('setEnabled', state.enabled)
+ commit('setTotal', state.total)
+ commit('setUsed', state.used)
+ commit('setCodes', codes)
+ return true
+ })
+ },
+}
+
+export default new Store({
+ strict: process.env.NODE_ENV !== 'production',
+ state,
+ mutations,
+ actions,
+})