11import { useRoute } from '@react-navigation/native' ;
22import { isUserValidatedSelector } from '@selectors/Account' ;
3- import { shouldFailAllRequestsSelector } from '@selectors/Network' ;
43import { hasSeenTourSelector , isTrackIntentUserSelector } from '@selectors/Onboarding' ;
54import passthroughPolicyTagListSelector from '@selectors/PolicyTagList' ;
65import { validTransactionDraftsSelector } from '@selectors/TransactionDraft' ;
@@ -53,7 +52,6 @@ import {turnOffMobileSelectionMode} from '@libs/actions/MobileSelectionMode';
5352import { deleteAppReport , downloadReportPDF , exportReportToCSV , exportReportToPDF , exportToIntegration , markAsManuallyExported } from '@libs/actions/Report' ;
5453import { getExportTemplates , queueExportSearchWithTemplate , search } from '@libs/actions/Search' ;
5554import initSplitExpense from '@libs/actions/SplitExpenses' ;
56- import { setNameValuePair } from '@libs/actions/User' ;
5755import getNonEmptyStringOnyxID from '@libs/getNonEmptyStringOnyxID' ;
5856import getPlatform from '@libs/getPlatform' ;
5957import { getExistingTransactionID } from '@libs/IOUUtils' ;
@@ -114,7 +112,6 @@ import {
114112 isSelfDM ,
115113 navigateOnDeleteExpense ,
116114 navigateToDetailsPage ,
117- rejectMoneyRequestReason ,
118115 shouldBlockSubmitDueToStrictPolicyRules ,
119116} from '@libs/ReportUtils' ;
120117import shouldPopoverUseScrollView from '@libs/shouldPopoverUseScrollView' ;
@@ -137,7 +134,6 @@ import {
137134 canApproveIOU ,
138135 cancelPayment ,
139136 canIOUBePaid as canIOUBePaidAction ,
140- dismissRejectUseExplanation ,
141137 getNavigationUrlOnMoneyRequestDelete ,
142138 payInvoice ,
143139 payMoneyRequest ,
@@ -163,13 +159,13 @@ import {useDelegateNoAccessActions, useDelegateNoAccessState} from './DelegateNo
163159import Header from './Header' ;
164160import HeaderLoadingBar from './HeaderLoadingBar' ;
165161import HeaderWithBackButton from './HeaderWithBackButton' ;
166- import HoldOrRejectEducationalModal from './HoldOrRejectEducationalModal' ;
167- import HoldSubmitterEducationalModal from './HoldSubmitterEducationalModal' ;
168162import Icon from './Icon' ;
169163import { KYCWallContext } from './KYCWall/KYCWallContext' ;
170164import { useLockedAccountActions , useLockedAccountState } from './LockedAccountModalProvider' ;
171165import Modal from './Modal' ;
172166import { ModalActions } from './Modal/Global/ModalContext' ;
167+ import MoneyReportHeaderEducationalModals from './MoneyReportHeaderEducationalModals' ;
168+ import type { RejectModalAction } from './MoneyReportHeaderEducationalModals' ;
173169import MoneyReportHeaderKYCDropdown from './MoneyReportHeaderKYCDropdown' ;
174170import MoneyReportHeaderPrimaryAction from './MoneyReportHeaderPrimaryAction' ;
175171import MoneyReportHeaderStatusBar from './MoneyReportHeaderStatusBar' ;
@@ -534,16 +530,12 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
534530 const [ isDuplicateActive , temporarilyDisableDuplicateAction ] = useThrottledButtonState ( handleDuplicateReset ) ;
535531
536532 const [ isHoldEducationalModalVisible , setIsHoldEducationalModalVisible ] = useState ( false ) ;
537- const [ rejectModalAction , setRejectModalAction ] = useState < ValueOf <
538- typeof CONST . REPORT . TRANSACTION_SECONDARY_ACTIONS . HOLD | typeof CONST . REPORT . TRANSACTION_SECONDARY_ACTIONS . REJECT | typeof CONST . REPORT . TRANSACTION_SECONDARY_ACTIONS . REJECT_BULK
539- > | null > ( null ) ;
533+ const [ rejectModalAction , setRejectModalAction ] = useState < RejectModalAction | null > ( null ) ;
540534
541535 const { selectedTransactionIDs, currentSearchQueryJSON, currentSearchKey, currentSearchHash, currentSearchResults} = useSearchStateContext ( ) ;
542536 const { removeTransaction, clearSelectedTransactions} = useSearchActionsContext ( ) ;
543537 const shouldCalculateTotals = useSearchShouldCalculateTotals ( currentSearchKey , currentSearchQueryJSON ?. hash , true ) ;
544538
545- const [ shouldFailAllRequests ] = useOnyx ( ONYXKEYS . NETWORK , { selector : shouldFailAllRequestsSelector } ) ;
546-
547539 const { isWideRHPDisplayedOnWideLayout, isSuperWideRHPDisplayedOnWideLayout} = useResponsiveLayoutOnWideRHP ( ) ;
548540
549541 const shouldDisplayNarrowMoreButton = ! shouldDisplayNarrowVersion || isWideRHPDisplayedOnWideLayout || isSuperWideRHPDisplayedOnWideLayout ;
@@ -997,38 +989,6 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
997989 ] ,
998990 ) ;
999991
1000- const dismissModalAndUpdateUseHold = ( ) => {
1001- setIsHoldEducationalModalVisible ( false ) ;
1002- setNameValuePair ( ONYXKEYS . NVP_DISMISSED_HOLD_USE_EXPLANATION , true , false , ! shouldFailAllRequests ) ;
1003- if ( requestParentReportAction ) {
1004- changeMoneyRequestHoldStatus ( requestParentReportAction , transaction , isOffline ) ;
1005- }
1006- } ;
1007-
1008- const dismissRejectModalBasedOnAction = ( ) => {
1009- if ( rejectModalAction === CONST . REPORT . TRANSACTION_SECONDARY_ACTIONS . HOLD ) {
1010- dismissRejectUseExplanation ( ) ;
1011- if ( requestParentReportAction ) {
1012- changeMoneyRequestHoldStatus ( requestParentReportAction , transaction , isOffline ) ;
1013- }
1014- } else if ( rejectModalAction === CONST . REPORT . TRANSACTION_SECONDARY_ACTIONS . REJECT_BULK ) {
1015- dismissRejectUseExplanation ( ) ;
1016- if ( moneyRequestReport ?. reportID ) {
1017- Navigation . navigate (
1018- ROUTES . SEARCH_MONEY_REQUEST_REPORT_REJECT_TRANSACTIONS . getRoute ( {
1019- reportID : moneyRequestReport . reportID ,
1020- } ) ,
1021- ) ;
1022- }
1023- } else {
1024- dismissRejectUseExplanation ( ) ;
1025- if ( requestParentReportAction ) {
1026- rejectMoneyRequestReason ( requestParentReportAction ) ;
1027- }
1028- }
1029- setRejectModalAction ( null ) ;
1030- } ;
1031-
1032992 const primaryAction = useMemo ( ( ) => {
1033993 return getReportPrimaryAction ( {
1034994 currentUserLogin : currentUserLogin ?? '' ,
@@ -2362,18 +2322,15 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
23622322 onNonReimbursablePaymentError = { showNonReimbursablePaymentErrorModal }
23632323 />
23642324 ) }
2365- { ! ! rejectModalAction && (
2366- < HoldOrRejectEducationalModal
2367- onClose = { dismissRejectModalBasedOnAction }
2368- onConfirm = { dismissRejectModalBasedOnAction }
2369- />
2370- ) }
2371- { ! ! isHoldEducationalModalVisible && (
2372- < HoldSubmitterEducationalModal
2373- onClose = { dismissModalAndUpdateUseHold }
2374- onConfirm = { dismissModalAndUpdateUseHold }
2375- />
2376- ) }
2325+ < MoneyReportHeaderEducationalModals
2326+ requestParentReportAction = { requestParentReportAction }
2327+ transaction = { transaction }
2328+ reportID = { moneyRequestReport ?. reportID }
2329+ isHoldEducationalVisible = { isHoldEducationalModalVisible }
2330+ rejectModalAction = { rejectModalAction }
2331+ onHoldEducationalDismissed = { ( ) => setIsHoldEducationalModalVisible ( false ) }
2332+ onRejectModalDismissed = { ( ) => setRejectModalAction ( null ) }
2333+ />
23772334 { nonReimbursablePaymentErrorDecisionModal }
23782335 < Modal
23792336 onClose = { ( ) => {
0 commit comments