From ee1b7c826c6e5c75cfb6035f192ce6fd1641d858 Mon Sep 17 00:00:00 2001
From: Andrew Rosiclair <arosiclair@expensify.com>
Date: Wed, 24 Jan 2024 15:33:34 -0500
Subject: [PATCH] Revert "Merge pull request #34237 from
 FitseTLT/fix-include-current-user-on-members-list"

This reverts commit 5d41d84a6a24910affaf224351971991a177e034, reversing
changes made to c0fbb9798af00257b3d2fb504be63d797a622087.
---
 src/libs/ReportUtils.ts             | 146 ++++++++++++----------------
 src/pages/ReportParticipantsPage.js |   3 +-
 src/pages/home/HeaderView.js        |   2 +-
 3 files changed, 66 insertions(+), 85 deletions(-)

diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index 1d888b087e53..e9c3b1710cc0 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -1460,84 +1460,6 @@ function getWorkspaceIcon(report: OnyxEntry<Report>, policy: OnyxEntry<Policy> =
     return workspaceIcon;
 }
 
-/**
- * Checks if a report is a group chat.
- *
- * A report is a group chat if it meets the following conditions:
- * - Not a chat thread.
- * - Not a task report.
- * - Not a money request / IOU report.
- * - Not an archived room.
- * - Not a public / admin / announce chat room (chat type doesn't match any of the specified types).
- * - More than 1 participant (note that participantAccountIDs excludes the current user).
- *
- */
-function isGroupChat(report: OnyxEntry<Report>): boolean {
-    return Boolean(
-        report &&
-            !isChatThread(report) &&
-            !isTaskReport(report) &&
-            !isMoneyRequestReport(report) &&
-            !isArchivedRoom(report) &&
-            !Object.values(CONST.REPORT.CHAT_TYPE).some((chatType) => chatType === getChatType(report)) &&
-            (report.participantAccountIDs?.length ?? 0) > 1,
-    );
-}
-
-function getGroupChatParticipantIDs(participants: number[]): number[] {
-    return [...new Set([...participants, ...(currentUserAccountID ? [currentUserAccountID] : [])])];
-}
-
-/**
- * Returns an array of the participants Ids of a report
- *
- * @deprecated Use getVisibleMemberIDs instead
- */
-function getParticipantsIDs(report: OnyxEntry<Report>): number[] {
-    if (!report) {
-        return [];
-    }
-
-    const participants = report.participantAccountIDs ?? [];
-
-    // Build participants list for IOU/expense reports
-    if (isMoneyRequestReport(report)) {
-        const onlyTruthyValues = [report.managerID, report.ownerAccountID, ...participants].filter(Boolean) as number[];
-        const onlyUnique = [...new Set([...onlyTruthyValues])];
-        return onlyUnique;
-    }
-
-    if (isGroupChat(report)) {
-        return getGroupChatParticipantIDs(participants);
-    }
-
-    return participants;
-}
-
-/**
- * Returns an array of the visible member accountIDs for a report
- */
-function getVisibleMemberIDs(report: OnyxEntry<Report>): number[] {
-    if (!report) {
-        return [];
-    }
-
-    const visibleChatMemberAccountIDs = report.visibleChatMemberAccountIDs ?? [];
-
-    // Build participants list for IOU/expense reports
-    if (isMoneyRequestReport(report)) {
-        const onlyTruthyValues = [report.managerID, report.ownerAccountID, ...visibleChatMemberAccountIDs].filter(Boolean) as number[];
-        const onlyUnique = [...new Set([...onlyTruthyValues])];
-        return onlyUnique;
-    }
-
-    if (isGroupChat(report)) {
-        return getGroupChatParticipantIDs(visibleChatMemberAccountIDs);
-    }
-
-    return visibleChatMemberAccountIDs;
-}
-
 /**
  * Returns the appropriate icons for the given chat report using the stored personalDetails.
  * The Avatar sources can be URLs or Icon components according to the chat type.
@@ -1654,10 +1576,6 @@ function getIcons(
         return isPayer ? [managerIcon, ownerIcon] : [ownerIcon, managerIcon];
     }
 
-    if (isGroupChat(report)) {
-        return getIconsForParticipants(getVisibleMemberIDs(report), personalDetails);
-    }
-
     return getIconsForParticipants(report?.participantAccountIDs ?? [], personalDetails);
 }
 
@@ -4449,6 +4367,46 @@ function getTaskAssigneeChatOnyxData(
     };
 }
 
+/**
+ * Returns an array of the participants Ids of a report
+ *
+ * @deprecated Use getVisibleMemberIDs instead
+ */
+function getParticipantsIDs(report: OnyxEntry<Report>): number[] {
+    if (!report) {
+        return [];
+    }
+
+    const participants = report.participantAccountIDs ?? [];
+
+    // Build participants list for IOU/expense reports
+    if (isMoneyRequestReport(report)) {
+        const onlyTruthyValues = [report.managerID, report.ownerAccountID, ...participants].filter(Boolean) as number[];
+        const onlyUnique = [...new Set([...onlyTruthyValues])];
+        return onlyUnique;
+    }
+    return participants;
+}
+
+/**
+ * Returns an array of the visible member accountIDs for a report*
+ */
+function getVisibleMemberIDs(report: OnyxEntry<Report>): number[] {
+    if (!report) {
+        return [];
+    }
+
+    const visibleChatMemberAccountIDs = report.visibleChatMemberAccountIDs ?? [];
+
+    // Build participants list for IOU/expense reports
+    if (isMoneyRequestReport(report)) {
+        const onlyTruthyValues = [report.managerID, report.ownerAccountID, ...visibleChatMemberAccountIDs].filter(Boolean) as number[];
+        const onlyUnique = [...new Set([...onlyTruthyValues])];
+        return onlyUnique;
+    }
+    return visibleChatMemberAccountIDs;
+}
+
 /**
  * Return iou report action display message
  */
@@ -4505,6 +4463,30 @@ function getIOUReportActionDisplayMessage(reportAction: OnyxEntry<ReportAction>)
     });
 }
 
+/**
+ * Checks if a report is a group chat.
+ *
+ * A report is a group chat if it meets the following conditions:
+ * - Not a chat thread.
+ * - Not a task report.
+ * - Not a money request / IOU report.
+ * - Not an archived room.
+ * - Not a public / admin / announce chat room (chat type doesn't match any of the specified types).
+ * - More than 2 participants.
+ *
+ */
+function isGroupChat(report: OnyxEntry<Report>): boolean {
+    return Boolean(
+        report &&
+            !isChatThread(report) &&
+            !isTaskReport(report) &&
+            !isMoneyRequestReport(report) &&
+            !isArchivedRoom(report) &&
+            !Object.values(CONST.REPORT.CHAT_TYPE).some((chatType) => chatType === getChatType(report)) &&
+            (report.participantAccountIDs?.length ?? 0) > 2,
+    );
+}
+
 function shouldUseFullTitleToDisplay(report: OnyxEntry<Report>): boolean {
     return isMoneyRequestReport(report) || isPolicyExpenseChat(report) || isChatRoom(report) || isChatThread(report) || isTaskReport(report);
 }
diff --git a/src/pages/ReportParticipantsPage.js b/src/pages/ReportParticipantsPage.js
index 65238fd5ea8c..7dbc1c7036c4 100755
--- a/src/pages/ReportParticipantsPage.js
+++ b/src/pages/ReportParticipantsPage.js
@@ -100,8 +100,7 @@ function ReportParticipantsPage(props) {
                 <FullPageNotFoundView shouldShow={_.isEmpty(props.report) || ReportUtils.isArchivedRoom(props.report)}>
                     <HeaderWithBackButton
                         title={props.translate(
-                            ReportUtils.isGroupChat(props.report) ||
-                                ReportUtils.isChatRoom(props.report) ||
+                            ReportUtils.isChatRoom(props.report) ||
                                 ReportUtils.isPolicyExpenseChat(props.report) ||
                                 ReportUtils.isChatThread(props.report) ||
                                 ReportUtils.isTaskReport(props.report) ||
diff --git a/src/pages/home/HeaderView.js b/src/pages/home/HeaderView.js
index 813d05707098..2a98a50552be 100644
--- a/src/pages/home/HeaderView.js
+++ b/src/pages/home/HeaderView.js
@@ -95,7 +95,7 @@ function HeaderView(props) {
     const {translate} = useLocalize();
     const theme = useTheme();
     const styles = useThemeStyles();
-    const participants = ReportUtils.getParticipantsIDs(props.report);
+    const participants = lodashGet(props.report, 'participantAccountIDs', []);
     const participantPersonalDetails = OptionsListUtils.getPersonalDetailsForAccountIDs(participants, props.personalDetails);
     const isMultipleParticipant = participants.length > 1;
     const displayNamesWithTooltips = ReportUtils.getDisplayNamesWithTooltips(participantPersonalDetails, isMultipleParticipant);
