From a66bb599cedcd152fd7898abe901e47fed32f190 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Thu, 24 Oct 2019 23:15:40 +0200 Subject: [PATCH] Add try/catch to actions that moderate users --- src/store/modules/users.js | 79 ++++++++++++++++++++++++++++++-------- src/views/users/index.vue | 13 +------ 2 files changed, 64 insertions(+), 28 deletions(-) diff --git a/src/store/modules/users.js b/src/store/modules/users.js index ae5ed146..5513d7ca 100644 --- a/src/store/modules/users.js +++ b/src/store/modules/users.js @@ -1,3 +1,5 @@ +import { Message } from 'element-ui' +import i18n from '@/lang' import { activateUsers, addRight, @@ -78,8 +80,13 @@ const users = { commit('SWAP_USERS', updatedUsers) const usersNicknames = users.map(user => user.nickname) - await activateUsers(usersNicknames, getters.authHost, getters.token) - dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + try { + await activateUsers(usersNicknames, getters.authHost, getters.token) + } catch (_e) { + return + } finally { + dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + } }, async AddRight({ commit, dispatch, getters, state }, { users, right }) { const updatedUsers = users.map(user => { @@ -88,8 +95,13 @@ const users = { commit('SWAP_USERS', updatedUsers) const usersNicknames = users.map(user => user.nickname) - await addRight(usersNicknames, right, getters.authHost, getters.token) - dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + try { + await addRight(usersNicknames, right, getters.authHost, getters.token) + } catch (_e) { + return + } finally { + dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + } }, async AddTag({ commit, dispatch, getters, state }, { users, tag }) { const updatedUsers = users.map(user => { @@ -98,16 +110,31 @@ const users = { commit('SWAP_USERS', updatedUsers) const nicknames = users.map(user => user.nickname) - await tagUser(nicknames, [tag], getters.authHost, getters.token) - dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + try { + await tagUser(nicknames, [tag], getters.authHost, getters.token) + } catch (_e) { + return + } finally { + dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + } }, async ClearFilters({ commit, dispatch, state }) { commit('CLEAR_USERS_FILTERS') dispatch('SearchUsers', { query: state.searchQuery, page: 1 }) }, async CreateNewAccount({ dispatch, getters, state }, { nickname, email, password }) { - await createNewAccount(nickname, email, password, getters.authHost, getters.token) - dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + try { + await createNewAccount(nickname, email, password, getters.authHost, getters.token) + } catch (_e) { + return + } finally { + dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + } + Message({ + message: i18n.t('users.accountCreated'), + type: 'success', + duration: 5 * 1000 + }) }, async DeactivateUsers({ commit, dispatch, getters, state }, users) { const updatedUsers = users.map(user => { @@ -116,8 +143,13 @@ const users = { commit('SWAP_USERS', updatedUsers) const usersNicknames = users.map(user => user.nickname) - await deactivateUsers(usersNicknames, getters.authHost, getters.token) - dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + try { + await deactivateUsers(usersNicknames, getters.authHost, getters.token) + } catch (_e) { + return + } finally { + dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + } }, async DeleteRight({ commit, dispatch, getters, state }, { users, right }) { const updatedUsers = users.map(user => { @@ -126,16 +158,24 @@ const users = { commit('SWAP_USERS', updatedUsers) const usersNicknames = users.map(user => user.nickname) - await deleteRight(usersNicknames, right, getters.authHost, getters.token) - dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + try { + await deleteRight(usersNicknames, right, getters.authHost, getters.token) + } catch (_e) { + return + } finally { + dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + } }, async DeleteUsers({ commit, getters, state }, users) { + const usersNicknames = users.map(user => user.nickname) + try { + await deleteUsers(usersNicknames, getters.authHost, getters.token) + } catch (_e) { + return + } const deletedUsersIds = users.map(deletedUser => deletedUser.id) const updatedUsers = state.fetchedUsers.filter(user => !deletedUsersIds.includes(user.id)) commit('SET_USERS', updatedUsers) - - const usersNicknames = users.map(user => user.nickname) - await deleteUsers(usersNicknames, getters.authHost, getters.token) }, async RequirePasswordReset({ getters }, user) { await requirePasswordReset(user.nickname, getters.authHost, getters.token) @@ -161,8 +201,13 @@ const users = { commit('SWAP_USERS', updatedUsers) const nicknames = users.map(user => user.nickname) - await untagUser(nicknames, [tag], getters.authHost, getters.token) - dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + try { + await untagUser(nicknames, [tag], getters.authHost, getters.token) + } catch (_e) { + return + } finally { + dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage }) + } }, async SearchUsers({ commit, dispatch, state, getters }, { query, page }) { if (query.length === 0) { diff --git a/src/views/users/index.vue b/src/views/users/index.vue index 9e592846..4e67ee70 100644 --- a/src/views/users/index.vue +++ b/src/views/users/index.vue @@ -245,17 +245,8 @@ export default { this.$refs.usersTable.clearSelection() }, async createNewAccount(accountData) { - try { - await this.$store.dispatch('CreateNewAccount', accountData) - } catch (_e) { - return - } finally { - this.createAccountDialogOpen = false - } - this.$message({ - type: 'success', - message: this.$t('users.accountCreated') - }) + await this.$store.dispatch('CreateNewAccount', accountData) + this.createAccountDialogOpen = false }, getFirstLetter(str) { return str.charAt(0).toUpperCase()