aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_status/src/store/predefinedStatuses.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_status/src/store/predefinedStatuses.js')
-rw-r--r--apps/user_status/src/store/predefinedStatuses.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/apps/user_status/src/store/predefinedStatuses.js b/apps/user_status/src/store/predefinedStatuses.js
new file mode 100644
index 00000000000..6d592ca627e
--- /dev/null
+++ b/apps/user_status/src/store/predefinedStatuses.js
@@ -0,0 +1,53 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { fetchAllPredefinedStatuses } from '../services/predefinedStatusService.js'
+
+const state = {
+ predefinedStatuses: [],
+}
+
+const mutations = {
+
+ /**
+ * Adds a predefined status to the state
+ *
+ * @param {object} state The Vuex state
+ * @param {object} status The status to add
+ */
+ addPredefinedStatus(state, status) {
+ state.predefinedStatuses = [...state.predefinedStatuses, status]
+ },
+}
+
+const getters = {
+ statusesHaveLoaded(state) {
+ return state.predefinedStatuses.length > 0
+ },
+}
+
+const actions = {
+
+ /**
+ * Loads all predefined statuses from the server
+ *
+ * @param {object} vuex The Vuex components
+ * @param {Function} vuex.commit The Vuex commit function
+ * @param {object} vuex.state -
+ */
+ async loadAllPredefinedStatuses({ state, commit }) {
+ if (state.predefinedStatuses.length > 0) {
+ return
+ }
+
+ const statuses = await fetchAllPredefinedStatuses()
+ for (const status of statuses) {
+ commit('addPredefinedStatus', status)
+ }
+ },
+
+}
+
+export default { state, mutations, getters, actions }