diff --git a/src/screens/caseDetails/CollectionCaseDetail.tsx b/src/screens/caseDetails/CollectionCaseDetail.tsx index 7e57eeaf..fddce78c 100644 --- a/src/screens/caseDetails/CollectionCaseDetail.tsx +++ b/src/screens/caseDetails/CollectionCaseDetail.tsx @@ -33,7 +33,7 @@ import { getForeclosureAmount } from '@actions/feedbackActions'; import Geolocation from 'react-native-geolocation-service'; import { getAddressLocation } from '@screens/allCases/utils'; import { getGeolocationDistance } from '@screens/allCases/allCasesActions'; -import { debounce } from '@components/utlis/commonFunctions'; +import { debounce, getDistanceFromLatLonInKm } from '@components/utlis/commonFunctions'; import logger from '@components/utlis/logger'; interface ICaseDetails { @@ -76,6 +76,8 @@ const CollectionCaseDetails: React.FC = (props) => { const pastEscalationCount = Number(escalationData?.pastEscalationCount); const totalEscalationsCount = activeEscalationCount + pastEscalationCount; const watchId = React.useRef(0); + const deviceGeolocationCoordinate = + useAppSelector((state) => state?.foregroundService?.deviceGeolocationCoordinate) || {}; useEffect(() => { if (caseId) dispatch(setSelectedCaseId(caseId)); @@ -142,11 +144,28 @@ const CollectionCaseDetails: React.FC = (props) => { const debouncedGetDistance = debounce( (params: { source: ICaseItemLatLongData; destinations: ICaseItemLatLongData[] }) => { getGeolocationDistance(params).then((distanceMap) => { + if (!distanceMap || distanceMap?.size === 0) { + const distanceInKm = getDistanceFromLatLonInKm( + params.destinations[0], + deviceGeolocationCoordinate + ); + setRoadDistance(distanceInKm); + return; + } setRoadDistance(distanceMap?.get(params.source.id) || 0); }); }, 2000 ); + const destinations: ICaseItemLatLongData[] = []; + const addressLocation = getAddressLocation(caseDetail?.addressLocation); + if (addressLocation) { + destinations.push({ + id: caseDetail?.caseReferenceId, + latitude: addressLocation?.latitude, + longitude: addressLocation?.longitude, + }); + } watchId.current = Geolocation.watchPosition( (position) => { const source = { @@ -154,18 +173,15 @@ const CollectionCaseDetails: React.FC = (props) => { latitude: position.coords.latitude, longitude: position.coords.longitude, }; - const destinations: ICaseItemLatLongData[] = []; - const addressLocation = getAddressLocation(caseDetail?.addressLocation); - if (addressLocation) { - destinations.push({ - id: caseDetail?.caseReferenceId, - latitude: addressLocation?.latitude, - longitude: addressLocation?.longitude, - }); - } + debouncedGetDistance({ source, destinations }); }, (error) => { + const distanceInKm = getDistanceFromLatLonInKm( + destinations[0], + deviceGeolocationCoordinate + ); + setRoadDistance(distanceInKm); logger({ msg: 'Error getting geolocation distance', type: 'error',