From ff747ae1cd6ace72ccd769907c2b3c78e8af88d7 Mon Sep 17 00:00:00 2001 From: Sampo Tawast Date: Thu, 22 Jun 2023 15:44:46 +0300 Subject: [PATCH 1/2] feat: use openDrawer param on application page to open sidebar --- .../applicationList/ApplicationList.tsx | 24 +++++++++++++++---- .../useHandlingApplicationActions.ts | 8 +++++-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/frontend/benefit/handler/src/components/applicationList/ApplicationList.tsx b/frontend/benefit/handler/src/components/applicationList/ApplicationList.tsx index 3c8afae5e3..0377695b61 100644 --- a/frontend/benefit/handler/src/components/applicationList/ApplicationList.tsx +++ b/frontend/benefit/handler/src/components/applicationList/ApplicationList.tsx @@ -30,12 +30,13 @@ export interface ApplicationListProps { const buildApplicationUrl = ( id: string, - status: APPLICATION_STATUSES + status: APPLICATION_STATUSES, + openDrawer = false ): string => { if (status === APPLICATION_STATUSES.DRAFT) { return `${ROUTES.APPLICATION_FORM}?id=${id}`; } - return `${ROUTES.APPLICATION}?id=${id}`; + return `${ROUTES.APPLICATION}?id=${id}${openDrawer ? '&openDrawer=1' : ''}`; }; const ApplicationList: React.FC = ({ @@ -61,9 +62,16 @@ const ApplicationList: React.FC = ({ transform: ({ id, companyName, + unreadMessagesCount, status: applicationStatus, }: ApplicationListTableTransforms) => ( - <$Link href={buildApplicationUrl(id, applicationStatus)}> + <$Link + href={buildApplicationUrl( + id, + applicationStatus, + unreadMessagesCount > 0 + )} + > {String(companyName)} ), @@ -171,10 +179,16 @@ const ApplicationList: React.FC = ({ } cols.push({ - transform: ({ unreadMessagesCount }: ApplicationListTableTransforms) => ( + transform: ({ + unreadMessagesCount, + id, + status: applicationStatus, + }: ApplicationListTableTransforms) => ( <$CellContent> {Number(unreadMessagesCount) > 0 ? ( - + <$Link href={buildApplicationUrl(id, applicationStatus, true)}> + + ) : null} ), diff --git a/frontend/benefit/handler/src/components/applicationReview/actions/handlingApplicationActions/useHandlingApplicationActions.ts b/frontend/benefit/handler/src/components/applicationReview/actions/handlingApplicationActions/useHandlingApplicationActions.ts index 755a4d8d36..954942ea5c 100644 --- a/frontend/benefit/handler/src/components/applicationReview/actions/handlingApplicationActions/useHandlingApplicationActions.ts +++ b/frontend/benefit/handler/src/components/applicationReview/actions/handlingApplicationActions/useHandlingApplicationActions.ts @@ -4,6 +4,7 @@ import useHandlerReviewActions from 'benefit/handler/hooks/useHandlerReviewActio import { HandledAplication } from 'benefit/handler/types/application'; import { APPLICATION_STATUSES } from 'benefit-shared/constants'; import { Application } from 'benefit-shared/types/application'; +import { useRouter } from 'next/router'; import { TFunction, useTranslation } from 'next-i18next'; import React, { useEffect, useState } from 'react'; import useToggle from 'shared/hooks/useToggle'; @@ -35,8 +36,11 @@ const useHandlingApplicationActions = ( const { updateStatus } = useApplicationActions(application); const { handledApplication, setHandledApplication } = React.useContext(AppContext); - const [isMessagesDrawerVisible, toggleMessagesDrawerVisiblity] = - useToggle(false); + const router = useRouter(); + const { openDrawer } = router.query; + const [isMessagesDrawerVisible, toggleMessagesDrawerVisiblity] = useToggle( + openDrawer === '1' + ); const [isConfirmationModalOpen, setIsConfirmationModalOpen] = useState(false); From 2055ba4a5dbf471063cfed5f75bc0e192a901568 Mon Sep 17 00:00:00 2001 From: Sampo Tawast Date: Mon, 26 Jun 2023 11:19:20 +0300 Subject: [PATCH 2/2] refactor: evaluate query params using a shared function --- .../src/components/applicationList/ApplicationList.tsx | 7 ++++++- .../useHandlingApplicationActions.ts | 3 ++- frontend/benefit/shared/src/utils/common.ts | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/frontend/benefit/handler/src/components/applicationList/ApplicationList.tsx b/frontend/benefit/handler/src/components/applicationList/ApplicationList.tsx index 0377695b61..f1da92d11a 100644 --- a/frontend/benefit/handler/src/components/applicationList/ApplicationList.tsx +++ b/frontend/benefit/handler/src/components/applicationList/ApplicationList.tsx @@ -36,7 +36,12 @@ const buildApplicationUrl = ( if (status === APPLICATION_STATUSES.DRAFT) { return `${ROUTES.APPLICATION_FORM}?id=${id}`; } - return `${ROUTES.APPLICATION}?id=${id}${openDrawer ? '&openDrawer=1' : ''}`; + + const applicationUrl = `${ROUTES.APPLICATION}?id=${id}`; + if (openDrawer) { + return `${applicationUrl}&openDrawer=1`; + } + return applicationUrl; }; const ApplicationList: React.FC = ({ diff --git a/frontend/benefit/handler/src/components/applicationReview/actions/handlingApplicationActions/useHandlingApplicationActions.ts b/frontend/benefit/handler/src/components/applicationReview/actions/handlingApplicationActions/useHandlingApplicationActions.ts index 954942ea5c..f7b30ee607 100644 --- a/frontend/benefit/handler/src/components/applicationReview/actions/handlingApplicationActions/useHandlingApplicationActions.ts +++ b/frontend/benefit/handler/src/components/applicationReview/actions/handlingApplicationActions/useHandlingApplicationActions.ts @@ -4,6 +4,7 @@ import useHandlerReviewActions from 'benefit/handler/hooks/useHandlerReviewActio import { HandledAplication } from 'benefit/handler/types/application'; import { APPLICATION_STATUSES } from 'benefit-shared/constants'; import { Application } from 'benefit-shared/types/application'; +import { isTruthy } from 'benefit-shared/utils/common'; import { useRouter } from 'next/router'; import { TFunction, useTranslation } from 'next-i18next'; import React, { useEffect, useState } from 'react'; @@ -39,7 +40,7 @@ const useHandlingApplicationActions = ( const router = useRouter(); const { openDrawer } = router.query; const [isMessagesDrawerVisible, toggleMessagesDrawerVisiblity] = useToggle( - openDrawer === '1' + isTruthy(openDrawer.toString()) ); const [isConfirmationModalOpen, setIsConfirmationModalOpen] = diff --git a/frontend/benefit/shared/src/utils/common.ts b/frontend/benefit/shared/src/utils/common.ts index 140b13e53b..d4ca3949f8 100644 --- a/frontend/benefit/shared/src/utils/common.ts +++ b/frontend/benefit/shared/src/utils/common.ts @@ -23,3 +23,6 @@ export const setAppLoaded = (): void => { } } }; + +export const isTruthy = (value: string | boolean): boolean => + ['1', true, 'true'].includes(value);