From 8b39a3a30ed7a9708e4639b1a865ea73f1260892 Mon Sep 17 00:00:00 2001 From: tienifr Date: Tue, 6 Feb 2024 22:24:31 +0700 Subject: [PATCH] fix: Duplicate waypoint error message is not dimissed after closing distance editor --- src/components/DistanceRequest/index.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/components/DistanceRequest/index.js b/src/components/DistanceRequest/index.js index b63ce337a1d9..43c7f3cbc4e4 100644 --- a/src/components/DistanceRequest/index.js +++ b/src/components/DistanceRequest/index.js @@ -176,7 +176,7 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe ); }; - const getError = () => { + const getError = useCallback(() => { // Get route error if available else show the invalid number of waypoints error. if (hasRouteError) { return ErrorUtils.getLatestErrorField(transaction, 'route'); @@ -185,7 +185,11 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe if (_.size(validatedWaypoints) < 2) { return {0: translate('iou.error.atLeastTwoDifferentWaypoints')}; } - }; + + if (_.size(validatedWaypoints) < _.keys(waypoints).length) { + return {0: translate('iou.error.duplicateWaypointsErrorMessage')}; + } + }, [translate, transaction, hasRouteError, validatedWaypoints, waypoints]); const updateWaypoints = useCallback( ({data}) => { @@ -209,7 +213,7 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe const submitWaypoints = useCallback(() => { // If there is any error or loading state, don't let user go to next page. - if (_.size(validatedWaypoints) < 2 || hasRouteError || isLoadingRoute || (isLoading && !isOffline)) { + if (!_.isEmpty(getError()) || isLoadingRoute || (isLoading && !isOffline)) { setHasError(true); return; } @@ -219,7 +223,7 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe } onSubmit(waypoints); - }, [onSubmit, setHasError, hasRouteError, isLoadingRoute, isLoading, validatedWaypoints, waypoints, isEditingNewRequest, isEditingRequest, isOffline]); + }, [onSubmit, setHasError, getError, isLoadingRoute, isLoading, waypoints, isEditingNewRequest, isEditingRequest, isOffline]); const content = ( <> @@ -254,7 +258,7 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe {/* Show error message if there is route error or there are less than 2 routes and user has tried submitting, */} - {((hasError && _.size(validatedWaypoints) < 2) || hasRouteError) && ( + {((hasError && !_.isEmpty(getError())) || hasRouteError) && (