diff --git a/lib/components/chat-mention-provider.react.js b/lib/components/chat-mention-provider.react.js --- a/lib/components/chat-mention-provider.react.js +++ b/lib/components/chat-mention-provider.react.js @@ -7,8 +7,8 @@ import SentencePrefixSearchIndex from '../shared/sentence-prefix-search-index.js'; import { threadTypes } from '../types/thread-types-enum.js'; import type { - ChatMentionCandidates, ChatMentionCandidatesObj, + ChatMentionCandidate, ResolvedThreadInfo, ThreadInfo, } from '../types/thread-types.js'; @@ -80,7 +80,7 @@ } { const result: { [string]: { - [string]: ResolvedThreadInfo, + [string]: ChatMentionCandidate, }, } = {}; const visitedGenesisThreads = new Set(); @@ -91,15 +91,20 @@ if (!currentThreadCommunity) { if (!result[currentThreadID]) { result[currentThreadID] = { - [currentThreadID]: currentResolvedThreadInfo, + [currentThreadID]: { + threadInfo: currentResolvedThreadInfo, + rawChatName: threadInfos[currentThreadID].uiName, + }, }; } continue; } if (!result[currentThreadCommunity]) { result[currentThreadCommunity] = {}; - result[currentThreadCommunity][currentThreadCommunity] = - resolvedThreadInfos[currentThreadCommunity]; + result[currentThreadCommunity][currentThreadCommunity] = { + threadInfo: resolvedThreadInfos[currentThreadCommunity], + rawChatName: threadInfos[currentThreadCommunity].uiName, + }; } // Handle GENESIS community case: mentioning inside GENESIS should only // show chats and threads inside the top level that is below GENESIS. @@ -146,7 +151,10 @@ result[lastThreadInTraversePath.id] = {}; } for (const threadInfo of threadTraversePath) { - result[lastThreadInTraversePath.id][threadInfo.id] = threadInfo; + result[lastThreadInTraversePath.id][threadInfo.id] = { + threadInfo, + rawChatName: threadInfos[threadInfo.id].uiName, + }; communityThreadIDForGenesisThreads[threadInfo.id] = lastThreadInTraversePath.id; } @@ -154,8 +162,10 @@ lastThreadInTraversePath.type !== threadTypes.PERSONAL && lastThreadInTraversePath.type !== threadTypes.PRIVATE ) { - result[genesis.id][lastThreadInTraversePath.id] = - lastThreadInTraversePath; + result[genesis.id][lastThreadInTraversePath.id] = { + threadInfo: lastThreadInTraversePath, + rawChatName: threadInfos[lastThreadInTraversePath.id].uiName, + }; } } else { if ( @@ -170,14 +180,20 @@ for (const threadInfo of threadTraversePath) { result[lastThreadInTraversePathParentCommunityThreadID][ threadInfo.id - ] = threadInfo; + ] = { + threadInfo, + rawChatName: threadInfos[threadInfo.id].uiName, + }; communityThreadIDForGenesisThreads[threadInfo.id] = lastThreadInTraversePathParentCommunityThreadID; } } continue; } - result[currentThreadCommunity][currentThreadID] = currentResolvedThreadInfo; + result[currentThreadCommunity][currentThreadID] = { + threadInfo: currentResolvedThreadInfo, + rawChatName: threadInfos[currentThreadID].uiName, + }; } return { chatMentionCandidatesObj: result, @@ -193,7 +209,7 @@ function useChatMentionCandidatesObjAndUtils(): { chatMentionCandidatesObj: ChatMentionCandidatesObj, - resolvedThreadInfos: ChatMentionCandidates, + resolvedThreadInfos: { +[id: string]: ResolvedThreadInfo }, communityThreadIDForGenesisThreads: { +[id: string]: string }, } { const threadInfos = useSelector(threadInfoSelector); @@ -226,7 +242,9 @@ for (const threadID in chatMentionCandidatesObj[communityThreadID]) { searchIndexEntries.push({ id: threadID, - uiName: chatMentionCandidatesObj[communityThreadID][threadID].uiName, + uiName: + chatMentionCandidatesObj[communityThreadID][threadID].threadInfo + .uiName, }); } // Sort the keys so that the order of the search result is consistent diff --git a/lib/shared/markdown.js b/lib/shared/markdown.js --- a/lib/shared/markdown.js +++ b/lib/shared/markdown.js @@ -289,7 +289,8 @@ content: string, hasAccessToChat: boolean, } { - const threadInfo = chatMentionCandidates[capture[3]]; + const chatMentionCandidate = chatMentionCandidates[capture[3]]; + const threadInfo = chatMentionCandidate?.threadInfo; const threadName = threadInfo?.uiName ?? decodeChatMentionText(capture[4]); const content = `${capture[1]}@${threadName}`; return { diff --git a/lib/shared/mention-utils.js b/lib/shared/mention-utils.js --- a/lib/shared/mention-utils.js +++ b/lib/shared/mention-utils.js @@ -155,7 +155,7 @@ } result.push({ type: 'chat', - threadInfo: chatMentionCandidates[threadID], + threadInfo: chatMentionCandidates[threadID].threadInfo, }); } return result; diff --git a/lib/types/thread-types.js b/lib/types/thread-types.js --- a/lib/types/thread-types.js +++ b/lib/types/thread-types.js @@ -489,8 +489,12 @@ export type ThreadStoreThreadInfos = LegacyRawThreadInfos; +export type ChatMentionCandidate = { + +threadInfo: ResolvedThreadInfo, + +rawChatName: string | ThreadEntity, +}; export type ChatMentionCandidates = { - +[id: string]: ResolvedThreadInfo, + +[id: string]: ChatMentionCandidate, }; export type ChatMentionCandidatesObj = { +[id: string]: ChatMentionCandidates,