From e03b8012cd1390113462e73bba6948b25226ceb7 Mon Sep 17 00:00:00 2001 From: Aman Chaturvedi Date: Wed, 22 May 2024 16:10:10 +0530 Subject: [PATCH 1/3] TP-53770 | Outstanding EMI count --- src/screens/caseDetails/EmiDetailsSection.tsx | 4 ++-- src/screens/caseDetails/interface.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/screens/caseDetails/EmiDetailsSection.tsx b/src/screens/caseDetails/EmiDetailsSection.tsx index 7f04742e..09d81510 100644 --- a/src/screens/caseDetails/EmiDetailsSection.tsx +++ b/src/screens/caseDetails/EmiDetailsSection.tsx @@ -21,7 +21,7 @@ interface IEmiDetailsSection { const EmiDetailsSection = ({ caseId }: IEmiDetailsSection) => { const caseDetail = useAppSelector((state: RootState) => state.allCases?.caseDetails?.[caseId]) || {}; - const { loanAccountNumber, outstandingEmiDetails, totalOverdueAmount } = caseDetail; + const { loanAccountNumber, totalOverdueEMICount, totalOverdueAmount } = caseDetail; const [isLoading, setIsLoading] = React.useState(false); const [emiData, setEmiData] = React.useState(null); @@ -110,7 +110,7 @@ const EmiDetailsSection = ({ caseId }: IEmiDetailsSection) => { - {outstandingEmiDetails?.length} + {totalOverdueEMICount || 0} Overdue EMI's diff --git a/src/screens/caseDetails/interface.ts b/src/screens/caseDetails/interface.ts index db90bc0d..f5574e70 100644 --- a/src/screens/caseDetails/interface.ts +++ b/src/screens/caseDetails/interface.ts @@ -279,7 +279,7 @@ export interface CaseDetail { loanAccountNumber: string; documents?: IDocument[]; interactionStatus: keyof typeof InteractionStatuses; - outstandingEmiDetails?: IOutstandingEmiDetail[]; + totalOverdueEMICount: number; totalOverdueAmount?: number; disbursalDate?: string; tenureMonths?: number; From 53e39d03785ac105558cd324e44502909580e7bf Mon Sep 17 00:00:00 2001 From: Shri Prakash Bajpai Date: Wed, 22 May 2024 17:14:55 +0530 Subject: [PATCH 2/3] TP-67690 Login changes (#803) --- android/app/build.gradle | 4 ++-- package.json | 4 ++-- src/action/authActions.ts | 1 - src/reducer/allCasesSlice.ts | 1 - src/screens/login/index.tsx | 7 ++++++- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 31f1c319..094f3868 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -134,8 +134,8 @@ def reactNativeArchitectures() { return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] } -def VERSION_CODE = 158 -def VERSION_NAME = "2.10.4" +def VERSION_CODE = 159 +def VERSION_NAME = "2.10.5" android { ndkVersion rootProject.ext.ndkVersion diff --git a/package.json b/package.json index b3cc3468..fc16514b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "AV_APP", - "version": "2.10.4", - "buildNumber": "158", + "version": "2.10.5", + "buildNumber": "159", "private": true, "scripts": { "android:dev": "yarn move:dev && react-native run-android", diff --git a/src/action/authActions.ts b/src/action/authActions.ts index 5614681f..15cd137b 100644 --- a/src/action/authActions.ts +++ b/src/action/authActions.ts @@ -212,7 +212,6 @@ export const handleLogout = () => async (dispatch: AppDispatch) => { setGlobalUserData({ token: '', agentId: '', - deviceId: '', isImpersonated: false, selectedAgentId: '', }); diff --git a/src/reducer/allCasesSlice.ts b/src/reducer/allCasesSlice.ts index b0c5059f..b284687f 100644 --- a/src/reducer/allCasesSlice.ts +++ b/src/reducer/allCasesSlice.ts @@ -287,7 +287,6 @@ const allCasesSlice = createSlice({ } added to the visit plan`, }); } - return; } if (removedVisitedCasesLoanIds.length > 0) { addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_VISIT_PLAN_UPDATED, { diff --git a/src/screens/login/index.tsx b/src/screens/login/index.tsx index 3730bb91..aa23c8d4 100644 --- a/src/screens/login/index.tsx +++ b/src/screens/login/index.tsx @@ -28,6 +28,7 @@ import { logError } from '../../components/utlis/errorUtils'; import GoogleIcon from '../../assets/icons/GoogleIcon'; import { toast } from '../../../RN-UI-LIB/src/components/toast'; import { ToastMessages } from '../allCases/constants'; +import { setGlobalUserData } from '@constants/Global'; interface ILoginForm { phoneNumber: string; @@ -51,11 +52,12 @@ function Login() { formState: { isValid }, } = useForm(); const dispatch = useAppDispatch(); - const { phoneNumber, OTPError, isLoading, otpToken } = useSelector((state: RootState) => ({ + const { phoneNumber, OTPError, isLoading, otpToken, deviceId } = useSelector((state: RootState) => ({ phoneNumber: state.loginInfo.phoneNumber, otpToken: state.loginInfo.otpToken, OTPError: state.loginInfo.OTPError, isLoading: state.loginInfo.isLoading, + deviceId: state.user?.deviceId, })); useEffect(() => { @@ -66,6 +68,9 @@ function Login() { }, [isValid]); useEffect(() => { + if(deviceId){ + setGlobalUserData({deviceId}); + } addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.AV_LOGIN_SCREEN_LOAD); }, []); From 487b0fd93af3ef8bd5cff9919863737c170e81a8 Mon Sep 17 00:00:00 2001 From: Shri Prakash Bajpai Date: Wed, 22 May 2024 17:15:45 +0530 Subject: [PATCH 3/3] TP-66612 Authorization letter changes (#799) --- RN-UI-LIB | 2 +- src/screens/caseDetails/CustomerProfile.tsx | 3 ++- src/screens/caseDetails/DocumentDataItem.tsx | 13 +++++++------ src/screens/caseDetails/LegalDocumentItem.tsx | 2 +- src/screens/caseDetails/constants.ts | 7 +++++++ src/screens/caseDetails/interface.ts | 4 ++++ src/screens/caseDetails/utils/documentUtils.tsx | 11 +++++++++++ 7 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 src/screens/caseDetails/constants.ts diff --git a/RN-UI-LIB b/RN-UI-LIB index 034483be..15c42e02 160000 --- a/RN-UI-LIB +++ b/RN-UI-LIB @@ -1 +1 @@ -Subproject commit 034483be953fd76590966bb987f8e88d5767ec87 +Subproject commit 15c42e0262781d5e81ea09d7e066acc4e903df99 diff --git a/src/screens/caseDetails/CustomerProfile.tsx b/src/screens/caseDetails/CustomerProfile.tsx index 2ef2dfea..fda530e1 100644 --- a/src/screens/caseDetails/CustomerProfile.tsx +++ b/src/screens/caseDetails/CustomerProfile.tsx @@ -99,7 +99,8 @@ const CustomerProfile: React.FC = (props) => { DOCUMENT_TYPE.AADHAR_PHOTO, DOCUMENT_TYPE.AADHAR, DOCUMENT_TYPE.DRIVING_LICENSE, - DOCUMENT_TYPE.PAN + DOCUMENT_TYPE.PAN, + DOCUMENT_TYPE.AUTHORIZATION_LETTER ]; updatedDocList.forEach((documentType) => { const document = findDocumentByDocumentType(docList, documentType); diff --git a/src/screens/caseDetails/DocumentDataItem.tsx b/src/screens/caseDetails/DocumentDataItem.tsx index 30064390..eb6d43b4 100644 --- a/src/screens/caseDetails/DocumentDataItem.tsx +++ b/src/screens/caseDetails/DocumentDataItem.tsx @@ -14,6 +14,7 @@ import { useAppSelector } from '@hooks'; import { navigateToScreen } from '@components/utlis/navigationUtlis'; import LegalDocumentItem from './LegalDocumentItem'; import Text from '@rn-ui-lib/components/Text'; +import { shareableAndDownloadableDoctypesMap } from './constants'; interface IDocumentDataItem { document: DocumentDetail; @@ -41,7 +42,7 @@ const DocumentDataItem: React.FC = ({ const { docContentType, url, documentRefId, docType, unSignedUri } = document || {}; const isPDF = docContentType === DocumentContentType.PDF; const isVideo = docContentType === DocumentContentType.VIDEO; - const isLDNLRNDoc = docType === DOCUMENT_TYPE.LDN || docType === DOCUMENT_TYPE.LRN; + const isShareableAndDownloadableDoc = !!shareableAndDownloadableDoctypesMap.get(docType); const handleOpenPdfPress = () => { navigateToScreen('pdfFull', { @@ -85,7 +86,7 @@ const DocumentDataItem: React.FC = ({ {document?.icon} {document?.title} - {!isLDNLRNDoc ? ( + {!isShareableAndDownloadableDoc ? ( Open PDF @@ -99,7 +100,6 @@ const DocumentDataItem: React.FC = ({ = ({ GenericStyles.alignCenter, GenericStyles.row, GenericStyles.ph16, - GenericStyles.mb12, + GenericStyles.pv12, + GenericStyles.br8 ]} > {document?.icon} @@ -170,7 +171,7 @@ const styles = StyleSheet.create({ }, accordionExpandBtn: { fontSize: 13, - marginTop: 8, + marginTop: 20, fontWeight: '500', lineHeight: 20, color: COLORS.TEXT.BLUE, @@ -183,7 +184,7 @@ const styles = StyleSheet.create({ height: 250, padding: 16, }, - rotateBtn: { transform: [{ rotateX: '180deg' }], marginTop: 0 }, + rotateBtn: { transform: [{ rotateX: '180deg' }], marginTop: 12 }, pt0: { paddingTop: 0 }, btnDivider: { width: 1, diff --git a/src/screens/caseDetails/LegalDocumentItem.tsx b/src/screens/caseDetails/LegalDocumentItem.tsx index be49982f..d792fa14 100644 --- a/src/screens/caseDetails/LegalDocumentItem.tsx +++ b/src/screens/caseDetails/LegalDocumentItem.tsx @@ -36,7 +36,7 @@ const LegalDocumentItem: React.FC = ({ document, lan, caseId const [pdfUrl, setPdfUrl] = useState(url); const disableDownload = isSharingOnWhatsapp || isValidating; const fileName = `${caseDetails?.customerName || ''}_${lan || ''}_${ - LegalDocumentFullName[docType] || LegalDocumentFullName.LDN + LegalDocumentFullName[docType] || LegalDocumentFullName.DEFAULT }`; useS3UrlCheck( diff --git a/src/screens/caseDetails/constants.ts b/src/screens/caseDetails/constants.ts new file mode 100644 index 00000000..b9951a56 --- /dev/null +++ b/src/screens/caseDetails/constants.ts @@ -0,0 +1,7 @@ +import { DOCUMENT_TYPE } from './interface'; + +export const shareableAndDownloadableDoctypesMap = new Map([ + [DOCUMENT_TYPE.LDN, true], + [DOCUMENT_TYPE.LRN, true], + [DOCUMENT_TYPE.AUTHORIZATION_LETTER, true], +]); \ No newline at end of file diff --git a/src/screens/caseDetails/interface.ts b/src/screens/caseDetails/interface.ts index db90bc0d..9bb5c91e 100644 --- a/src/screens/caseDetails/interface.ts +++ b/src/screens/caseDetails/interface.ts @@ -147,11 +147,14 @@ export enum DOCUMENT_TYPE { DRIVING_LICENSE = 'DRIVING_LICENSE', LDN = 'LDN', LRN = 'LRN', + AUTHORIZATION_LETTER = 'AUTHORIZATION_LETTER' } export enum LegalDocumentFullName { LDN = 'Loan_Demand_Notice', LRN = 'Loan_Recall_Notice', + AUTHORIZATION_LETTER = 'Authorization_Letter', + DEFAULT = 'Legal_Document', } export enum DocumentTitle { @@ -164,6 +167,7 @@ export enum DocumentTitle { AADHAR = 'Aadhar', SELFIE = 'Selfie', OPTIMIZED_SELFIE = 'Selfie', + AUTHORIZATION_LETTER = 'Authorization letter', } export enum DocumentContentType { diff --git a/src/screens/caseDetails/utils/documentUtils.tsx b/src/screens/caseDetails/utils/documentUtils.tsx index 83e74bb5..b87a6723 100644 --- a/src/screens/caseDetails/utils/documentUtils.tsx +++ b/src/screens/caseDetails/utils/documentUtils.tsx @@ -102,6 +102,17 @@ export const getDocumentDetails = async (document: IDocument) => { unSignedUri: document.unSignedUri, documentRefId: document.referenceId, }; + + case DOCUMENT_TYPE.AUTHORIZATION_LETTER: + return { + icon: , + title: DocumentTitle.AUTHORIZATION_LETTER, + docType: DOCUMENT_TYPE.AUTHORIZATION_LETTER, + docContentType: docType, + url: imageUrl, + unSignedUri: document.unSignedUri, + documentRefId: document.referenceId, + }; default: break;