From 38bfa2f221e470bc7f1f18a849f8bbe79369b0f7 Mon Sep 17 00:00:00 2001 From: MobileMage Date: Fri, 6 Feb 2026 20:08:19 +0100 Subject: [PATCH 1/2] Fix Company Cards error UI not shown with invalid workspace account ID When a workspace is created optimistically with failing network requests, workspaceAccountID is undefined and falls back to 0. Onyx silently discards writes to collection keys with member ID '0', so the error data from openPolicyCompanyCardsPage never reaches the UI. Guard loadPolicyCompanyCardsPage to skip the API call when domainOrWorkspaceAccountID is DEFAULT_NUMBER_ID, and synthesize the error locally in the table component so the error BlockingView renders. Fixes #81115 --- .../workspace/companyCards/WorkspaceCompanyCardsPage.tsx | 4 ++++ .../companyCards/WorkspaceCompanyCardsTable/index.tsx | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx b/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx index 077d40c10dce0..9dafded6510c7 100644 --- a/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx +++ b/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx @@ -45,6 +45,10 @@ function WorkspaceCompanyCardsPage({route}: WorkspaceCompanyCardsPageProps) { const domainOrWorkspaceAccountID = getDomainOrWorkspaceAccountID(workspaceAccountID, selectedFeed); const loadPolicyCompanyCardsPage = useCallback(() => { + if (domainOrWorkspaceAccountID === CONST.DEFAULT_NUMBER_ID) { + return; + } + openPolicyCompanyCardsPage(policyID, domainOrWorkspaceAccountID, translate); }, [domainOrWorkspaceAccountID, policyID, translate]); diff --git a/src/pages/workspace/companyCards/WorkspaceCompanyCardsTable/index.tsx b/src/pages/workspace/companyCards/WorkspaceCompanyCardsTable/index.tsx index 7b2892170b43b..1d5a34a02d872 100644 --- a/src/pages/workspace/companyCards/WorkspaceCompanyCardsTable/index.tsx +++ b/src/pages/workspace/companyCards/WorkspaceCompanyCardsTable/index.tsx @@ -95,7 +95,10 @@ function WorkspaceCompanyCardsTable({ const hasNoAssignedCard = Object.keys(assignedCards ?? {}).length === 0; const areWorkspaceCardFeedsLoading = !!workspaceCardFeedsStatus?.[domainOrWorkspaceAccountID]?.isLoading; - const workspaceCardFeedsErrors = workspaceCardFeedsStatus?.[domainOrWorkspaceAccountID]?.errors; + const shouldShowWorkspaceFeedsLoadError = domainOrWorkspaceAccountID === CONST.DEFAULT_NUMBER_ID && isPolicyLoaded && !isOffline; + const workspaceCardFeedsErrors = shouldShowWorkspaceFeedsLoadError + ? {[CONST.COMPANY_CARDS.WORKSPACE_FEEDS_LOAD_ERROR]: translate('workspace.companyCards.error.workspaceFeedsCouldNotBeLoadedMessage')} + : workspaceCardFeedsStatus?.[domainOrWorkspaceAccountID]?.errors; const selectedFeedStatus = selectedFeed?.status; const selectedFeedErrors = selectedFeedStatus?.errors; From df09e66d096963b155fa32cb1063c535bb979cc9 Mon Sep 17 00:00:00 2001 From: MobileMage Date: Sat, 14 Feb 2026 18:22:23 +0100 Subject: [PATCH 2/2] Add explanatory comments --- src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx | 1 + .../workspace/companyCards/WorkspaceCompanyCardsTable/index.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx b/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx index 9dafded6510c7..0796d4e2575a0 100644 --- a/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx +++ b/src/pages/workspace/companyCards/WorkspaceCompanyCardsPage.tsx @@ -45,6 +45,7 @@ function WorkspaceCompanyCardsPage({route}: WorkspaceCompanyCardsPageProps) { const domainOrWorkspaceAccountID = getDomainOrWorkspaceAccountID(workspaceAccountID, selectedFeed); const loadPolicyCompanyCardsPage = useCallback(() => { + // Skip the API call when workspaceAccountID is 0 -- Onyx discards writes to collection keys with member ID '0'. if (domainOrWorkspaceAccountID === CONST.DEFAULT_NUMBER_ID) { return; } diff --git a/src/pages/workspace/companyCards/WorkspaceCompanyCardsTable/index.tsx b/src/pages/workspace/companyCards/WorkspaceCompanyCardsTable/index.tsx index 1d5a34a02d872..1578d0e03312e 100644 --- a/src/pages/workspace/companyCards/WorkspaceCompanyCardsTable/index.tsx +++ b/src/pages/workspace/companyCards/WorkspaceCompanyCardsTable/index.tsx @@ -95,6 +95,7 @@ function WorkspaceCompanyCardsTable({ const hasNoAssignedCard = Object.keys(assignedCards ?? {}).length === 0; const areWorkspaceCardFeedsLoading = !!workspaceCardFeedsStatus?.[domainOrWorkspaceAccountID]?.isLoading; + // Synthesize error locally since Onyx discards writes to collection keys with member ID '0'. const shouldShowWorkspaceFeedsLoadError = domainOrWorkspaceAccountID === CONST.DEFAULT_NUMBER_ID && isPolicyLoaded && !isOffline; const workspaceCardFeedsErrors = shouldShowWorkspaceFeedsLoadError ? {[CONST.COMPANY_CARDS.WORKSPACE_FEEDS_LOAD_ERROR]: translate('workspace.companyCards.error.workspaceFeedsCouldNotBeLoadedMessage')}