Skip to content

Commit b148459

Browse files
Fix: Skip auto-closing dropdown when shouldCloseModalOnSelect is true for DUPLICATE action
Co-authored-by: parasharrajat <parasharrajat@users.noreply.github.com>
1 parent fe02765 commit b148459

2 files changed

Lines changed: 24 additions & 20 deletions

File tree

src/components/MoneyReportHeader.tsx

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -386,13 +386,6 @@ function MoneyReportHeader({
386386
const [isDuplicateActive, temporarilyDisableDuplicateAction] = useThrottledButtonState();
387387
const dropdownMenuRef = useRef<ButtonWithDropdownMenuRef>(null);
388388

389-
useEffect(() => {
390-
if (!isDuplicateActive) {
391-
return;
392-
}
393-
dropdownMenuRef.current?.setIsMenuVisible(false);
394-
}, [isDuplicateActive]);
395-
396389
const [isHoldMenuVisible, setIsHoldMenuVisible] = useState(false);
397390
const [paymentType, setPaymentType] = useState<PaymentMethodType>();
398391
const [requestType, setRequestType] = useState<ActionHandledType>();
@@ -457,6 +450,19 @@ function MoneyReportHeader({
457450
(isArchivedReport || isChatReportArchived || (activePolicyExpenseChat && (isDM(chatReport) || isSelfDM(chatReport))))
458451
);
459452

453+
const shouldDuplicateCloseModalOnSelect =
454+
isDistanceExpenseUnsupportedForDuplicating ||
455+
isPerDiemRequestOnNonDefaultWorkspace ||
456+
hasCustomUnitOutOfPolicyViolation ||
457+
activePolicyExpenseChat?.iouReportID === moneyRequestReport?.reportID;
458+
459+
useEffect(() => {
460+
if (!isDuplicateActive || shouldDuplicateCloseModalOnSelect) {
461+
return;
462+
}
463+
dropdownMenuRef.current?.setIsMenuVisible(false);
464+
}, [isDuplicateActive, shouldDuplicateCloseModalOnSelect]);
465+
460466
const [duplicateDistanceErrorModalVisible, setDuplicateDistanceErrorModalVisible] = useState(false);
461467
const [rateErrorModalVisible, setRateErrorModalVisible] = useState(false);
462468
const [isDownloadErrorModalVisible, setIsDownloadErrorModalVisible] = useState(false);
@@ -1557,11 +1563,7 @@ function MoneyReportHeader({
15571563

15581564
duplicateExpenseTransaction([transaction]);
15591565
},
1560-
shouldCloseModalOnSelect:
1561-
isDistanceExpenseUnsupportedForDuplicating ||
1562-
isPerDiemRequestOnNonDefaultWorkspace ||
1563-
hasCustomUnitOutOfPolicyViolation ||
1564-
activePolicyExpenseChat?.iouReportID === moneyRequestReport?.reportID,
1566+
shouldCloseModalOnSelect: shouldDuplicateCloseModalOnSelect,
15651567
},
15661568
[CONST.REPORT.SECONDARY_ACTIONS.DUPLICATE_REPORT]: {
15671569
text: translate('common.duplicateReport'),

src/components/MoneyRequestHeader.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,6 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
149149
const [isDuplicateActive, temporarilyDisableDuplicateAction] = useThrottledButtonState();
150150
const dropdownMenuRef = useRef<ButtonWithDropdownMenuRef>(null);
151151

152-
useEffect(() => {
153-
if (!isDuplicateActive) {
154-
return;
155-
}
156-
dropdownMenuRef.current?.setIsMenuVisible(false);
157-
}, [isDuplicateActive]);
158-
159152
const [dismissedRejectUseExplanation] = useOnyx(ONYXKEYS.NVP_DISMISSED_REJECT_USE_EXPLANATION);
160153
const [dismissedHoldUseExplanation] = useOnyx(ONYXKEYS.NVP_DISMISSED_HOLD_USE_EXPLANATION);
161154
const personalDetails = usePersonalDetails();
@@ -207,6 +200,15 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
207200
(isParentReportArchived || (activePolicyExpenseChat && (isSelfDM(parentReport) || isParentChatReportDM)))
208201
);
209202

203+
const shouldDuplicateCloseModalOnSelect = isDistanceExpenseUnsupportedForDuplicating || hasCustomUnitOutOfPolicyViolation || isPerDiemRequestOnNonDefaultWorkspace;
204+
205+
useEffect(() => {
206+
if (!isDuplicateActive || shouldDuplicateCloseModalOnSelect) {
207+
return;
208+
}
209+
dropdownMenuRef.current?.setIsMenuVisible(false);
210+
}, [isDuplicateActive, shouldDuplicateCloseModalOnSelect]);
211+
210212
const {wideRHPRouteKeys} = useWideRHPState();
211213
const [shouldFailAllRequests] = useOnyx(ONYXKEYS.NETWORK, {selector: shouldFailAllRequestsSelector});
212214
const [quickAction] = useOnyx(ONYXKEYS.NVP_QUICK_ACTION_GLOBAL_CREATE);
@@ -548,7 +550,7 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
548550

549551
duplicateTransaction([transaction]);
550552
},
551-
shouldCloseModalOnSelect: isDistanceExpenseUnsupportedForDuplicating || hasCustomUnitOutOfPolicyViolation || isPerDiemRequestOnNonDefaultWorkspace,
553+
shouldCloseModalOnSelect: shouldDuplicateCloseModalOnSelect,
552554
},
553555
[CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.VIEW_DETAILS]: {
554556
value: CONST.REPORT.SECONDARY_ACTIONS.VIEW_DETAILS,

0 commit comments

Comments
 (0)