aboutsummaryrefslogtreecommitdiffstats
path: root/apps/twofactor_backupcodes/src/store.js
blob: 1d5cdcafc6d8e02e5997aceca98c97d7c042148a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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,
})