diff options
Diffstat (limited to 'apps/twofactor_backupcodes/src/store.js')
-rw-r--r-- | apps/twofactor_backupcodes/src/store.js | 53 |
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, +}) |