From 658107f77aa8c6144fdf645b39a439033f3962cc Mon Sep 17 00:00:00 2001 From: "aishwarya.srivastava" Date: Fri, 6 Jun 2025 15:50:56 +0530 Subject: [PATCH] NTP-70754 | pop up on open map in mav view --- .../java/com/avapp/DeviceUtilsModule.java | 2 + .../main/java/com/avapp/MainApplication.java | 6 ++- src/screens/MapView/CasesMap/UserCard.tsx | 17 ++++++-- src/screens/MapView/ProfileHeader/index.tsx | 40 ++++++++++++++++--- .../MapView/TopAddress/AddressListItem.tsx | 10 +++-- src/screens/MapView/constants.ts | 3 ++ .../addresses/common/AddressItemHeader.tsx | 6 ++- src/screens/addresses/common/Tooltip.tsx | 8 +++- src/screens/addresses/interfaces.ts | 2 + .../caseDetails/AllocatedAddressDetails.tsx | 1 + 10 files changed, 77 insertions(+), 18 deletions(-) diff --git a/android/app/src/main/java/com/avapp/DeviceUtilsModule.java b/android/app/src/main/java/com/avapp/DeviceUtilsModule.java index ee3135e4..34c1b0ee 100644 --- a/android/app/src/main/java/com/avapp/DeviceUtilsModule.java +++ b/android/app/src/main/java/com/avapp/DeviceUtilsModule.java @@ -55,6 +55,7 @@ public class DeviceUtilsModule extends ReactContextBaseJavaModule { private File imageFile; private int WHATSAPP_SHARE_REQUEST_CODE = 12345; + public static String agentId = ""; public DeviceUtilsModule(@Nullable ReactApplicationContext reactContext) { super(reactContext); @@ -208,6 +209,7 @@ public class DeviceUtilsModule extends ReactContextBaseJavaModule { if (isAlfredEnabledFromFirebase) { AlfredManager.INSTANCE.getConfig$navi_alfred_release().setUserId(userId); } + DeviceUtilsModule.agentId = (userId != null) ? userId : ""; PulseManager.INSTANCE.setUserId(userId); } diff --git a/android/app/src/main/java/com/avapp/MainApplication.java b/android/app/src/main/java/com/avapp/MainApplication.java index 166ed409..5f57ebdc 100644 --- a/android/app/src/main/java/com/avapp/MainApplication.java +++ b/android/app/src/main/java/com/avapp/MainApplication.java @@ -190,7 +190,8 @@ public class MainApplication extends Application implements ReactApplication, Ap anrEventProperties.put("isNae", "true"); anrEventProperties.put("errorTitle", "Something went wrong"); anrEventProperties.put("vertical", "COLLECTIONS_FIELD"); - + anrEventProperties.put("sessionId", DeviceUtilsModule.agentId); + if (isAlfredEnabledFromFirebase && AlfredManager.INSTANCE.isAlfredRecordingEnabled() && alfredConfig.getAnrEnableStatus() && isAppInForeground()) { anrEventProperties.put(STACK_TRACE, "ANR_OCCURRED"); @@ -221,7 +222,8 @@ public class MainApplication extends Application implements ReactApplication, Ap crashEventProperties.put("isNae", "true"); crashEventProperties.put("errorTitle", "Something went wrong"); crashEventProperties.put("vertical", "COLLECTIONS_FIELD"); - + crashEventProperties.put("sessionId", DeviceUtilsModule.agentId); + if (isAlfredEnabledFromFirebase && AlfredManager.INSTANCE.isAlfredRecordingEnabled() && alfredConfig.getCrashEnableStatus() && isAppInForeground()) { StackTraceElement stackTraceElement = exception.getStackTrace()[0]; diff --git a/src/screens/MapView/CasesMap/UserCard.tsx b/src/screens/MapView/CasesMap/UserCard.tsx index 85f74a5c..95252883 100644 --- a/src/screens/MapView/CasesMap/UserCard.tsx +++ b/src/screens/MapView/CasesMap/UserCard.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react'; +import React, { useEffect, useRef } from 'react'; import { StyleSheet, View, TouchableOpacity, Pressable } from 'react-native'; import Animated, { SharedValue, useAnimatedStyle } from 'react-native-reanimated'; import { COLORS } from '@rn-ui-lib/colors'; @@ -25,6 +25,7 @@ interface UserCardProps { const UserCard: React.FC = ({ selectedCase, cardPosition }) => { const caseDetail = useAppSelector((state) => state.allCases?.caseDetails?.[selectedCase]) || {}; + const addressItemRef = useRef(null); const cardAnimatedStyle = useAnimatedStyle(() => { const positionValue = Number.isNaN(cardPosition.value) ? 1 : cardPosition.value; @@ -75,9 +76,17 @@ const UserCard: React.FC = ({ selectedCase, cardPosition }) => { }, []); return ( - - [pressed && { opacity: 0.9 }]} onPress={handleCardPress}> - + + [pressed && { opacity: 0.9 }]} + ref={addressItemRef} + onPress={handleCardPress} + > + diff --git a/src/screens/MapView/ProfileHeader/index.tsx b/src/screens/MapView/ProfileHeader/index.tsx index cd301cd4..f52595f2 100644 --- a/src/screens/MapView/ProfileHeader/index.tsx +++ b/src/screens/MapView/ProfileHeader/index.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import React, { useMemo, useState } from 'react'; import { View, StyleSheet, Linking } from 'react-native'; import Text from '@rn-ui-lib/components/Text'; import Tag, { TagVariant } from '@rn-ui-lib/components/Tag'; @@ -14,21 +14,28 @@ import Button from '@rn-ui-lib/components/Button'; import MapDirectionIcon from '@assets/icons/MapDirectionIcon'; import { CLICKSTREAM_EVENT_NAMES } from '@common/Constants'; import { addClickstreamEvent } from '@services/clickstreamEventService'; +import OpenMapButtonForAddresses from '@screens/caseDetails/OpenMapButtonForAddresses'; +import Tooltip from '@screens/addresses/common/Tooltip'; +import OpenMapOptionsPopUp from '@screens/addresses/common/OpenMapOptionsPopUp'; +import { OPEN_MAP_POPUP_RIGHT_OFFSET, OPEN_MAP_POPUP_TOP_OFFSET } from '../constants'; interface ProfileHeaderProps { caseId: string; showDirections?: boolean; + addressItemRef?: React.RefObject; } -const ProfileHeader: React.FC = ({ caseId, showDirections = false }) => { +const ProfileHeader: React.FC = ({ caseId, showDirections = false, addressItemRef }) => { const caseDetails = useAppSelector((state) => state.allCases?.caseDetails?.[caseId]); const { customerName, totalOverdueAmount, paymentStatus, collectionTag, dpdBucket } = caseDetails || {}; const deviceGeolocationCoordinate = useAppSelector( (state) => state.foregroundService.deviceGeolocationCoordinate ); - const isGeoLocation = caseDetails?.addressStringType === LocationType.GEO_LOCATION; + const isGeoLocation = caseDetails?.addressStringType === LocationType.GEO_LOCATION; + const [isModalVisible, setIsModalVisible] = useState(false); + const relativeDistanceBwLatLong = useMemo(() => { const distance = getDistanceFromLatLonInKm(deviceGeolocationCoordinate, { latitude: caseDetails?.addressLocation?.latitude, @@ -51,6 +58,11 @@ const ProfileHeader: React.FC = ({ caseId, showDirections = } }; + const handleOpenMapForAddresses = () => { + setIsModalVisible(!isModalVisible); + addClickstreamEvent(CLICKSTREAM_EVENT_NAMES.FA_ADDRESS_CARD_DIRECTIONS_CLICKED, {}); + }; + return ( @@ -66,9 +78,12 @@ const ProfileHeader: React.FC = ({ caseId, showDirections = {showDirections && (!isGeoLocation ? ( - - {relativeDistanceBwLatLong} - + ) : (