diff --git a/src/libs/actions/Report.ts b/src/libs/actions/Report.ts index cb487e317c02..75edc38c8e05 100644 --- a/src/libs/actions/Report.ts +++ b/src/libs/actions/Report.ts @@ -1576,11 +1576,11 @@ function handleReportChanged(report: OnyxEntry) { } /** Deletes a comment from the report, basically sets it as empty string */ -function deleteReportComment(reportID: string, reportAction: ReportAction) { +function deleteReportComment(reportID: string | undefined, reportAction: ReportAction) { const originalReportID = getOriginalReportID(reportID, reportAction); const reportActionID = reportAction.reportActionID; - if (!reportActionID || !originalReportID) { + if (!reportActionID || !originalReportID || !reportID) { return; } diff --git a/src/pages/home/report/ContextMenu/BaseReportActionContextMenu.tsx b/src/pages/home/report/ContextMenu/BaseReportActionContextMenu.tsx index e26cb014f695..59f9126f3e25 100755 --- a/src/pages/home/report/ContextMenu/BaseReportActionContextMenu.tsx +++ b/src/pages/home/report/ContextMenu/BaseReportActionContextMenu.tsx @@ -18,6 +18,7 @@ import usePaginatedReportActions from '@hooks/usePaginatedReportActions'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useRestoreInputFocus from '@hooks/useRestoreInputFocus'; import useStyleUtils from '@hooks/useStyleUtils'; +import getPlatform from '@libs/getPlatform'; import {getPolicy, getWorkspaceAccountID, isPolicyAdmin as PolicyUtilsIsPolicyAdmin} from '@libs/PolicyUtils'; import {getLinkedTransactionID, getOneTransactionThreadReportID, getOriginalMessage, getReportAction, isActionOfType} from '@libs/ReportActionsUtils'; import { @@ -46,12 +47,12 @@ type BaseReportActionContextMenuProps = { reportID: string | undefined; /** The ID of the report action this context menu is attached to. */ - reportActionID: string; + reportActionID: string | undefined; /** The ID of the original report from which the given reportAction is first created. */ // originalReportID is used in withOnyx to get the reportActions for the original report // eslint-disable-next-line react/no-unused-prop-types - originalReportID: string; + originalReportID: string | undefined; /** * If true, this component will be a small, row-oriented menu that displays icons but not text. @@ -151,7 +152,7 @@ function BaseReportActionContextMenu({ const [cardsList] = useOnyx(`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`); const reportAction: OnyxEntry = useMemo(() => { - if (isEmptyObject(reportActions) || reportActionID === '0' || reportActionID === '-1') { + if (isEmptyObject(reportActions) || !reportActionID || reportActionID === '0' || reportActionID === '-1') { return; } return reportActions[reportActionID]; @@ -323,9 +324,11 @@ function BaseReportActionContextMenu({ const cardID = cardIssuedActionOriginalMessage?.cardID ?? CONST.DEFAULT_NUMBER_ID; const isPolicyAdmin = PolicyUtilsIsPolicyAdmin(getPolicy(policyID)); const card = isPolicyAdmin ? cardsList?.[cardID] : cardList[cardID]; + const isUsingBottomDockedModal = + getPlatform() === CONST.PLATFORM.ANDROID || getPlatform() === CONST.PLATFORM.IOS || (shouldUseNarrowLayout && getPlatform(true) === CONST.PLATFORM.MOBILEWEB); return ( - (isVisible || shouldKeepOpen) && ( + (isVisible || shouldKeepOpen || isUsingBottomDockedModal) && ( ) { const {translate} = useLocalize(); - const reportIDRef = useRef('-1'); + const reportIDRef = useRef(); const typeRef = useRef(); const reportActionRef = useRef> | null>(null); - const reportActionIDRef = useRef('-1'); - const originalReportIDRef = useRef('-1'); + const reportActionIDRef = useRef(); + const originalReportIDRef = useRef(); const selectionRef = useRef(''); const reportActionDraftMessageRef = useRef(); @@ -211,10 +211,10 @@ function PopoverReportActionContextMenu(_props: unknown, ref: ForwardedRef { setDisabledActions(disabledOptions); typeRef.current = type; - reportIDRef.current = reportID ?? '-1'; - reportActionIDRef.current = reportActionID ?? '-1'; + reportIDRef.current = reportID; + reportActionIDRef.current = reportActionID; // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - originalReportIDRef.current = originalReportID || '-1'; + originalReportIDRef.current = originalReportID; selectionRef.current = selection; setIsPopoverVisible(true); reportActionDraftMessageRef.current = draftMessage; @@ -270,15 +270,15 @@ function PopoverReportActionContextMenu(_props: unknown, ref: ForwardedRef { callbackWhenDeleteModalHide.current = runAndResetCallback(onConfirmDeleteModal.current); const reportAction = reportActionRef.current; - if (ReportActionsUtils.isMoneyRequestAction(reportAction)) { - const originalMessage = ReportActionsUtils.getOriginalMessage(reportAction); - if (ReportActionsUtils.isTrackExpenseAction(reportAction)) { - IOU.deleteTrackExpense(reportIDRef.current, originalMessage?.IOUTransactionID ?? '-1', reportAction); + if (isMoneyRequestAction(reportAction)) { + const originalMessage = getOriginalMessage(reportAction); + if (isTrackExpenseAction(reportAction)) { + deleteTrackExpense(reportIDRef.current, originalMessage?.IOUTransactionID, reportAction); } else { - IOU.deleteMoneyRequest(originalMessage?.IOUTransactionID ?? '-1', reportAction); + deleteMoneyRequest(originalMessage?.IOUTransactionID, reportAction); } } else if (reportAction) { - Report.deleteReportComment(reportIDRef.current, reportAction); + deleteReportComment(reportIDRef.current, reportAction); } DeviceEventEmitter.emit(`deletedReportAction_${reportIDRef.current}`, reportAction?.reportActionID); @@ -331,13 +331,13 @@ function PopoverReportActionContextMenu(_props: unknown, ref: ForwardedRef