From 2f0b2ca259abfa42ad5e04722cbb9687a0ebd725 Mon Sep 17 00:00:00 2001 From: Shri Prakash Bajpai Date: Wed, 17 Jan 2024 12:28:35 +0530 Subject: [PATCH] TP-51704 | Phone number Skip Tracing (#772) * TP-51704 | Phone number Skip Tracing * TP-51704 | Fix for retaining sources * TP-51704 | Product UAT fixes * TP-51704 UAT fixes done --- .../component/Contacts/DefaultContacts.tsx | 67 ++++++++++++------- src/pages/CaseDetails/feedbackForm/index.tsx | 4 ++ web-ui-library | 2 +- 3 files changed, 49 insertions(+), 24 deletions(-) diff --git a/src/pages/CaseDetails/feedbackForm/component/Contacts/DefaultContacts.tsx b/src/pages/CaseDetails/feedbackForm/component/Contacts/DefaultContacts.tsx index ab6b1629..489141cf 100644 --- a/src/pages/CaseDetails/feedbackForm/component/Contacts/DefaultContacts.tsx +++ b/src/pages/CaseDetails/feedbackForm/component/Contacts/DefaultContacts.tsx @@ -1,5 +1,5 @@ import { Button, Typography } from '@navi/web-ui/lib/primitives'; -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useMemo, useState, useRef } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { useParams, useSearchParams } from 'react-router-dom'; import CallHistory from 'src/components/CallHistory/CallHistory'; @@ -32,6 +32,13 @@ interface DefaultContactsProps { currentCallType: ECallingType; } +interface Telephone { + value: string; + label: string; + source: JSX.Element; + rightAdornment: JSX.Element; +} + const DefaultContacts: React.FC = props => { const { feedback, dispatchFeedback, currentCallType } = props; const dispatch = useDispatch(); @@ -118,36 +125,50 @@ const DefaultContacts: React.FC = props => { return newTelephoneList; }, [telephones?.data, feedback.telephoneNotRequired]); + const previousSelectedTelephone = useRef(telephoneList?.[0]); const getDefaultPhoneNumber = useMemo(() => { if (ameyoQueryParams?.phoneNumber) { return telephoneList?.find(t => t.value === ameyoQueryParams?.phoneNumber); } - if (feedback.telephone) { - return telephoneList?.find(t => t.value === feedback.telephone) || telephoneList?.[0]; - } - - return telephoneList?.[0]; + const currentSelectedTelephone = previousSelectedTelephone.current + ? previousSelectedTelephone.current + : telephoneList?.[0]; + !feedback.telephoneNotRequired && + dispatchFeedback({ + type: FeedbackFormKind.UPDATE_TELEPHONES, + payload: { telephone: currentSelectedTelephone?.value as string } + }); + return previousSelectedTelephone.current + ? previousSelectedTelephone.current + : telephoneList?.[0]; }, [telephoneList, ameyoQueryParams?.phoneNumber, feedback.telephone]); - const handleTelephoneChange = useCallback((option: SelectPickerOptionProps) => { - dispatchFeedback({ - type: FeedbackFormKind.UPDATE_TELEPHONES, - payload: { telephone: option.value as string } - }); - addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.LH_Feedback_PhoneNumberDropdown, { - phone: option?.value, - source: option?.source - }); - dispatch(setIsFeedbackFormDirty(true)); - }, []); + const handleTelephoneChange = useCallback( + (option: SelectPickerOptionProps) => { + if (option.value !== '') { + previousSelectedTelephone.current = telephoneList?.find(t => t.value === option.value); + } + dispatchFeedback({ + type: FeedbackFormKind.UPDATE_TELEPHONES, + payload: { telephone: option.value as string } + }); + addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.LH_Feedback_PhoneNumberDropdown, { + phone: option?.value, + source: option?.source + }); + dispatch(setIsFeedbackFormDirty(true)); + }, + [telephoneList] + ); const getSelectedSourceLabels = () => { - const selectedSourceLabels = telephones?.data - ?.filter(t => { - return feedback.telephone?.includes(t.number as string); - }) - ?.map(t => t.sources); - return selectedSourceLabels?.[0]?.join(', '); + if (feedback.telephoneNotRequired) { + return ''; + } + const selectedSourceLabels = + telephones?.data?.find(t => t.number === previousSelectedTelephone.current?.value)?.sources || + telephones?.data?.[0]?.sources; + return selectedSourceLabels?.join(', '); }; return ( diff --git a/src/pages/CaseDetails/feedbackForm/index.tsx b/src/pages/CaseDetails/feedbackForm/index.tsx index c73dae35..5ef7c471 100644 --- a/src/pages/CaseDetails/feedbackForm/index.tsx +++ b/src/pages/CaseDetails/feedbackForm/index.tsx @@ -604,6 +604,10 @@ const FeedbackFrom = (props: FeedbackFromProps) => { callingType: callingType.value }); dispatch(setIsFeedbackFormDirty(true)); + dispatchFeedback({ + type: FeedbackFormKind.TELEPHONE_REQUIRED, + payload: { telephoneNotRequired: false } + }); }} /> ))} diff --git a/web-ui-library b/web-ui-library index 3aabf3fd..4f22f22f 160000 --- a/web-ui-library +++ b/web-ui-library @@ -1 +1 @@ -Subproject commit 3aabf3fde5162233929327e3d86c657a477cb87d +Subproject commit 4f22f22f137a6ed408d0e43e6e65e152c26e552c