From 2ff8e8f7f51cc0cc48449c50731d6048843697c5 Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Thu, 1 Feb 2024 11:54:35 +0100 Subject: [PATCH 1/7] Remove CONST.BRICK_ROAD --- src/CONST.ts | 4 --- src/libs/WorkspacesUtils.ts | 42 ++++++++++++------------------ src/pages/WorkspaceSwitcherPage.js | 8 +++--- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 9d0a90a6a53d..4870dd0a12fe 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -3104,10 +3104,6 @@ const CONST = { DEFAULT: 5, CAROUSEL: 3, }, - BRICK_ROAD: { - GBR: 'info', - RBR: 'error', - }, /** * Constants for types of violations. diff --git a/src/libs/WorkspacesUtils.ts b/src/libs/WorkspacesUtils.ts index f0d93183e480..1c1cf40bb33a 100644 --- a/src/libs/WorkspacesUtils.ts +++ b/src/libs/WorkspacesUtils.ts @@ -13,7 +13,7 @@ type CheckingMethod = () => boolean; let allReports: OnyxCollection; -type BrickRoad = ValueOf | undefined; +type BrickRoad = ValueOf | undefined; Onyx.connect({ key: ONYXKEYS.COLLECTION.REPORT, @@ -57,7 +57,7 @@ const getBrickRoadForPolicy = (report: Report): BrickRoad => { const reportErrors = OptionsListUtils.getAllReportErrors(report, reportActions); const doesReportContainErrors = Object.keys(reportErrors ?? {}).length !== 0 ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined; if (doesReportContainErrors) { - return CONST.BRICK_ROAD.RBR; + return CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; } // To determine if the report requires attention from the current user, we need to load the parent report action @@ -68,7 +68,7 @@ const getBrickRoadForPolicy = (report: Report): BrickRoad => { } const reportOption = {...report, isUnread: ReportUtils.isUnread(report), isUnreadWithMention: ReportUtils.isUnreadWithMention(report)}; const shouldShowGreenDotIndicator = ReportUtils.requiresAttentionFromCurrentUser(reportOption, itemParentReportAction); - return shouldShowGreenDotIndicator ? CONST.BRICK_ROAD.GBR : undefined; + return shouldShowGreenDotIndicator ? CONST.BRICK_ROAD_INDICATOR_STATUS.INFO : undefined; }; function hasGlobalWorkspaceSettingsRBR(policies: OnyxCollection, policyMembers: OnyxCollection) { @@ -98,16 +98,16 @@ function getChatTabBrickRoad(policyID?: string): BrickRoad | undefined { let brickRoad: BrickRoad | undefined; - Object.keys(allReports).forEach((report) => { + Object.keys(allReports).forEach((reportID) => { if (brickRoad === CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR) { return; } - if (policyID && policyID !== allReports?.[report]?.policyID) { + if (policyID && policyID !== allReports?.[reportID]?.policyID) { return; } - const policyReport = allReports ? allReports[report] : null; + const policyReport = allReports ? allReports[reportID] : null; if (!policyReport) { return; @@ -152,22 +152,20 @@ function getWorkspacesBrickRoads(): Record { // The key in this map is the workspace id const workspacesBrickRoadsMap: Record = {}; - const cleanPolicies = Object.fromEntries(Object.entries(allPolicies ?? {}).filter(([, policy]) => !!policy)); - - Object.values(cleanPolicies).forEach((policy) => { + Object.values(allPolicies ?? {}).forEach((policy) => { if (!policy) { return; } if (hasWorkspaceSettingsRBR(policy)) { - workspacesBrickRoadsMap[policy.id] = CONST.BRICK_ROAD.RBR; + workspacesBrickRoadsMap[policy.id] = CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; } }); - Object.keys(allReports).forEach((report) => { - const policyID = allReports?.[report]?.policyID ?? CONST.POLICY.EMPTY; - const policyReport = allReports ? allReports[report] : null; - if (!policyReport || workspacesBrickRoadsMap[policyID] === CONST.BRICK_ROAD.RBR) { + Object.keys(allReports).forEach((reportID) => { + const policyID = allReports?.[reportID]?.policyID ?? CONST.POLICY.EMPTY; + const policyReport = allReports ? allReports[reportID] : null; + if (!policyReport || workspacesBrickRoadsMap[policyID] === CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR) { return; } const workspaceBrickRoad = getBrickRoadForPolicy(policyReport); @@ -192,20 +190,14 @@ function getWorkspacesUnreadStatuses(): Record { const workspacesUnreadStatuses: Record = {}; - Object.keys(allReports).forEach((report) => { - const policyID = allReports?.[report]?.policyID; - const policyReport = allReports ? allReports[report] : null; - if (!policyID || !policyReport) { + Object.keys(allReports).forEach((reportID) => { + const policyID = allReports?.[reportID]?.policyID; + const policyReport = allReports ? allReports[reportID] : null; + if (!policyID || (!policyReport && workspacesUnreadStatuses[policyID])) { return; } - const unreadStatus = ReportUtils.isUnread(policyReport); - - if (unreadStatus) { - workspacesUnreadStatuses[policyID] = true; - } else { - workspacesUnreadStatuses[policyID] = false; - } + workspacesUnreadStatuses[policyID] = ReportUtils.isUnread(policyReport); }); return workspacesUnreadStatuses; diff --git a/src/pages/WorkspaceSwitcherPage.js b/src/pages/WorkspaceSwitcherPage.js index 9972a7bac5ba..6c63617200c8 100644 --- a/src/pages/WorkspaceSwitcherPage.js +++ b/src/pages/WorkspaceSwitcherPage.js @@ -84,12 +84,12 @@ function WorkspaceSwitcherPage({policies}) { return brickRoadsForPolicies[policyId]; } - if (_.values(brickRoadsForPolicies).includes(CONST.BRICK_ROAD.RBR)) { - return CONST.BRICK_ROAD.RBR; + if (_.values(brickRoadsForPolicies).includes(CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR)) { + return CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; } - if (_.values(brickRoadsForPolicies).includes(CONST.BRICK_ROAD.GBR)) { - return CONST.BRICK_ROAD.GBR; + if (_.values(brickRoadsForPolicies).includes(CONST.BRICK_ROAD_INDICATOR_STATUS.INFO)) { + return CONST.BRICK_ROAD_INDICATOR_STATUS.INFO; } return undefined; From 55242e5018e31b7bbd803775362c040e80a6ee71 Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Thu, 1 Feb 2024 12:21:22 +0100 Subject: [PATCH 2/7] Refactor getWorkspacesUnreadStatuses and getWorkspacesBrickRoads --- src/libs/WorkspacesUtils.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/libs/WorkspacesUtils.ts b/src/libs/WorkspacesUtils.ts index 1c1cf40bb33a..9a1a258a893a 100644 --- a/src/libs/WorkspacesUtils.ts +++ b/src/libs/WorkspacesUtils.ts @@ -162,13 +162,12 @@ function getWorkspacesBrickRoads(): Record { } }); - Object.keys(allReports).forEach((reportID) => { - const policyID = allReports?.[reportID]?.policyID ?? CONST.POLICY.EMPTY; - const policyReport = allReports ? allReports[reportID] : null; - if (!policyReport || workspacesBrickRoadsMap[policyID] === CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR) { + Object.values(allReports).forEach((report) => { + const policyID = report?.policyID ?? CONST.POLICY.EMPTY; + if (!report || workspacesBrickRoadsMap[policyID] === CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR) { return; } - const workspaceBrickRoad = getBrickRoadForPolicy(policyReport); + const workspaceBrickRoad = getBrickRoadForPolicy(report); if (!workspaceBrickRoad && !!workspacesBrickRoadsMap[policyID]) { return; @@ -190,14 +189,13 @@ function getWorkspacesUnreadStatuses(): Record { const workspacesUnreadStatuses: Record = {}; - Object.keys(allReports).forEach((reportID) => { - const policyID = allReports?.[reportID]?.policyID; - const policyReport = allReports ? allReports[reportID] : null; - if (!policyID || (!policyReport && workspacesUnreadStatuses[policyID])) { + Object.values(allReports).forEach((report) => { + const policyID = report?.policyID; + if (!policyID || workspacesUnreadStatuses[policyID]) { return; } - workspacesUnreadStatuses[policyID] = ReportUtils.isUnread(policyReport); + workspacesUnreadStatuses[policyID] = ReportUtils.isUnread(report); }); return workspacesUnreadStatuses; From f305cc1af586d21373c7dda50c06b649c7967f62 Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Thu, 1 Feb 2024 12:35:46 +0100 Subject: [PATCH 3/7] Refactor getChatTabBrickRoad --- src/libs/WorkspacesUtils.ts | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/src/libs/WorkspacesUtils.ts b/src/libs/WorkspacesUtils.ts index 9a1a258a893a..333f51bd6d4c 100644 --- a/src/libs/WorkspacesUtils.ts +++ b/src/libs/WorkspacesUtils.ts @@ -98,32 +98,19 @@ function getChatTabBrickRoad(policyID?: string): BrickRoad | undefined { let brickRoad: BrickRoad | undefined; - Object.keys(allReports).forEach((reportID) => { - if (brickRoad === CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR) { - return; - } - - if (policyID && policyID !== allReports?.[reportID]?.policyID) { - return; - } - - const policyReport = allReports ? allReports[reportID] : null; + const policyReports = policyID ? Object.values(allReports).filter((report) => report?.policyID === policyID) : Object.values(allReports); - if (!policyReport) { - return; - } + const hasChatTabRBR = policyReports.some((report) => report && getBrickRoadForPolicy(report) === CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR); - const workspaceBrickRoad = getBrickRoadForPolicy(policyReport); + if (hasChatTabRBR) { + return CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; + } - if (workspaceBrickRoad === CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR) { - brickRoad = CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; - return; - } + const hasChatTabGBR = policyReports.some((report) => report && getBrickRoadForPolicy(report) === CONST.BRICK_ROAD_INDICATOR_STATUS.INFO); - if (!brickRoad && workspaceBrickRoad) { - brickRoad = workspaceBrickRoad; - } - }); + if (hasChatTabGBR) { + return CONST.BRICK_ROAD_INDICATOR_STATUS.INFO; + } return brickRoad; } From e8689ecf0d487003ef7051f60e725a0aeb481f6b Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Thu, 1 Feb 2024 13:33:24 +0100 Subject: [PATCH 4/7] Add fix to ActiveWorkspaceContext --- src/components/ActiveWorkspace/ActiveWorkspaceContext.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ActiveWorkspace/ActiveWorkspaceContext.tsx b/src/components/ActiveWorkspace/ActiveWorkspaceContext.tsx index 466f0f492c8e..408c8beb046a 100644 --- a/src/components/ActiveWorkspace/ActiveWorkspaceContext.tsx +++ b/src/components/ActiveWorkspace/ActiveWorkspaceContext.tsx @@ -5,7 +5,7 @@ type ActiveWorkspaceContextType = { setActiveWorkspaceID: (activeWorkspaceID?: string) => void; }; -const ActiveWorkspaceContext = createContext({activeWorkspaceID: undefined, setActiveWorkspaceID: () => undefined}); +const ActiveWorkspaceContext = createContext(null); export default ActiveWorkspaceContext; export {type ActiveWorkspaceContextType}; From 2940dc1efe4e3ee6b3a8b2054a0f94477310e5d5 Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Thu, 1 Feb 2024 13:34:00 +0100 Subject: [PATCH 5/7] Refactor getChatTabBrickRoad --- src/libs/WorkspacesUtils.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/libs/WorkspacesUtils.ts b/src/libs/WorkspacesUtils.ts index 333f51bd6d4c..c41393cb75f7 100644 --- a/src/libs/WorkspacesUtils.ts +++ b/src/libs/WorkspacesUtils.ts @@ -96,23 +96,28 @@ function getChatTabBrickRoad(policyID?: string): BrickRoad | undefined { return undefined; } - let brickRoad: BrickRoad | undefined; - + // If policyID is undefined, then all reports are checked whether they contain any brick road const policyReports = policyID ? Object.values(allReports).filter((report) => report?.policyID === policyID) : Object.values(allReports); - const hasChatTabRBR = policyReports.some((report) => report && getBrickRoadForPolicy(report) === CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR); + let hasChatTabGBR = false; + + const hasChatTabRBR = policyReports.some((report) => { + const brickRoad = report ? getBrickRoadForPolicy(report) : undefined; + if (!hasChatTabGBR && brickRoad === CONST.BRICK_ROAD_INDICATOR_STATUS.INFO) { + hasChatTabGBR = true; + } + return brickRoad === CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; + }); if (hasChatTabRBR) { return CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR; } - const hasChatTabGBR = policyReports.some((report) => report && getBrickRoadForPolicy(report) === CONST.BRICK_ROAD_INDICATOR_STATUS.INFO); - if (hasChatTabGBR) { return CONST.BRICK_ROAD_INDICATOR_STATUS.INFO; } - return brickRoad; + return undefined; } function checkIfWorkspaceSettingsTabHasRBR(policyID?: string) { From b20f497f7ca618ddd9b102936a227a4963f0e4c8 Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Thu, 1 Feb 2024 14:08:38 +0100 Subject: [PATCH 6/7] Add missing docs in Policy.ts --- src/types/onyx/Policy.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/onyx/Policy.ts b/src/types/onyx/Policy.ts index 966c9f2139da..96ed47f210c9 100644 --- a/src/types/onyx/Policy.ts +++ b/src/types/onyx/Policy.ts @@ -154,6 +154,7 @@ type Policy = { /** ReportID of the admins room for this workspace */ chatReportIDAdmins?: number; + /** ReportID of the announce room for this workspace */ chatReportIDAnnounce?: number; }; From b3ae304ee09b4381b1d8170da722086f487d80ad Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Thu, 1 Feb 2024 14:10:40 +0100 Subject: [PATCH 7/7] Add fix to ActiveWorkspaceContext --- src/components/ActiveWorkspace/ActiveWorkspaceContext.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ActiveWorkspace/ActiveWorkspaceContext.tsx b/src/components/ActiveWorkspace/ActiveWorkspaceContext.tsx index 408c8beb046a..466f0f492c8e 100644 --- a/src/components/ActiveWorkspace/ActiveWorkspaceContext.tsx +++ b/src/components/ActiveWorkspace/ActiveWorkspaceContext.tsx @@ -5,7 +5,7 @@ type ActiveWorkspaceContextType = { setActiveWorkspaceID: (activeWorkspaceID?: string) => void; }; -const ActiveWorkspaceContext = createContext(null); +const ActiveWorkspaceContext = createContext({activeWorkspaceID: undefined, setActiveWorkspaceID: () => undefined}); export default ActiveWorkspaceContext; export {type ActiveWorkspaceContextType};