diff --git a/packages/pl-fe/src/actions/admin.ts b/packages/pl-fe/src/actions/admin.ts index afa3476aa..eefebedd8 100644 --- a/packages/pl-fe/src/actions/admin.ts +++ b/packages/pl-fe/src/actions/admin.ts @@ -25,6 +25,9 @@ const ADMIN_USER_DELETE_SUCCESS = 'ADMIN_USER_DELETE_SUCCESS' as const; const ADMIN_USER_APPROVE_REQUEST = 'ADMIN_USER_APPROVE_REQUEST' as const; const ADMIN_USER_APPROVE_SUCCESS = 'ADMIN_USER_APPROVE_SUCCESS' as const; +const ADMIN_USER_REJECT_REQUEST = 'ADMIN_USER_REJECT_REQUEST' as const; +const ADMIN_USER_REJECT_SUCCESS = 'ADMIN_USER_REJECT_SUCCESS' as const; + const ADMIN_USER_INDEX_EXPAND_FAIL = 'ADMIN_USER_INDEX_EXPAND_FAIL' as const; const ADMIN_USER_INDEX_EXPAND_REQUEST = 'ADMIN_USER_INDEX_EXPAND_REQUEST' as const; const ADMIN_USER_INDEX_EXPAND_SUCCESS = 'ADMIN_USER_INDEX_EXPAND_SUCCESS' as const; @@ -107,7 +110,22 @@ const approveUser = (accountId: string) => dispatch({ type: ADMIN_USER_APPROVE_REQUEST, accountId }); - return getClient(state).admin.accounts.approveAccount(accountId); + return getClient(state).admin.accounts.approveAccount(accountId).then((user) => { + dispatch({ type: ADMIN_USER_APPROVE_SUCCESS, user, accountId }); + + return user; + }); + }; + +const rejectUser = (accountId: string) => + (dispatch: AppDispatch, getState: () => RootState) => { + const state = getState(); + + dispatch({ type: ADMIN_USER_REJECT_REQUEST, accountId }); + + return getClient(state).admin.accounts.rejectAccount(accountId).then(() => { + dispatch({ type: ADMIN_USER_REJECT_SUCCESS, accountId }); + }); }; const deleteStatus = (statusId: string) => @@ -227,6 +245,8 @@ type AdminActions = | { type: typeof ADMIN_USER_DELETE_SUCCESS; accountId: string } | { type: typeof ADMIN_USER_APPROVE_REQUEST; accountId: string } | { type: typeof ADMIN_USER_APPROVE_SUCCESS; user: AdminAccount; accountId: string } + | { type: typeof ADMIN_USER_REJECT_REQUEST; accountId: string } + | { type: typeof ADMIN_USER_REJECT_SUCCESS; accountId: string } | ReturnType | { type: typeof ADMIN_USER_INDEX_FETCH_REQUEST } | { type: typeof ADMIN_USER_INDEX_FETCH_SUCCESS; users: Array; total?: number; next: (() => Promise>) | null; params?: AdminGetAccountsParams } @@ -245,6 +265,8 @@ export { ADMIN_USER_DELETE_SUCCESS, ADMIN_USER_APPROVE_REQUEST, ADMIN_USER_APPROVE_SUCCESS, + ADMIN_USER_REJECT_REQUEST, + ADMIN_USER_REJECT_SUCCESS, ADMIN_USER_INDEX_EXPAND_FAIL, ADMIN_USER_INDEX_EXPAND_REQUEST, ADMIN_USER_INDEX_EXPAND_SUCCESS, @@ -261,6 +283,7 @@ export { deactivateUser, deleteUser, approveUser, + rejectUser, deleteStatus, toggleStatusSensitivity, setBadges, diff --git a/packages/pl-fe/src/features/admin/components/unapproved-account.tsx b/packages/pl-fe/src/features/admin/components/unapproved-account.tsx index 0373e2c27..56f7ad782 100644 --- a/packages/pl-fe/src/features/admin/components/unapproved-account.tsx +++ b/packages/pl-fe/src/features/admin/components/unapproved-account.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { approveUser, deleteUser } from 'pl-fe/actions/admin'; +import { approveUser, rejectUser } from 'pl-fe/actions/admin'; import { useAccount } from 'pl-fe/api/hooks/accounts/use-account'; import { AuthorizeRejectButtons } from 'pl-fe/components/authorize-reject-buttons'; import HStack from 'pl-fe/components/ui/hstack'; @@ -23,7 +23,7 @@ const UnapprovedAccount: React.FC = ({ accountId }) => { if (!account) return null; const handleApprove = () => dispatch(approveUser(account.id)); - const handleReject = () => dispatch(deleteUser(account.id)); + const handleReject = () => dispatch(rejectUser(account.id)); return ( diff --git a/packages/pl-fe/src/reducers/admin.ts b/packages/pl-fe/src/reducers/admin.ts index 6e0be7d00..fb6abdc79 100644 --- a/packages/pl-fe/src/reducers/admin.ts +++ b/packages/pl-fe/src/reducers/admin.ts @@ -8,8 +8,8 @@ import { ADMIN_REPORT_PATCH_SUCCESS, ADMIN_USERS_FETCH_SUCCESS, ADMIN_USER_DELETE_SUCCESS, - ADMIN_USER_APPROVE_REQUEST, ADMIN_USER_APPROVE_SUCCESS, + ADMIN_USER_REJECT_SUCCESS, type AdminActions, } from 'pl-fe/actions/admin'; import { normalizeAdminReport, type AdminReport as MinifiedReport } from 'pl-fe/normalizers/admin-report'; @@ -119,12 +119,12 @@ const admin = (state = initialState, action: AdminActions): State => { return create(state, (draft) => importUsers(draft, action.users, action.params)); case ADMIN_USER_DELETE_SUCCESS: return create(state, (draft) => deleteUser(draft, action.accountId)); - case ADMIN_USER_APPROVE_REQUEST: + case ADMIN_USER_APPROVE_SUCCESS: + return create(state, (draft) => approveUser(draft, action.user)); + case ADMIN_USER_REJECT_SUCCESS: return create(state, (draft) => { draft.awaitingApproval = draft.awaitingApproval.filter(value => value !== action.accountId); }); - case ADMIN_USER_APPROVE_SUCCESS: - return create(state, (draft) => approveUser(draft, action.user)); default: return state; }