diff --git a/android/app/build.gradle b/android/app/build.gradle index f6aeb50b..e940905d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -131,8 +131,8 @@ def reactNativeArchitectures() { return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] } -def VERSION_CODE = 83 -def VERSION_NAME = "2.3.10" +def VERSION_CODE = 85 +def VERSION_NAME = "2.4.1" android { packagingOptions { diff --git a/package.json b/package.json index e9c2fb0f..ccc82a6b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "AV_APP", - "version": "2.4.0", + "version": "2.4.1", "private": true, "scripts": { "android:dev": "yarn move:dev && react-native run-android", diff --git a/src/common/Constants.ts b/src/common/Constants.ts index 07347af7..8cf8ca88 100644 --- a/src/common/Constants.ts +++ b/src/common/Constants.ts @@ -334,6 +334,10 @@ export const CLICKSTREAM_EVENT_NAMES = { description: 'FA_COLLECT_MONEY_NUMBER_CHANGED', }, FA_COPY_LAN_CLICKED: { name: 'FA_COPY_LAN_CLICKED', description: 'FA_COPY_LAN_CLICKED' }, + FA_COPY_EMPLOYER_NAME_CLICKED: { + name: 'FA_COPY_EMPLOYER_NAME_CLICKED', + description: 'FA_COPY_EMPLOYER_NAME_CLICKED', + }, FA_COPY_LINK_CLICKED: { name: 'FA_COPY_LINK_CLICKED', description: 'FA_COPY_LINK_CLICKED' }, FA_COPY_LINK_FAILED: { name: 'FA_COPY_LINK_FAILED', description: 'FA_COPY_LINK_FAILED' }, FA_PAST_FEEDBACKS_FEEDBACK_CLICKED: { diff --git a/src/screens/allCases/constants.ts b/src/screens/allCases/constants.ts index 7df28452..fee142c9 100644 --- a/src/screens/allCases/constants.ts +++ b/src/screens/allCases/constants.ts @@ -54,7 +54,9 @@ export const EmptyListMessages = { export const ToastMessages = { VISIT_PLAN_OFFLINE: 'Please connect to the internet to update the visit plan', ERROR_COPYING_LAN: 'Error copying LAN!!', + ERROR_COPYING_EMPLOYER_NAME: 'Error copying employer name!!', SUCCESS_COPYING_LAN: 'LAN Copied Successfully!!', + SUCCESS_COPYING_EMPLOYER_NAME: 'Employer Name Copied Successfully!!', FEEDBACK_SUCCESSFUL: 'Feedback submitted successfully!', FEEDBACK_FAILED: 'Feedback submission failed', FIRESTORE_SIGNIN_FAILED: 'Error signing in to Firestore', diff --git a/src/screens/caseDetails/Chip.tsx b/src/screens/caseDetails/Chip.tsx new file mode 100644 index 00000000..7202f19a --- /dev/null +++ b/src/screens/caseDetails/Chip.tsx @@ -0,0 +1,95 @@ +import { StyleProp, TextStyle, TouchableHighlight, View, ViewStyle } from 'react-native'; +import React from 'react'; +import { GenericStyles } from '../../../RN-UI-LIB/src/styles'; +import { toast } from '../../../RN-UI-LIB/src/components/toast'; +import { copyToClipboard } from '../../components/utlis/commonFunctions'; +import Text from '../../../RN-UI-LIB/src/components/Text'; +import CopyIcon from '../../../RN-UI-LIB/src/Icons/CopyIcon'; + +interface IChip { + text: string; + containerStyle: StyleProp; + subText?: string; + numberOfLines?: number; + clipCount?: number; + showCopyBtn?: boolean; + clickstreamEvent?: () => void; + successMessage?: string; + errorMessage?: string; + textStyle?: StyleProp; +} + +const Chip: React.FC = (props) => { + const { + text, + containerStyle, + subText, + numberOfLines = 1, + clipCount = 0, + showCopyBtn = false, + clickstreamEvent, + successMessage = 'Copied Successfully!!', + errorMessage = 'Error copying!!', + textStyle, + } = props; + + const copyData = () => { + clickstreamEvent?.(); + if (!showCopyBtn) return; + if (text) { + copyToClipboard(text); + toast({ + text1: successMessage, + type: 'info', + }); + } else { + toast({ + text1: errorMessage, + type: 'error', + }); + } + }; + + const isClipped = text?.length >= clipCount; + const clippedStyle = isClipped ? GenericStyles.fill : {}; + + const renderChip = () => { + return ( + + + + {subText && subText} + {text} + + + {showCopyBtn && ( + + + + )} + + ); + }; + + return showCopyBtn ? ( + + {renderChip()} + + ) : ( + {renderChip()} + ); +}; + +export default Chip; diff --git a/src/screens/caseDetails/CollectionCaseData.tsx b/src/screens/caseDetails/CollectionCaseData.tsx index 7ac3ce3f..2764f14e 100644 --- a/src/screens/caseDetails/CollectionCaseData.tsx +++ b/src/screens/caseDetails/CollectionCaseData.tsx @@ -5,8 +5,12 @@ import { GenericStyles } from '../../../RN-UI-LIB/src/styles'; import { COLORS } from '../../../RN-UI-LIB/src/styles/colors'; import Text from '../../../RN-UI-LIB/src/components/Text'; import { formatAmount } from '../../../RN-UI-LIB/src/utlis/amount'; -import LANChip from './LANChip'; -import Tag from '../../../RN-UI-LIB/src/components/Tag'; +import Chip from './Chip'; +import EmploymentDetails from './EmploymentDetails'; +import { addClickstreamEvent } from '../../services/clickstreamEventService'; +import { CLICKSTREAM_EVENT_NAMES } from '../../common/Constants'; +import { ToastMessages } from '../allCases/constants'; +import { toTileCase } from '../../components/utlis/commonFunctions'; interface ICollectionCaseData { caseData: CaseDetail; @@ -23,22 +27,38 @@ const CollectionCaseData: React.FC = ({ caseData }) => { employmentDetail, } = caseData; - const showEmploymentDetails = false; - return ( {fatherName && ( - S/O {fatherName} + Parent name: {toTileCase(fatherName)} )} Current DPD {currentDpd} - {loanAccountNumber && } + {loanAccountNumber && ( + + addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_COPY_LAN_CLICKED, { + lan: loanAccountNumber, + }) + } + successMessage={ToastMessages.SUCCESS_COPYING_LAN} + errorMessage={ToastMessages.ERROR_COPYING_LAN} + clipCount={14} + /> + )} + + + DPD bucket {dpdBucket} @@ -46,29 +66,15 @@ const CollectionCaseData: React.FC = ({ caseData }) => { POS {formatAmount(pos)} - - {showEmploymentDetails ? ( - - {employmentDetail?.employmentType && ( - - {employmentDetail.employmentType} - - )} - {employmentDetail?.employmentType && employmentDetail?.employerName && ( + {collectionTag ? ( + <> - )} - {employmentDetail?.employerName && ( - - {employmentDetail.employerName} + + {collectionTag} - )} - - ) : null} - {collectionTag ? ( - - {collectionTag} - - ) : null} + + ) : null} + ); }; diff --git a/src/screens/caseDetails/EmploymentDetails.tsx b/src/screens/caseDetails/EmploymentDetails.tsx new file mode 100644 index 00000000..0dfbe5a2 --- /dev/null +++ b/src/screens/caseDetails/EmploymentDetails.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import { StyleSheet } from 'react-native'; +import { GenericStyles } from '../../../RN-UI-LIB/src/styles'; +import { CLICKSTREAM_EVENT_NAMES } from '../../common/Constants'; +import { addClickstreamEvent } from '../../services/clickstreamEventService'; +import { ToastMessages } from '../allCases/constants'; +import Chip from './Chip'; + +const EmploymentDetails = ({ employmentDetail }: any) => { + if (employmentDetail?.employerName) { + return ( + + addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_COPY_EMPLOYER_NAME_CLICKED, { + employerName: employmentDetail.employerName, + }) + } + successMessage={ToastMessages.SUCCESS_COPYING_EMPLOYER_NAME} + errorMessage={ToastMessages.ERROR_COPYING_EMPLOYER_NAME} + textStyle={styles.lineHeight} + /> + ); + } + + if (employmentDetail?.employmentType) { + return ( + + ); + } + + return null; +}; + +export default EmploymentDetails; + +const styles = StyleSheet.create({ + lineHeight: { lineHeight: 20, paddingVertical: 1.6 }, +});