From 63c2a16745cf87a911312520a147eac261b8d886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Thu, 5 Sep 2024 17:23:25 +0200 Subject: [PATCH] pl-fe: fix dashboard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- packages/pl-fe/src/actions/admin.ts | 4 +-- packages/pl-fe/src/reducers/admin.ts | 51 +++++++++++----------------- 2 files changed, 22 insertions(+), 33 deletions(-) diff --git a/packages/pl-fe/src/actions/admin.ts b/packages/pl-fe/src/actions/admin.ts index 8718128f4..0fca8223a 100644 --- a/packages/pl-fe/src/actions/admin.ts +++ b/packages/pl-fe/src/actions/admin.ts @@ -125,8 +125,8 @@ const closeReport = (reportId: string) => dispatch({ type: ADMIN_REPORT_PATCH_REQUEST, reportId }); - return getClient(state).admin.reports.resolveReport(reportId).then(() => { - dispatch({ type: ADMIN_REPORT_PATCH_SUCCESS, reportId }); + return getClient(state).admin.reports.resolveReport(reportId).then((report) => { + dispatch({ type: ADMIN_REPORT_PATCH_SUCCESS, report, reportId }); }).catch(error => { dispatch({ type: ADMIN_REPORT_PATCH_FAIL, error, reportId }); }); diff --git a/packages/pl-fe/src/reducers/admin.ts b/packages/pl-fe/src/reducers/admin.ts index 0767ffbe8..54ea78bda 100644 --- a/packages/pl-fe/src/reducers/admin.ts +++ b/packages/pl-fe/src/reducers/admin.ts @@ -11,10 +11,8 @@ import { ADMIN_CONFIG_FETCH_SUCCESS, ADMIN_CONFIG_UPDATE_SUCCESS, ADMIN_REPORTS_FETCH_SUCCESS, - ADMIN_REPORT_PATCH_REQUEST, ADMIN_REPORT_PATCH_SUCCESS, ADMIN_USERS_FETCH_SUCCESS, - ADMIN_USER_DELETE_REQUEST, ADMIN_USER_DELETE_SUCCESS, ADMIN_USER_APPROVE_REQUEST, ADMIN_USER_APPROVE_SUCCESS, @@ -85,21 +83,16 @@ const importUsers = (state: State, users: Array, params: AdminGetA }); }); -const deleteUsers = (state: State, accountIds: string[]): State => - state.withMutations(state => { - accountIds.forEach(id => { - state.update('awaitingApproval', orderedSet => orderedSet.delete(id)); - state.deleteIn(['users', id]); - }); - }); +const deleteUser = (state: State, accountId: string): State => + state + .update('awaitingApproval', orderedSet => orderedSet.delete(accountId)) + .deleteIn(['users', accountId]); -const approveUsers = (state: State, users: Array): State => +const approveUser = (state: State, user: AdminAccount): State => state.withMutations(state => { - users.forEach(user => { - const normalizedUser = minifyUser(user); - state.update('awaitingApproval', orderedSet => orderedSet.delete(user.id)); - state.setIn(['users', user.id], normalizedUser); - }); + const normalizedUser = minifyUser(user); + state.update('awaitingApproval', orderedSet => orderedSet.delete(user.id)); + state.setIn(['users', user.id], normalizedUser); }); const minifyReport = (report: AdminReport) => omit( @@ -120,19 +113,17 @@ const importReports = (state: State, reports: Array): State => }); }); -const handleReportDiffs = (state: State, reports: Array) => +const handleReportDiffs = (state: State, report: MinifiedReport) => // Note: the reports here aren't full report objects // hence the need for a new function. state.withMutations(state => { - reports.forEach(report => { - switch (report.action_taken) { - case false: - state.update('openReports', orderedSet => orderedSet.add(report.id)); - break; - default: - state.update('openReports', orderedSet => orderedSet.delete(report.id)); - } - }); + switch (report.action_taken) { + case false: + state.update('openReports', orderedSet => orderedSet.add(report.id)); + break; + default: + state.update('openReports', orderedSet => orderedSet.delete(report.id)); + } }); const normalizeConfig = (config: any): Config => ImmutableMap(fromJS(config)); @@ -148,18 +139,16 @@ const admin = (state: State = ReducerRecord(), action: AnyAction): State => { return importConfigs(state, action.configs); case ADMIN_REPORTS_FETCH_SUCCESS: return importReports(state, action.reports); - case ADMIN_REPORT_PATCH_REQUEST: case ADMIN_REPORT_PATCH_SUCCESS: - return handleReportDiffs(state, action.reports); + return handleReportDiffs(state, action.report); case ADMIN_USERS_FETCH_SUCCESS: return importUsers(state, action.users, action.params); - case ADMIN_USER_DELETE_REQUEST: case ADMIN_USER_DELETE_SUCCESS: - return deleteUsers(state, action.accountIds); + return deleteUser(state, action.accountId); case ADMIN_USER_APPROVE_REQUEST: - return state.update('awaitingApproval', set => set.subtract(action.accountIds)); + return state.update('awaitingApproval', set => set.subtract(action.accountId)); case ADMIN_USER_APPROVE_SUCCESS: - return approveUsers(state, action.users); + return approveUser(state, action.user); default: return state; }