diff --git a/src/api/users.js b/src/api/users.js index 9351cc45c54fbc88c8da54a633a7be7d1f912760..12e13e6f5e9a5e0260dbb4c62445066ed8ee1aae 100644 --- a/src/api/users.js +++ b/src/api/users.js @@ -2,6 +2,16 @@ import request from '@/utils/request' import { getToken } from '@/utils/auth' import { baseName } from './utils' +export async function activateUsers(nicknames, authHost, token) { + return await request({ + baseURL: baseName(authHost), + url: `/api/pleroma/admin/users/activate`, + method: 'patch', + headers: authHeaders(token), + data: { nicknames } + }) +} + export async function addRight(nicknames, right, authHost, token) { return await request({ baseURL: baseName(authHost), @@ -22,6 +32,16 @@ export async function createNewAccount(nickname, email, password, authHost, toke }) } +export async function deactivateUsers(nicknames, authHost, token) { + return await request({ + baseURL: baseName(authHost), + url: `/api/pleroma/admin/users/deactivate`, + method: 'patch', + headers: authHeaders(token), + data: { nicknames } + }) +} + export async function deleteRight(nicknames, right, authHost, token) { return await request({ baseURL: baseName(authHost), @@ -96,15 +116,6 @@ export async function tagUser(nicknames, tags, authHost, token) { }) } -export async function toggleUserActivation(nickname, authHost, token) { - return await request({ - baseURL: baseName(authHost), - url: `/api/pleroma/admin/users/${nickname}/toggle_activation`, - method: 'patch', - headers: authHeaders(token) - }) -} - export async function untagUser(nicknames, tags, authHost, token) { return await request({ baseURL: baseName(authHost), diff --git a/src/store/modules/users.js b/src/store/modules/users.js index f087d930f3cb7180e91af4e20c729fd8f233d922..f35ad9aad264075ffccf03201bc9a41e2d954c0e 100644 --- a/src/store/modules/users.js +++ b/src/store/modules/users.js @@ -1,13 +1,14 @@ import { + activateUsers, addRight, createNewAccount, + deactivateUsers, deleteRight, deleteUser, fetchUsers, getPasswordResetToken, searchUsers, tagUser, - toggleUserActivation, untagUser, requirePasswordReset } from '@/api/users' @@ -76,6 +77,10 @@ const users = { } }, actions: { + async ActivateUsers({ commit, getters }, nicknames) { + const { data } = await activateUsers(nicknames, getters.authHost, getters.token) + commit('SWAP_USERS', data) + }, async AddRight({ dispatch, getters, state }, { users, right }) { const usersNicknames = users.map(user => user.nickname) await addRight(usersNicknames, right, getters.authHost, getters.token) @@ -98,6 +103,10 @@ const users = { await createNewAccount(nickname, email, password, getters.authHost, getters.token) dispatch('FetchUsers', { page: state.currentPage }) }, + async DeactivateUsers({ commit, getters }, nicknames) { + const { data } = await deactivateUsers(nicknames, getters.authHost, getters.token) + commit('SWAP_USERS', data) + }, async DeleteRight({ dispatch, getters, state }, { users, right }) { const usersNicknames = users.map(user => user.nickname) await deleteRight(usersNicknames, right, getters.authHost, getters.token) @@ -148,10 +157,6 @@ const users = { loadUsers(commit, page, response.data) } }, - async ToggleUserActivation({ commit, getters }, nickname) { - const { data } = await toggleUserActivation(nickname, getters.authHost, getters.token) - commit('SWAP_USER', data) - }, async ToggleUsersFilter({ commit, dispatch, state }, filters) { const defaultFilters = { local: false, diff --git a/src/views/reports/components/TimelineItem.vue b/src/views/reports/components/TimelineItem.vue index 771298aa7a807c0ec352a4582c699a419727231a..96433a2293d31a400e44a8771c19de611a697d9e 100644 --- a/src/views/reports/components/TimelineItem.vue +++ b/src/views/reports/components/TimelineItem.vue @@ -21,7 +21,7 @@ <el-dropdown-menu slot="dropdown"> <el-dropdown-item v-if="showDeactivatedButton(report.account)" - @click.native="handleDeactivation(report.account)"> + @click.native="toggleActivation(report.account)"> {{ report.account.deactivated ? $t('users.activateAccount') : $t('users.deactivateAccount') }} </el-dropdown-item> <el-dropdown-item @@ -139,17 +139,19 @@ export default { return 'primary' } }, + handleDeletion(user) { + this.$store.dispatch('DeleteUser', user) + }, parseTimestamp(timestamp) { return moment(timestamp).format('L HH:mm') }, showDeactivatedButton(id) { return this.$store.state.user.id !== id }, - handleDeactivation({ nickname }) { - this.$store.dispatch('ToggleUserActivation', nickname) - }, - handleDeletion(user) { - this.$store.dispatch('DeleteUser', user) + toggleActivation({ deactivated, nickname }) { + deactivated + ? this.$store.dispatch('ActivateUsers', [nickname]) + : this.$store.dispatch('DeactivateUsers', [nickname]) }, toggleTag(user, tag) { user.tags.includes(tag) diff --git a/src/views/users/index.vue b/src/views/users/index.vue index cce607dd08cd708d7b955ccebaa3942405c79132..bd2cd7c42932f38665431358b9f03369645af350 100644 --- a/src/views/users/index.vue +++ b/src/views/users/index.vue @@ -80,7 +80,7 @@ <el-dropdown-item v-if="showDeactivatedButton(scope.row.id)" :divided="showAdminAction(scope.row)" - @click.native="handleDeactivation(scope.row)"> + @click.native="toggleActivation(scope.row)"> {{ scope.row.deactivated ? $t('users.activateAccount') : $t('users.deactivateAccount') }} </el-dropdown-item> <el-dropdown-item @@ -275,8 +275,10 @@ export default { this.$store.dispatch('RequirePasswordReset', { nickname }) }, - handleDeactivation({ nickname }) { - this.$store.dispatch('ToggleUserActivation', nickname) + toggleActivation({ deactivated, nickname }) { + deactivated + ? this.$store.dispatch('ActivateUsers', [nickname]) + : this.$store.dispatch('DeactivateUsers', [nickname]) }, handleDeletion(user) { this.$store.dispatch('DeleteUser', user)