diff --git a/src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx b/src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx index 144bf62433dc..700be191a172 100644 --- a/src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx +++ b/src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx @@ -46,11 +46,11 @@ import { getMostRecentIOURequestActionID, getOneTransactionThreadReportID, hasNextActionMadeBySameActor, - isActionableWhisperRequiringWritePermission, isConsecutiveChronosAutomaticTimerAction, isCurrentActionUnread, isDeletedParentAction, isIOUActionMatchingTransactionList, + isReportActionVisible, wasMessageReceivedWhileOffline, } from '@libs/ReportActionsUtils'; import {canUserPerformWriteAction, chatIncludesChronosWithID, getOriginalReportID, getReportLastVisibleActionCreated, isHarvestCreatedExpenseReport, isUnread} from '@libs/ReportUtils'; @@ -236,12 +236,7 @@ function MoneyRequestReportActionsList({ } const actionReportID = reportAction.reportID ?? reportID; - const isStaticallyVisible = visibleReportActionsData?.[actionReportID]?.[reportAction.reportActionID] ?? true; - if (!isStaticallyVisible) { - return false; - } - - if (!canPerformWriteAction && isActionableWhisperRequiringWritePermission(reportAction)) { + if (!isReportActionVisible(reportAction, actionReportID, canPerformWriteAction, visibleReportActionsData)) { return false; } diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index e5a07cba6a7b..6879a04f9ece 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -1162,7 +1162,11 @@ function isReportActionVisible( return false; } if (visibleReportActions) { - const staticVisibility = visibleReportActions[reportID]?.[reportAction.reportActionID] ?? true; + const staticVisibility = visibleReportActions[reportID]?.[reportAction.reportActionID]; + // If action is not in derived value cache, fall back to runtime calculation + if (staticVisibility === undefined) { + return shouldReportActionBeVisible(reportAction, reportAction.reportActionID, canUserPerformWriteAction); + } if (!staticVisibility) { return false; } diff --git a/src/pages/home/report/ReportActionsView.tsx b/src/pages/home/report/ReportActionsView.tsx index 0a72d597aa5c..af15b5cf89b3 100755 --- a/src/pages/home/report/ReportActionsView.tsx +++ b/src/pages/home/report/ReportActionsView.tsx @@ -25,11 +25,11 @@ import { getMostRecentIOURequestActionID, getOriginalMessage, getSortedReportActionsForDisplay, - isActionableWhisperRequiringWritePermission, isCreatedAction, isDeletedParentAction, isIOUActionMatchingTransactionList, isMoneyRequestAction, + isReportActionVisible, } from '@libs/ReportActionsUtils'; import {buildOptimisticCreatedReportAction, buildOptimisticIOUReportAction, canUserPerformWriteAction, isInvoiceReport, isMoneyRequestReport} from '@libs/ReportUtils'; import markOpenReportEnd from '@libs/telemetry/markOpenReportEnd'; @@ -228,14 +228,7 @@ function ReportActionsView({ } const actionReportID = reportAction.reportID ?? reportID; - const isStaticallyVisible = visibleReportActionsData?.[actionReportID]?.[reportAction.reportActionID]; - - const passesStaticVisibility = isStaticallyVisible ?? true; - if (!passesStaticVisibility) { - return false; - } - - if (!canPerformWriteAction && isActionableWhisperRequiringWritePermission(reportAction)) { + if (!isReportActionVisible(reportAction, actionReportID, canPerformWriteAction, visibleReportActionsData)) { return false; }