Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions src/components/Modal/Global/ReportPDFDownloadModalWrapper.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import ReportPDFDownloadModal from '@components/ReportPDFDownloadModal';

import React, {useState} from 'react';

import type {ModalProps} from './ModalContext';

import {ModalActions} from './ModalContext';

type ReportPDFDownloadModalWrapperProps = ModalProps & {
reportID: string;
};

function ReportPDFDownloadModalWrapper({closeModal, reportID}: ReportPDFDownloadModalWrapperProps) {
const [isVisible, setIsVisible] = useState(true);

return (
<ReportPDFDownloadModal
reportID={reportID}
isVisible={isVisible}
onClose={() => setIsVisible(false)}
onModalHide={() => {
if (isVisible) {
return;
}
closeModal({action: ModalActions.CLOSE});
}}
/>
);
}

export default ReportPDFDownloadModalWrapper;
export type {ReportPDFDownloadModalWrapperProps};
13 changes: 0 additions & 13 deletions src/components/Search/SearchBulkActionsButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import {KYCWallContext} from '@components/KYCWall/KYCWallContext';
import type {ContinueActionParams} from '@components/KYCWall/types';
import {useLockedAccountActions, useLockedAccountState} from '@components/LockedAccountModalProvider';
import type {PopoverMenuItem} from '@components/PopoverMenu';
import ReportPDFDownloadModal from '@components/ReportPDFDownloadModal';

import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails';
import useLayoutSpacing from '@hooks/useLayoutSpacing';
Expand Down Expand Up @@ -89,10 +88,6 @@ function SearchBulkActionsButton({queryJSON}: SearchBulkActionsButtonProps) {
emptyReportsCount,
handleOfflineModalClose,
handleDownloadErrorModalClose,
isPdfModalVisible,
setIsPdfModalVisible,
pdfReportID,
handlePdfModalHide,
isExpensifyCardStatementPDFModalVisible,
setIsExpensifyCardStatementPDFModalVisible,
expensifyCardStatementPDFParams,
Expand Down Expand Up @@ -294,14 +289,6 @@ function SearchBulkActionsButton({queryJSON}: SearchBulkActionsButtonProps) {
isVisible={isDownloadErrorModalVisible}
onClose={handleDownloadErrorModalClose}
/>
{!!pdfReportID && (
<ReportPDFDownloadModal
reportID={pdfReportID}
isVisible={isPdfModalVisible}
onClose={() => setIsPdfModalVisible(false)}
onModalHide={handlePdfModalHide}
/>
)}
{!!expensifyCardStatementPDFParams && (
<ExpensifyCardStatementPDFDownloadModal
statementParams={expensifyCardStatementPDFParams}
Expand Down
21 changes: 21 additions & 0 deletions src/hooks/useReportPDFDownloadModal.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import type {ModalProps} from '@components/Modal/Global/ModalContext';
import {useModal} from '@components/Modal/Global/ModalContext';
import type {ReportPDFDownloadModalWrapperProps} from '@components/Modal/Global/ReportPDFDownloadModalWrapper';
import ReportPDFDownloadModalWrapper from '@components/Modal/Global/ReportPDFDownloadModalWrapper';

type ReportPDFDownloadModalOptions = Omit<ReportPDFDownloadModalWrapperProps, keyof ModalProps>;

const useReportPDFDownloadModal = () => {
const context = useModal();

const showReportPDFDownloadModal = (options: ReportPDFDownloadModalOptions) => {
return context.showModal({
component: ReportPDFDownloadModalWrapper,
props: options,
});
};

return {showReportPDFDownloadModal};
};

export default useReportPDFDownloadModal;
19 changes: 6 additions & 13 deletions src/hooks/useSearchBulkActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ import usePermissions from './usePermissions';
import {useAllPersonalDetails} from './usePersonalDetails';
import usePersonalPolicy from './usePersonalPolicy';
import usePolicyForMovingExpenses from './usePolicyForMovingExpenses';
import useReportPDFDownloadModal from './useReportPDFDownloadModal';
import useRestrictedActionPolicyID from './useRestrictedActionPolicyID';
import useSearchShouldCalculateTotals from './useSearchShouldCalculateTotals';
import useSelfDMReport from './useSelfDMReport';
Expand Down Expand Up @@ -665,13 +666,12 @@ function useSearchBulkActions({queryJSON}: UseSearchBulkActionsParams) {

const [isOfflineModalVisible, setIsOfflineModalVisible] = useState(false);
const [isDownloadErrorModalVisible, setIsDownloadErrorModalVisible] = useState(false);
const [isPdfModalVisible, setIsPdfModalVisible] = useState(false);
const [pdfReportID, setPdfReportID] = useState<string | undefined>(undefined);
const [isExpensifyCardStatementPDFModalVisible, setIsExpensifyCardStatementPDFModalVisible] = useState(false);
const [expensifyCardStatementPDFParams, setExpensifyCardStatementPDFParams] = useState<ExpensifyCardStatementParams | undefined>(undefined);
const [isExpensifyCardStatementMultiFeedAlertVisible, setIsExpensifyCardStatementMultiFeedAlertVisible] = useState(false);
const {showConfirmModal} = useConfirmModal();
const openSearchReportSubmitToPopover = useOpenSearchReportSubmitToPopover();
const {showReportPDFDownloadModal} = useReportPDFDownloadModal();
const [isHoldEducationalModalVisible, setIsHoldEducationalModalVisible] = useState(false);
const [rejectModalAction, setRejectModalAction] = useState<ValueOf<
typeof CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.HOLD | typeof CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.REJECT
Expand Down Expand Up @@ -2578,8 +2578,9 @@ function useSearchBulkActions({queryJSON}: UseSearchBulkActionsParams) {
return;
}
await exportReportToPDF({reportID: reportIDForPDF});
setPdfReportID(reportIDForPDF);
setIsPdfModalVisible(true);
showReportPDFDownloadModal({reportID: reportIDForPDF});
selectAllMatchingItems(false);
clearSelectedTransactions(undefined, true);
return;
}
exportReportsToPDF(selectedReportIDs);
Expand Down Expand Up @@ -3303,6 +3304,7 @@ function useSearchBulkActions({queryJSON}: UseSearchBulkActionsParams) {
currentSearchResults?.search?.isLoading,
shouldCalculateTotalsOnRefresh,
rules,
showReportPDFDownloadModal,
]);

// When the dropdown surfaces the export options directly there is no "Export" row above them, so on its own the
Expand All @@ -3320,11 +3322,6 @@ function useSearchBulkActions({queryJSON}: UseSearchBulkActionsParams) {
setIsDownloadErrorModalVisible(false);
}, [setIsDownloadErrorModalVisible]);

const handlePdfModalHide = useCallback(() => {
setPdfReportID(undefined);
clearSelectedTransactions();
}, [clearSelectedTransactions]);

const handleExpensifyCardStatementPDFModalHide = useCallback(() => {
setExpensifyCardStatementPDFParams(undefined);
// Clear the selection when the statement modal closes (after download or failure), like the other bulk
Expand Down Expand Up @@ -3375,10 +3372,6 @@ function useSearchBulkActions({queryJSON}: UseSearchBulkActionsParams) {
emptyReportsCount,
handleOfflineModalClose,
handleDownloadErrorModalClose,
isPdfModalVisible,
setIsPdfModalVisible,
pdfReportID,
handlePdfModalHide,
isExpensifyCardStatementPDFModalVisible,
setIsExpensifyCardStatementPDFModalVisible,
expensifyCardStatementPDFParams,
Expand Down
Loading