sforkowany z mirror/soapbox
Admin: refactor actions to use accountIds instead of nicknames
rodzic
a89ea524a9
commit
2f6cd35f38
|
@ -142,41 +142,44 @@ export function fetchUsers(filters = [], page = 1, pageSize = 50) {
|
|||
};
|
||||
}
|
||||
|
||||
export function deactivateUsers(nicknames) {
|
||||
export function deactivateUsers(accountIds) {
|
||||
return (dispatch, getState) => {
|
||||
dispatch({ type: ADMIN_USERS_DEACTIVATE_REQUEST, nicknames });
|
||||
const nicknames = nicknamesFromIds(getState, accountIds);
|
||||
dispatch({ type: ADMIN_USERS_DEACTIVATE_REQUEST, accountIds });
|
||||
return api(getState)
|
||||
.patch('/api/pleroma/admin/users/deactivate', { nicknames })
|
||||
.then(({ data: { users } }) => {
|
||||
dispatch({ type: ADMIN_USERS_DEACTIVATE_SUCCESS, users, nicknames });
|
||||
dispatch({ type: ADMIN_USERS_DEACTIVATE_SUCCESS, users, accountIds });
|
||||
}).catch(error => {
|
||||
dispatch({ type: ADMIN_USERS_DEACTIVATE_FAIL, error, nicknames });
|
||||
dispatch({ type: ADMIN_USERS_DEACTIVATE_FAIL, error, accountIds });
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
export function deleteUsers(nicknames) {
|
||||
export function deleteUsers(accountIds) {
|
||||
return (dispatch, getState) => {
|
||||
dispatch({ type: ADMIN_USERS_DELETE_REQUEST, nicknames });
|
||||
const nicknames = nicknamesFromIds(getState, accountIds);
|
||||
dispatch({ type: ADMIN_USERS_DELETE_REQUEST, accountIds });
|
||||
return api(getState)
|
||||
.delete('/api/pleroma/admin/users', { data: { nicknames } })
|
||||
.then(({ data: nicknames }) => {
|
||||
dispatch({ type: ADMIN_USERS_DELETE_SUCCESS, nicknames });
|
||||
dispatch({ type: ADMIN_USERS_DELETE_SUCCESS, nicknames, accountIds });
|
||||
}).catch(error => {
|
||||
dispatch({ type: ADMIN_USERS_DELETE_FAIL, error, nicknames });
|
||||
dispatch({ type: ADMIN_USERS_DELETE_FAIL, error, accountIds });
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
export function approveUsers(nicknames) {
|
||||
export function approveUsers(accountIds) {
|
||||
return (dispatch, getState) => {
|
||||
dispatch({ type: ADMIN_USERS_APPROVE_REQUEST, nicknames });
|
||||
const nicknames = nicknamesFromIds(getState, accountIds);
|
||||
dispatch({ type: ADMIN_USERS_APPROVE_REQUEST, accountIds });
|
||||
return api(getState)
|
||||
.patch('/api/pleroma/admin/users/approve', { nicknames })
|
||||
.then(({ data: { users } }) => {
|
||||
dispatch({ type: ADMIN_USERS_APPROVE_SUCCESS, users, nicknames });
|
||||
dispatch({ type: ADMIN_USERS_APPROVE_SUCCESS, users, accountIds });
|
||||
}).catch(error => {
|
||||
dispatch({ type: ADMIN_USERS_APPROVE_FAIL, error, nicknames });
|
||||
dispatch({ type: ADMIN_USERS_APPROVE_FAIL, error, accountIds });
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ export function deactivateUserModal(intl, accountId, afterConfirm = () => {}) {
|
|||
message: intl.formatMessage(messages.deactivateUserPrompt, { acct }),
|
||||
confirm: intl.formatMessage(messages.deactivateUserConfirm, { name }),
|
||||
onConfirm: () => {
|
||||
dispatch(deactivateUsers([acct])).then(() => {
|
||||
dispatch(deactivateUsers([accountId])).then(() => {
|
||||
const message = intl.formatMessage(messages.userDeactivated, { acct });
|
||||
dispatch(snackbar.success(message));
|
||||
afterConfirm();
|
||||
|
@ -74,7 +74,7 @@ export function deleteUserModal(intl, accountId, afterConfirm = () => {}) {
|
|||
confirm,
|
||||
checkbox,
|
||||
onConfirm: () => {
|
||||
dispatch(deleteUsers([acct])).then(() => {
|
||||
dispatch(deleteUsers([accountId])).then(() => {
|
||||
const message = intl.formatMessage(messages.userDeleted, { acct });
|
||||
dispatch(fetchAccountByUsername(acct));
|
||||
dispatch(snackbar.success(message));
|
||||
|
|
|
@ -23,7 +23,12 @@ import {
|
|||
ADMIN_REMOVE_PERMISSION_GROUP_REQUEST,
|
||||
ADMIN_REMOVE_PERMISSION_GROUP_FAIL,
|
||||
} from 'soapbox/actions/admin';
|
||||
import { ADMIN_USERS_DELETE_REQUEST } from 'soapbox/actions/admin';
|
||||
import {
|
||||
ADMIN_USERS_DELETE_REQUEST,
|
||||
ADMIN_USERS_DELETE_FAIL,
|
||||
ADMIN_USERS_DEACTIVATE_REQUEST,
|
||||
ADMIN_USERS_DEACTIVATE_FAIL,
|
||||
} from 'soapbox/actions/admin';
|
||||
|
||||
const initialState = ImmutableMap();
|
||||
|
||||
|
@ -80,17 +85,10 @@ const removeTags = (state, accountIds, tags) => {
|
|||
});
|
||||
};
|
||||
|
||||
const nicknamesToIds = (state, nicknames) => {
|
||||
return nicknames.map(nickname => {
|
||||
return state.find(account => account.get('acct') === nickname, null, ImmutableMap()).get('id');
|
||||
});
|
||||
};
|
||||
|
||||
const setDeactivated = (state, nicknames) => {
|
||||
const ids = nicknamesToIds(state, nicknames);
|
||||
const setActive = (state, accountIds, active) => {
|
||||
return state.withMutations(state => {
|
||||
ids.forEach(id => {
|
||||
state.setIn([id, 'pleroma', 'is_active'], false);
|
||||
accountIds.forEach(id => {
|
||||
state.setIn([id, 'pleroma', 'is_active'], active);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
@ -210,7 +208,11 @@ export default function accounts(state = initialState, action) {
|
|||
case ADMIN_ADD_PERMISSION_GROUP_FAIL:
|
||||
return removePermission(state, action.accountIds, action.permissionGroup);
|
||||
case ADMIN_USERS_DELETE_REQUEST:
|
||||
return setDeactivated(state, action.nicknames);
|
||||
case ADMIN_USERS_DEACTIVATE_REQUEST:
|
||||
return setActive(state, action.accountIds, false);
|
||||
case ADMIN_USERS_DELETE_FAIL:
|
||||
case ADMIN_USERS_DEACTIVATE_FAIL:
|
||||
return setActive(state, action.accountIds, true);
|
||||
case ADMIN_USERS_FETCH_SUCCESS:
|
||||
return importAdminUsers(state, action.users);
|
||||
default:
|
||||
|
|
|
@ -41,11 +41,11 @@ function importUsers(state, users) {
|
|||
});
|
||||
}
|
||||
|
||||
function deleteUsers(state, nicknames) {
|
||||
function deleteUsers(state, accountIds) {
|
||||
return state.withMutations(state => {
|
||||
nicknames.forEach(nickname => {
|
||||
state.update('awaitingApproval', orderedSet => orderedSet.delete(nickname));
|
||||
state.deleteIn(['users', nickname]);
|
||||
accountIds.forEach(id => {
|
||||
state.update('awaitingApproval', orderedSet => orderedSet.delete(id));
|
||||
state.deleteIn(['users', id]);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -100,9 +100,9 @@ export default function admin(state = initialState, action) {
|
|||
return importUsers(state, action.users);
|
||||
case ADMIN_USERS_DELETE_REQUEST:
|
||||
case ADMIN_USERS_DELETE_SUCCESS:
|
||||
return deleteUsers(state, action.nicknames);
|
||||
return deleteUsers(state, action.accountIds);
|
||||
case ADMIN_USERS_APPROVE_REQUEST:
|
||||
return state.update('awaitingApproval', set => set.subtract(action.nicknames));
|
||||
return state.update('awaitingApproval', set => set.subtract(action.accountIds));
|
||||
case ADMIN_USERS_APPROVE_SUCCESS:
|
||||
return approveUsers(state, action.users);
|
||||
default:
|
||||
|
|
Ładowanie…
Reference in New Issue