diff --git a/src/components/MenuItem.tsx b/src/components/MenuItem.tsx
index f23c8db97f47..5168544357e6 100644
--- a/src/components/MenuItem.tsx
+++ b/src/components/MenuItem.tsx
@@ -334,7 +334,7 @@ function MenuItem(
const StyleUtils = useStyleUtils();
const combinedStyle = [style, styles.popoverMenuItem];
const {isSmallScreenWidth} = useWindowDimensions();
- const {isExecuting, singleExecution, waitForNavigate} = useContext(MenuItemGroupContext) ?? {};
+ const {isExecuting, singleExecution} = useContext(MenuItemGroupContext) ?? {};
const isDeleted = style && Array.isArray(style) ? style.includes(styles.offlineFeedback.deleted) : false;
const descriptionVerticalMargin = shouldShowDescriptionOnTop ? styles.mb1 : styles.mt1;
@@ -409,15 +409,11 @@ function MenuItem(
}
if (onPress && event) {
- if (!singleExecution || !waitForNavigate) {
+ if (!singleExecution) {
onPress(event);
return;
}
- singleExecution(
- waitForNavigate(() => {
- onPress(event);
- }),
- )();
+ singleExecution(onPress)(event);
}
};
diff --git a/src/components/TaskHeaderActionButton.tsx b/src/components/TaskHeaderActionButton.tsx
index 2d964f58c253..44f87fd7981f 100644
--- a/src/components/TaskHeaderActionButton.tsx
+++ b/src/components/TaskHeaderActionButton.tsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, {useContext} from 'react';
import {View} from 'react-native';
import type {OnyxEntry} from 'react-native-onyx';
import {withOnyx} from 'react-native-onyx';
@@ -10,6 +10,7 @@ import * as Task from '@userActions/Task';
import ONYXKEYS from '@src/ONYXKEYS';
import type * as OnyxTypes from '@src/types/onyx';
import Button from './Button';
+import {MenuItemGroupContext} from './MenuItemGroup';
type TaskHeaderActionButtonOnyxProps = {
/** Current user session */
@@ -24,15 +25,25 @@ type TaskHeaderActionButtonProps = TaskHeaderActionButtonOnyxProps & {
function TaskHeaderActionButton({report, session}: TaskHeaderActionButtonProps) {
const {translate} = useLocalize();
const styles = useThemeStyles();
+ const {isExecuting, singleExecution} = useContext(MenuItemGroupContext) ?? {};
+
+ const onPressAction = () => {
+ const onPress = () => (ReportUtils.isCompletedTaskReport(report) ? Task.reopenTask(report) : Task.completeTask(report));
+ if (!singleExecution) {
+ onPress();
+ return;
+ }
+ singleExecution(onPress)();
+ };
return (
diff --git a/src/pages/home/ReportScreen.tsx b/src/pages/home/ReportScreen.tsx
index 332e9b080558..30efc47b145b 100644
--- a/src/pages/home/ReportScreen.tsx
+++ b/src/pages/home/ReportScreen.tsx
@@ -12,6 +12,7 @@ import BlockingView from '@components/BlockingViews/BlockingView';
import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView';
import DragAndDropProvider from '@components/DragAndDrop/Provider';
import * as Illustrations from '@components/Icon/Illustrations';
+import MenuItemGroup from '@components/MenuItemGroup';
import MoneyReportHeader from '@components/MoneyReportHeader';
import MoneyRequestHeader from '@components/MoneyRequestHeader';
import OfflineWithFeedback from '@components/OfflineWithFeedback';
@@ -628,85 +629,87 @@ function ReportScreen({
return (
-
-
+
-
- {headerView}
- {ReportUtils.isTaskReport(report) && isSmallScreenWidth && ReportUtils.isOpenTaskReport(report, parentReportAction) && (
-
-
-
-
+
+ {headerView}
+ {ReportUtils.isTaskReport(report) && isSmallScreenWidth && ReportUtils.isOpenTaskReport(report, parentReportAction) && (
+
+
+
+
+
-
- )}
-
- {!!accountManagerReportID && ReportUtils.isConciergeChatReport(report) && isBannerVisible && (
-
- )}
-
-
- {shouldShowReportActionList && (
-
)}
-
- {/* Note: The ReportActionsSkeletonView should be allowed to mount even if the initial report actions are not loaded.
- If we prevent rendering the report while they are loading then
- we'll unnecessarily unmount the ReportActionsView which will clear the new marker lines initial state. */}
- {shouldShowSkeleton && }
-
- {isCurrentReportLoadedFromOnyx ? (
- setIsComposerFocus(true)}
- onComposerBlur={() => setIsComposerFocus(false)}
- report={report}
- pendingAction={reportPendingAction}
- isComposerFullSize={!!isComposerFullSize}
- listHeight={listHeight}
- isEmptyChat={isEmptyChat}
- lastReportAction={lastReportAction}
- />
- ) : null}
-
-
-
-
+
+ {!!accountManagerReportID && ReportUtils.isConciergeChatReport(report) && isBannerVisible && (
+
+ )}
+
+
+ {shouldShowReportActionList && (
+
+ )}
+
+ {/* Note: The ReportActionsSkeletonView should be allowed to mount even if the initial report actions are not loaded.
+ If we prevent rendering the report while they are loading then
+ we'll unnecessarily unmount the ReportActionsView which will clear the new marker lines initial state. */}
+ {shouldShowSkeleton && }
+
+ {isCurrentReportLoadedFromOnyx ? (
+ setIsComposerFocus(true)}
+ onComposerBlur={() => setIsComposerFocus(false)}
+ report={report}
+ pendingAction={reportPendingAction}
+ isComposerFullSize={!!isComposerFullSize}
+ listHeight={listHeight}
+ isEmptyChat={isEmptyChat}
+ lastReportAction={lastReportAction}
+ />
+ ) : null}
+
+
+
+
+
);
diff --git a/src/pages/settings/Profile/ProfilePage.tsx b/src/pages/settings/Profile/ProfilePage.tsx
index 4c5ed88e6898..f33a86ed2d46 100755
--- a/src/pages/settings/Profile/ProfilePage.tsx
+++ b/src/pages/settings/Profile/ProfilePage.tsx
@@ -1,11 +1,11 @@
-import React, {useEffect} from 'react';
+import React, {useContext, useEffect} from 'react';
import {View} from 'react-native';
import type {OnyxEntry} from 'react-native-onyx';
import {withOnyx} from 'react-native-onyx';
import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator';
import HeaderWithBackButton from '@components/HeaderWithBackButton';
import * as Illustrations from '@components/Icon/Illustrations';
-import MenuItemGroup from '@components/MenuItemGroup';
+import MenuItemGroup, {MenuItemGroupContext} from '@components/MenuItemGroup';
import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
import ScreenWrapper from '@components/ScreenWrapper';
import ScrollView from '@components/ScrollView';
@@ -61,6 +61,7 @@ function ProfilePage({
const StyleUtils = useStyleUtils();
const {translate} = useLocalize();
const {isSmallScreenWidth} = useWindowDimensions();
+ const {waitForNavigate} = useContext(MenuItemGroupContext) ?? {};
const getPronouns = (): string => {
const pronounsKey = currentUserPersonalDetails?.pronouns?.replace(CONST.PRONOUNS.PREFIX, '') ?? '';
@@ -179,7 +180,7 @@ function ProfilePage({
title={detail.title}
description={detail.description}
wrapperStyle={styles.sectionMenuItemTopDescription}
- onPress={() => Navigation.navigate(detail.pageRoute)}
+ onPress={waitForNavigate ? waitForNavigate(() => Navigation.navigate(detail.pageRoute)) : () => Navigation.navigate(detail.pageRoute)}
/>
))}
>