From 79d3a6486322ee10e1e0ee20bd91e0fe02c32091 Mon Sep 17 00:00:00 2001 From: Pyry Koivisto Date: Mon, 25 Nov 2024 15:04:00 +0200 Subject: [PATCH] VKT(Frontend): Keep track of contacted examiners --- .../vkt/public/i18n/fi-FI/public.json | 1 + .../PublicExaminerListing.tsx | 28 +++++++++++++------ .../redux/reducers/publicEnrollmentContact.ts | 7 +++++ .../redux/sagas/publicEnrollmentContact.ts | 2 ++ 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/frontend/packages/vkt/public/i18n/fi-FI/public.json b/frontend/packages/vkt/public/i18n/fi-FI/public.json index 71b5a5280..940b577e7 100644 --- a/frontend/packages/vkt/public/i18n/fi-FI/public.json +++ b/frontend/packages/vkt/public/i18n/fi-FI/public.json @@ -450,6 +450,7 @@ "examDates": "Tutkintopäivät" }, "row": { + "alreadyContacted": "Yhteydenotto lähetetty", "byRequest": "Sovittavissa", "contact": "Ota yhteyttä" } diff --git a/frontend/packages/vkt/src/components/publicExaminerListing/PublicExaminerListing.tsx b/frontend/packages/vkt/src/components/publicExaminerListing/PublicExaminerListing.tsx index 52bdcc5a6..0caddb6da 100644 --- a/frontend/packages/vkt/src/components/publicExaminerListing/PublicExaminerListing.tsx +++ b/frontend/packages/vkt/src/components/publicExaminerListing/PublicExaminerListing.tsx @@ -30,6 +30,7 @@ import { AppRoutes, ExamLanguage } from 'enums/app'; import { PublicExaminer } from 'interfaces/publicExaminer'; import { resetPublicEnrollmentContact } from 'redux/reducers/publicEnrollmentContact'; import { setPublicExaminerLanguageFilter } from 'redux/reducers/publicExaminer'; +import { publicEnrollmentContactSelector } from 'redux/selectors/publicEnrollmentContact'; import { publicExaminerSelector, selectFilteredPublicExaminers, @@ -81,6 +82,13 @@ const DesktopExaminerRow = ({ ); }; + const { contactedExaminers } = useAppSelector( + publicEnrollmentContactSelector, + ); + const alreadyContacted = contactedExaminers.find( + (contacted) => id === contacted.id, + ); + return ( @@ -113,13 +121,17 @@ const DesktopExaminerRow = ({ - - {t('row.contact')} - + {alreadyContacted ? ( + {t('row.alreadyContacted')} + ) : ( + + {t('row.contact')} + + )} ); @@ -177,7 +189,7 @@ export const PublicExaminerListing = () => {
-

Ota yhteyttä tutkinnon vastaanottajiin

+

Ota yhteyttä tutkintosuorituksen vastaanottajiin

; } const initialState: PublicEnrollmentContactState = { @@ -33,6 +35,7 @@ const initialState: PublicEnrollmentContactState = { message: '', }, examiner: undefined, + contactedExaminers: [], }; const publicEnrollmentContactSlice = createSlice({ @@ -55,6 +58,9 @@ const publicEnrollmentContactSlice = createSlice({ ) { state.enrollment = { ...state.enrollment, ...action.payload }; }, + markExaminerAsContacted(state, action: PayloadAction) { + state.contactedExaminers = [...state.contactedExaminers, action.payload]; + }, loadPublicEnrollmentSave( state, _action: PayloadAction<{ @@ -87,4 +93,5 @@ export const { loadPublicExaminer, updatePublicEnrollmentContact, resetPublicEnrollmentContact, + markExaminerAsContacted, } = publicEnrollmentContactSlice.actions; diff --git a/frontend/packages/vkt/src/redux/sagas/publicEnrollmentContact.ts b/frontend/packages/vkt/src/redux/sagas/publicEnrollmentContact.ts index b4e4d8328..c00823f2a 100644 --- a/frontend/packages/vkt/src/redux/sagas/publicEnrollmentContact.ts +++ b/frontend/packages/vkt/src/redux/sagas/publicEnrollmentContact.ts @@ -10,6 +10,7 @@ import { setAPIError } from 'redux/reducers/APIError'; import { loadPublicEnrollmentSave, loadPublicExaminer, + markExaminerAsContacted, rejectPublicEnrollmentSave, rejectPublicExaminer, storePublicEnrollmentSave, @@ -57,6 +58,7 @@ function* loadPublicEnrollmentSaveSaga( yield call(axiosInstance.post, saveUrl, body); yield put(storePublicEnrollmentSave()); + yield put(markExaminerAsContacted({ id: examinerId })); } catch (error) { const errorMessage = NotifierUtils.getAPIErrorMessage(error as AxiosError); yield put(setAPIError(errorMessage));