Changeset View
Changeset View
Standalone View
Standalone View
lib/selectors/chat-selectors.js
Show First 20 Lines • Show All 121 Lines • ▼ Show 20 Lines | return mostRecentMessageInfo | ||||
: threadInfo.creationTime; | : threadInfo.creationTime; | ||||
} | } | ||||
function createChatThreadItem( | function createChatThreadItem( | ||||
threadInfo: ThreadInfo, | threadInfo: ThreadInfo, | ||||
messageStore: MessageStore, | messageStore: MessageStore, | ||||
messages: { +[id: string]: ?MessageInfo }, | messages: { +[id: string]: ?MessageInfo }, | ||||
sidebarInfos: ?$ReadOnlyArray<SidebarInfo>, | sidebarInfos: ?$ReadOnlyArray<SidebarInfo>, | ||||
): ChatThreadItem { | ): ?ChatThreadItem { | ||||
const mostRecentMessageInfo = getMostRecentMessageInfo( | const mostRecentMessageInfo = getMostRecentMessageInfo( | ||||
threadInfo, | threadInfo, | ||||
messageStore, | messageStore, | ||||
messages, | messages, | ||||
); | ); | ||||
if (!mostRecentMessageInfo) { | |||||
return null; | |||||
} | |||||
const mostRecentNonLocalMessage = getMostRecentNonLocalMessageID( | const mostRecentNonLocalMessage = getMostRecentNonLocalMessageID( | ||||
threadInfo.id, | threadInfo.id, | ||||
messageStore, | messageStore, | ||||
); | ); | ||||
const lastUpdatedTime = getLastUpdatedTime(threadInfo, mostRecentMessageInfo); | const lastUpdatedTime = getLastUpdatedTime(threadInfo, mostRecentMessageInfo); | ||||
const sidebars = sidebarInfos ?? []; | const sidebars = sidebarInfos ?? []; | ||||
const allSidebarItems = sidebars.map(sidebarInfo => ({ | const allSidebarItems = sidebars.map(sidebarInfo => ({ | ||||
▲ Show 20 Lines • Show All 107 Lines • ▼ Show 20 Lines | function getChatThreadItems( | ||||
threadInfos: { +[id: string]: ThreadInfo }, | threadInfos: { +[id: string]: ThreadInfo }, | ||||
messageStore: MessageStore, | messageStore: MessageStore, | ||||
messageInfos: { +[id: string]: ?MessageInfo }, | messageInfos: { +[id: string]: ?MessageInfo }, | ||||
sidebarInfos: { +[id: string]: $ReadOnlyArray<SidebarInfo> }, | sidebarInfos: { +[id: string]: $ReadOnlyArray<SidebarInfo> }, | ||||
filterFunction: (threadInfo: ?(ThreadInfo | RawThreadInfo)) => boolean, | filterFunction: (threadInfo: ?(ThreadInfo | RawThreadInfo)) => boolean, | ||||
): $ReadOnlyArray<ChatThreadItem> { | ): $ReadOnlyArray<ChatThreadItem> { | ||||
return _flow( | return _flow( | ||||
_filter(filterFunction), | _filter(filterFunction), | ||||
_map((threadInfo: ThreadInfo): ChatThreadItem => | _map((threadInfo: ThreadInfo): ?ChatThreadItem => | ||||
createChatThreadItem( | createChatThreadItem( | ||||
threadInfo, | threadInfo, | ||||
messageStore, | messageStore, | ||||
messageInfos, | messageInfos, | ||||
sidebarInfos[threadInfo.id], | sidebarInfos[threadInfo.id], | ||||
), | ), | ||||
), | ), | ||||
_filter(Boolean), | |||||
_orderBy('lastUpdatedTimeIncludingSidebars')('desc'), | _orderBy('lastUpdatedTimeIncludingSidebars')('desc'), | ||||
)(threadInfos); | )(threadInfos); | ||||
} | } | ||||
export type RobotextChatMessageInfoItem = { | export type RobotextChatMessageInfoItem = { | ||||
+itemType: 'message', | +itemType: 'message', | ||||
+messageInfoType: 'robotext', | +messageInfoType: 'robotext', | ||||
+messageInfo: RobotextMessageInfo, | +messageInfo: RobotextMessageInfo, | ||||
▲ Show 20 Lines • Show All 420 Lines • Show Last 20 Lines |