Fix for missing replacement text in bodyRanges
This commit is contained in:
parent
dab5386207
commit
3cc6c5f5ad
6 changed files with 72 additions and 38 deletions
|
@ -28,6 +28,8 @@ import {
|
|||
getConversationSelector,
|
||||
} from './conversations';
|
||||
|
||||
import { BodyRangeType } from '../../types/Util';
|
||||
|
||||
export const getSearch = (state: StateType): SearchStateType => state.search;
|
||||
|
||||
export const getQuery = createSelector(
|
||||
|
@ -110,29 +112,6 @@ export const getSearchResults = createSelector(
|
|||
}
|
||||
);
|
||||
|
||||
export function _messageSearchResultSelector(
|
||||
message: MessageSearchResultType,
|
||||
from: ConversationType,
|
||||
to: ConversationType,
|
||||
searchConversationId?: string,
|
||||
selectedMessageId?: string
|
||||
): MessageSearchResultPropsDataType {
|
||||
return {
|
||||
from,
|
||||
to,
|
||||
|
||||
id: message.id,
|
||||
conversationId: message.conversationId,
|
||||
sentAt: message.sent_at,
|
||||
snippet: message.snippet,
|
||||
bodyRanges: message.bodyRanges,
|
||||
body: message.body,
|
||||
|
||||
isSelected: Boolean(selectedMessageId && message.id === selectedMessageId),
|
||||
isSearchingInConversation: Boolean(searchConversationId),
|
||||
};
|
||||
}
|
||||
|
||||
// A little optimization to reset our selector cache whenever high-level application data
|
||||
// changes: regionCode and userNumber.
|
||||
type CachedMessageSearchResultSelectorType = (
|
||||
|
@ -142,18 +121,58 @@ type CachedMessageSearchResultSelectorType = (
|
|||
searchConversationId?: string,
|
||||
selectedMessageId?: string
|
||||
) => MessageSearchResultPropsDataType;
|
||||
|
||||
export const getCachedSelectorForMessageSearchResult = createSelector(
|
||||
getUserConversationId,
|
||||
(): CachedMessageSearchResultSelectorType => {
|
||||
getConversationSelector,
|
||||
(
|
||||
_,
|
||||
conversationSelector: GetConversationByIdType
|
||||
): CachedMessageSearchResultSelectorType => {
|
||||
// Note: memoizee will check all parameters provided, and only run our selector
|
||||
// if any of them have changed.
|
||||
return memoizee(_messageSearchResultSelector, { max: 500 });
|
||||
return memoizee(
|
||||
(
|
||||
message: MessageSearchResultType,
|
||||
from: ConversationType,
|
||||
to: ConversationType,
|
||||
searchConversationId?: string,
|
||||
selectedMessageId?: string
|
||||
) => {
|
||||
const bodyRanges = message.bodyRanges || [];
|
||||
return {
|
||||
from,
|
||||
to,
|
||||
|
||||
id: message.id,
|
||||
conversationId: message.conversationId,
|
||||
sentAt: message.sent_at,
|
||||
snippet: message.snippet,
|
||||
bodyRanges: bodyRanges.map((bodyRange: BodyRangeType) => {
|
||||
const conversation = conversationSelector(bodyRange.mentionUuid);
|
||||
|
||||
return {
|
||||
...bodyRange,
|
||||
replacementText: conversation.title,
|
||||
};
|
||||
}),
|
||||
body: message.body,
|
||||
|
||||
isSelected: Boolean(
|
||||
selectedMessageId && message.id === selectedMessageId
|
||||
),
|
||||
isSearchingInConversation: Boolean(searchConversationId),
|
||||
};
|
||||
},
|
||||
{ max: 500 }
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
type GetMessageSearchResultByIdType = (
|
||||
id: string
|
||||
) => MessageSearchResultPropsDataType | undefined;
|
||||
|
||||
export const getMessageSearchResultSelector = createSelector(
|
||||
getCachedSelectorForMessageSearchResult,
|
||||
getMessageSearchResultLookup,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue