@@ -14,6 +14,7 @@ import useConfirmModal from '@hooks/useConfirmModal';
1414import useConfirmPendingRTERAndProceed from '@hooks/useConfirmPendingRTERAndProceed' ;
1515import { useCurrencyListActions } from '@hooks/useCurrencyList' ;
1616import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails' ;
17+ import useDecisionModal from '@hooks/useDecisionModal' ;
1718import useDefaultExpensePolicy from '@hooks/useDefaultExpensePolicy' ;
1819import useDeleteTransactions from '@hooks/useDeleteTransactions' ;
1920import useDuplicateTransactionsAndViolations from '@hooks/useDuplicateTransactionsAndViolations' ;
@@ -158,7 +159,6 @@ import ActivityIndicator from './ActivityIndicator';
158159import Button from './Button' ;
159160import ButtonWithDropdownMenu from './ButtonWithDropdownMenu' ;
160161import type { ButtonWithDropdownMenuRef , DropdownOption } from './ButtonWithDropdownMenu/types' ;
161- import DecisionModal from './DecisionModal' ;
162162import { useDelegateNoAccessActions , useDelegateNoAccessState } from './DelegateNoAccessModalProvider' ;
163163import Header from './Header' ;
164164import HeaderLoadingBar from './HeaderLoadingBar' ;
@@ -363,7 +363,6 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
363363 } , [ isExported , reportActions ] ) ;
364364
365365 const transactionViolations = useTransactionViolations ( transaction ?. transactionID ) ;
366- const [ downloadErrorModalVisible , setDownloadErrorModalVisible ] = useState ( false ) ;
367366 const [ isPDFModalVisible , setIsPDFModalVisible ] = useState ( false ) ;
368367 const [ introSelected ] = useOnyx ( ONYXKEYS . NVP_INTRO_SELECTED ) ;
369368 const [ isTrackIntentUser ] = useOnyx ( ONYXKEYS . NVP_INTRO_SELECTED , { selector : isTrackIntentUserSelector } ) ;
@@ -384,6 +383,24 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
384383
385384 const [ exportModalStatus , setExportModalStatus ] = useState < ExportType | null > ( null ) ;
386385 const { showConfirmModal} = useConfirmModal ( ) ;
386+ const { showDecisionModal} = useDecisionModal ( ) ;
387+
388+ const showOfflineModal = ( ) => {
389+ showDecisionModal ( {
390+ title : translate ( 'common.youAppearToBeOffline' ) ,
391+ prompt : translate ( 'common.offlinePrompt' ) ,
392+ secondOptionText : translate ( 'common.buttonConfirm' ) ,
393+ } ) ;
394+ } ;
395+
396+ const showDownloadErrorModal = ( ) => {
397+ showDecisionModal ( {
398+ title : translate ( 'common.downloadFailedTitle' ) ,
399+ prompt : translate ( 'common.downloadFailedDescription' ) ,
400+ secondOptionText : translate ( 'common.buttonConfirm' ) ,
401+ } ) ;
402+ } ;
403+
387404 const { isPaidAnimationRunning, isApprovedAnimationRunning, isSubmittingAnimationRunning, startAnimation, stopAnimation, startApprovedAnimation, startSubmittingAnimation} =
388405 usePaymentAnimations ( ) ;
389406 const styles = useThemeStyles ( ) ;
@@ -516,7 +533,6 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
516533
517534 const [ isDuplicateActive , temporarilyDisableDuplicateAction ] = useThrottledButtonState ( handleDuplicateReset ) ;
518535
519- const [ isDownloadErrorModalVisible , setIsDownloadErrorModalVisible ] = useState ( false ) ;
520536 const [ isHoldEducationalModalVisible , setIsHoldEducationalModalVisible ] = useState ( false ) ;
521537 const [ rejectModalAction , setRejectModalAction ] = useState < ValueOf <
522538 typeof CONST . REPORT . TRANSACTION_SECONDARY_ACTIONS . HOLD | typeof CONST . REPORT . TRANSACTION_SECONDARY_ACTIONS . REJECT | typeof CONST . REPORT . TRANSACTION_SECONDARY_ACTIONS . REJECT_BULK
@@ -532,7 +548,6 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
532548
533549 const shouldDisplayNarrowMoreButton = ! shouldDisplayNarrowVersion || isWideRHPDisplayedOnWideLayout || isSuperWideRHPDisplayedOnWideLayout ;
534550
535- const [ offlineModalVisible , setOfflineModalVisible ] = useState ( false ) ;
536551 const { showNonReimbursablePaymentErrorModal, shouldBlockDirectPayment, nonReimbursablePaymentErrorDecisionModal} = useNonReimbursablePaymentModal ( moneyRequestReport , transactions ) ;
537552
538553 const showExportProgressModal = useCallback ( ( ) => {
@@ -547,7 +562,11 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
547562 const beginExportWithTemplate = useCallback (
548563 ( templateName : string , templateType : string , transactionIDList : string [ ] , policyID ?: string ) => {
549564 if ( isOffline ) {
550- setOfflineModalVisible ( true ) ;
565+ showDecisionModal ( {
566+ title : translate ( 'common.youAppearToBeOffline' ) ,
567+ prompt : translate ( 'common.offlinePrompt' ) ,
568+ secondOptionText : translate ( 'common.buttonConfirm' ) ,
569+ } ) ;
551570 return ;
552571 }
553572
@@ -570,7 +589,7 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
570589 policyID,
571590 } ) ;
572591 } ,
573- [ isOffline , moneyRequestReport , showExportProgressModal , clearSelectedTransactions ] ,
592+ [ isOffline , moneyRequestReport , showExportProgressModal , clearSelectedTransactions , showDecisionModal , translate ] ,
574593 ) ;
575594
576595 const isOnSearch = route . name . toLowerCase ( ) . startsWith ( 'search' ) ;
@@ -583,8 +602,8 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
583602 reportActions,
584603 allTransactionsLength : transactions . length ,
585604 session,
586- onExportFailed : ( ) => setIsDownloadErrorModalVisible ( true ) ,
587- onExportOffline : ( ) => setOfflineModalVisible ( true ) ,
605+ onExportFailed : showDownloadErrorModal ,
606+ onExportOffline : showOfflineModal ,
588607 policy,
589608 beginExportWithTemplate : ( templateName , templateType , transactionIDList , policyID ) => beginExportWithTemplate ( templateName , templateType , transactionIDList , policyID ) ,
590609 isOnSearch,
@@ -1152,7 +1171,11 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
11521171 return ;
11531172 }
11541173 if ( isOffline ) {
1155- setOfflineModalVisible ( true ) ;
1174+ showDecisionModal ( {
1175+ title : translate ( 'common.youAppearToBeOffline' ) ,
1176+ prompt : translate ( 'common.offlinePrompt' ) ,
1177+ secondOptionText : translate ( 'common.buttonConfirm' ) ,
1178+ } ) ;
11561179 return ;
11571180 }
11581181 exportReportToCSV (
@@ -1161,7 +1184,11 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
11611184 transactionIDList : transactionIDs ,
11621185 } ,
11631186 ( ) => {
1164- setDownloadErrorModalVisible ( true ) ;
1187+ showDecisionModal ( {
1188+ title : translate ( 'common.downloadFailedTitle' ) ,
1189+ prompt : translate ( 'common.downloadFailedDescription' ) ,
1190+ secondOptionText : translate ( 'common.buttonConfirm' ) ,
1191+ } ) ;
11651192 } ,
11661193 translate ,
11671194 ) ;
@@ -1236,6 +1263,7 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
12361263 isExported ,
12371264 exportTemplates ,
12381265 beginExportWithTemplate ,
1266+ showDecisionModal ,
12391267 ] ) ;
12401268
12411269 const primaryActionComponent = (
@@ -2334,24 +2362,6 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
23342362 onNonReimbursablePaymentError = { showNonReimbursablePaymentErrorModal }
23352363 />
23362364 ) }
2337- < DecisionModal
2338- title = { translate ( 'common.downloadFailedTitle' ) }
2339- prompt = { translate ( 'common.downloadFailedDescription' ) }
2340- isSmallScreenWidth = { isSmallScreenWidth }
2341- onSecondOptionSubmit = { ( ) => setDownloadErrorModalVisible ( false ) }
2342- secondOptionText = { translate ( 'common.buttonConfirm' ) }
2343- isVisible = { downloadErrorModalVisible }
2344- onClose = { ( ) => setDownloadErrorModalVisible ( false ) }
2345- />
2346- < DecisionModal
2347- title = { translate ( 'common.downloadFailedTitle' ) }
2348- prompt = { translate ( 'common.downloadFailedDescription' ) }
2349- isSmallScreenWidth = { isSmallScreenWidth }
2350- onSecondOptionSubmit = { ( ) => setIsDownloadErrorModalVisible ( false ) }
2351- secondOptionText = { translate ( 'common.buttonConfirm' ) }
2352- isVisible = { isDownloadErrorModalVisible }
2353- onClose = { ( ) => setIsDownloadErrorModalVisible ( false ) }
2354- />
23552365 { ! ! rejectModalAction && (
23562366 < HoldOrRejectEducationalModal
23572367 onClose = { dismissRejectModalBasedOnAction }
@@ -2364,15 +2374,6 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
23642374 onConfirm = { dismissModalAndUpdateUseHold }
23652375 />
23662376 ) }
2367- < DecisionModal
2368- title = { translate ( 'common.youAppearToBeOffline' ) }
2369- prompt = { translate ( 'common.offlinePrompt' ) }
2370- isSmallScreenWidth = { isSmallScreenWidth }
2371- onSecondOptionSubmit = { ( ) => setOfflineModalVisible ( false ) }
2372- secondOptionText = { translate ( 'common.buttonConfirm' ) }
2373- isVisible = { offlineModalVisible }
2374- onClose = { ( ) => setOfflineModalVisible ( false ) }
2375- />
23762377 { nonReimbursablePaymentErrorDecisionModal }
23772378 < Modal
23782379 onClose = { ( ) => {
0 commit comments