Page MenuHomePhabricator

D13719.diff
No OneTemporary

D13719.diff

diff --git a/lib/selectors/chat-selectors.js b/lib/selectors/chat-selectors.js
--- a/lib/selectors/chat-selectors.js
+++ b/lib/selectors/chat-selectors.js
@@ -26,6 +26,8 @@
threadInChatList,
threadIsPending,
threadIsTopLevel,
+ threadIsSidebar,
+ threadIsInHome,
} from '../shared/thread-utils.js';
import { messageTypes } from '../types/message-types-enum.js';
import {
@@ -55,6 +57,7 @@
import { threeDays } from '../utils/date-utils.js';
import type { EntityText } from '../utils/entity-text.js';
import memoize2 from '../utils/memoize.js';
+import { entries } from '../utils/objects.js';
import { useSelector } from '../utils/redux-utils.js';
export type SidebarItem =
@@ -259,8 +262,25 @@
sidebarInfos: { +[id: string]: $ReadOnlyArray<SidebarInfo> },
filterFunction: (threadInfo: ?(ThreadInfo | RawThreadInfo)) => boolean,
): $ReadOnlyArray<ChatThreadItem> {
+ const threadHomeSubscriptions = Object.fromEntries(
+ entries(threadInfos).map(([id, threadInfo]) => [
+ id,
+ threadIsInHome(threadInfo),
+ ]),
+ );
return _flow(
- _filter(filterFunction),
+ _filter((threadInfo: ?(ThreadInfo | RawThreadInfo)) => {
+ const parentThreadID = threadInfo?.parentThreadID;
+ const isThreadInHome = threadIsInHome(threadInfo);
+
+ if (threadIsSidebar(threadInfo) && parentThreadID) {
+ const isParentInHome = threadHomeSubscriptions[parentThreadID];
+ if (isThreadInHome !== undefined && isParentInHome === isThreadInHome) {
+ return false;
+ }
+ }
+ return filterFunction(threadInfo);
+ }),
_map((threadInfo: ThreadInfo): ChatThreadItem =>
createChatThreadItem(
threadInfo,
diff --git a/lib/shared/thread-utils.js b/lib/shared/thread-utils.js
--- a/lib/shared/thread-utils.js
+++ b/lib/shared/thread-utils.js
@@ -1427,7 +1427,7 @@
if (!searchText) {
return chatListData.filter(
item =>
- threadIsTopLevel(item.threadInfo) && threadFilter(item.threadInfo),
+ threadInChatList(item.threadInfo) && threadFilter(item.threadInfo),
);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 17, 1:56 AM (20 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2305269
Default Alt Text
D13719.diff (2 KB)

Event Timeline