@droppii-org/chat-mobile 0.2.63 → 0.2.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/components/flows/inputButtons/index.js +11 -6
- package/lib/module/components/flows/inputButtons/index.js.map +1 -1
- package/lib/module/components/messages/linkMessage/index.js +4 -2
- package/lib/module/components/messages/linkMessage/index.js.map +1 -1
- package/lib/module/components/messages/quotedMessage/index.js +3 -2
- package/lib/module/components/messages/quotedMessage/index.js.map +1 -1
- package/lib/module/components/messages/styles.js +6 -1
- package/lib/module/components/messages/styles.js.map +1 -1
- package/lib/module/components/messages/textMessage/index.js +3 -2
- package/lib/module/components/messages/textMessage/index.js.map +1 -1
- package/lib/module/components/messages/types.js.map +1 -1
- package/lib/module/context/ChatDetailContext.js +5 -3
- package/lib/module/context/ChatDetailContext.js.map +1 -1
- package/lib/module/hooks/flows/useFlow.js +1 -1
- package/lib/module/hooks/flows/useFlow.js.map +1 -1
- package/lib/module/hooks/message/useSearchMessage.js +39 -14
- package/lib/module/hooks/message/useSearchMessage.js.map +1 -1
- package/lib/module/screens/SearchConversation/SearchAllResult.js +25 -10
- package/lib/module/screens/SearchConversation/SearchAllResult.js.map +1 -1
- package/lib/module/screens/SearchConversation/SearchEmpty.js +22 -3
- package/lib/module/screens/SearchConversation/SearchEmpty.js.map +1 -1
- package/lib/module/screens/SearchConversation/SearchMessagesResult.js +23 -7
- package/lib/module/screens/SearchConversation/SearchMessagesResult.js.map +1 -1
- package/lib/module/screens/SearchConversation/SearchResultItem.js +53 -12
- package/lib/module/screens/SearchConversation/SearchResultItem.js.map +1 -1
- package/lib/module/screens/SearchMessage/SearchMessageResult.js +24 -7
- package/lib/module/screens/SearchMessage/SearchMessageResult.js.map +1 -1
- package/lib/module/screens/SearchMessage/SearchResultItem.js +31 -3
- package/lib/module/screens/SearchMessage/SearchResultItem.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +26 -17
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +4 -2
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
- package/lib/module/store/message.js +3 -0
- package/lib/module/store/message.js.map +1 -1
- package/lib/module/translation/resources/i18n.js +6 -2
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/types/chat.js.map +1 -1
- package/lib/module/types/events.js +1 -0
- package/lib/module/types/events.js.map +1 -1
- package/lib/module/utils/flows.js +4 -4
- package/lib/module/utils/flows.js.map +1 -1
- package/lib/module/utils/highlightSearch.js +38 -0
- package/lib/module/utils/highlightSearch.js.map +1 -0
- package/lib/module/utils/messageUtils.js +5 -1
- package/lib/module/utils/messageUtils.js.map +1 -1
- package/lib/typescript/src/components/flows/inputButtons/index.d.ts +1 -1
- package/lib/typescript/src/components/flows/inputButtons/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/linkMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/quotedMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/styles.d.ts +5 -0
- package/lib/typescript/src/components/messages/styles.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/textMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/types.d.ts +1 -0
- package/lib/typescript/src/components/messages/types.d.ts.map +1 -1
- package/lib/typescript/src/context/ChatDetailContext.d.ts.map +1 -1
- package/lib/typescript/src/hooks/flows/useFlow.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useSearchMessage.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/SearchAllResult.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts +7 -1
- package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/SearchMessagesResult.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts +1 -0
- package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchMessage/SearchMessageResult.d.ts.map +1 -1
- package/lib/typescript/src/screens/SearchMessage/SearchResultItem.d.ts +1 -0
- package/lib/typescript/src/screens/SearchMessage/SearchResultItem.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +2 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
- package/lib/typescript/src/store/message.d.ts.map +1 -1
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/types/chat.d.ts +1 -1
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/types/events.d.ts +5 -1
- package/lib/typescript/src/types/events.d.ts.map +1 -1
- package/lib/typescript/src/types/flows.d.ts +4 -0
- package/lib/typescript/src/types/flows.d.ts.map +1 -1
- package/lib/typescript/src/utils/flows.d.ts +1 -1
- package/lib/typescript/src/utils/flows.d.ts.map +1 -1
- package/lib/typescript/src/utils/highlightSearch.d.ts +7 -0
- package/lib/typescript/src/utils/highlightSearch.d.ts.map +1 -0
- package/lib/typescript/src/utils/messageUtils.d.ts +1 -0
- package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/flows/inputButtons/index.tsx +20 -12
- package/src/components/messages/linkMessage/index.tsx +3 -0
- package/src/components/messages/quotedMessage/index.tsx +2 -1
- package/src/components/messages/styles.ts +6 -1
- package/src/components/messages/textMessage/index.tsx +7 -1
- package/src/components/messages/types.ts +1 -0
- package/src/context/ChatDetailContext.tsx +23 -10
- package/src/hooks/flows/useFlow.ts +5 -1
- package/src/hooks/message/useSearchMessage.ts +46 -15
- package/src/screens/SearchConversation/SearchAllResult.tsx +24 -10
- package/src/screens/SearchConversation/SearchEmpty.tsx +38 -14
- package/src/screens/SearchConversation/SearchMessagesResult.tsx +39 -18
- package/src/screens/SearchConversation/SearchResultItem.tsx +72 -13
- package/src/screens/SearchMessage/SearchMessageResult.tsx +47 -20
- package/src/screens/SearchMessage/SearchResultItem.tsx +37 -5
- package/src/screens/chat-detail/ChatListLegend.tsx +48 -21
- package/src/screens/chat-detail/legend/LegendChatMessage.tsx +3 -0
- package/src/store/message.ts +2 -0
- package/src/translation/resources/i18n.ts +6 -2
- package/src/types/chat.ts +5 -1
- package/src/types/events.ts +5 -0
- package/src/types/flows.ts +4 -0
- package/src/utils/flows.ts +5 -6
- package/src/utils/highlightSearch.ts +48 -0
- package/src/utils/messageUtils.ts +16 -7
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface HighlightResult {
|
|
2
|
+
before: string;
|
|
3
|
+
match: string;
|
|
4
|
+
after: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const highlightSearch = (
|
|
8
|
+
text: string,
|
|
9
|
+
keyword: string,
|
|
10
|
+
maxLength = 30
|
|
11
|
+
): HighlightResult | null => {
|
|
12
|
+
if (!keyword) return null;
|
|
13
|
+
|
|
14
|
+
const lowerText = text.toLowerCase();
|
|
15
|
+
const lowerKeyword = keyword.toLowerCase();
|
|
16
|
+
const index = lowerText.indexOf(lowerKeyword);
|
|
17
|
+
|
|
18
|
+
if (index === -1) return null;
|
|
19
|
+
|
|
20
|
+
const before = text.slice(0, index);
|
|
21
|
+
const match = text.slice(index, index + keyword.length);
|
|
22
|
+
const after = text.slice(index + keyword.length);
|
|
23
|
+
|
|
24
|
+
if (keyword.length >= maxLength) {
|
|
25
|
+
return { before: '', match: match.slice(0, maxLength), after: '' };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const remain = maxLength - match.length;
|
|
29
|
+
let left = Math.floor(remain / 2);
|
|
30
|
+
let right = remain - left;
|
|
31
|
+
|
|
32
|
+
if (before.length < left) {
|
|
33
|
+
right += left - before.length;
|
|
34
|
+
left = before.length;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (after.length < right) {
|
|
38
|
+
left += right - after.length;
|
|
39
|
+
right = after.length;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const displayedBefore =
|
|
43
|
+
before.length > left ? '…' + before.slice(before.length - left) : before;
|
|
44
|
+
const displayedAfter =
|
|
45
|
+
after.length > right ? after.slice(0, right) + '…' : after;
|
|
46
|
+
|
|
47
|
+
return { before: displayedBefore, match, after: displayedAfter };
|
|
48
|
+
};
|
|
@@ -216,6 +216,21 @@ export const getPinnedMessagePreview = (
|
|
|
216
216
|
}
|
|
217
217
|
};
|
|
218
218
|
|
|
219
|
+
export const getSenderName = (
|
|
220
|
+
message: MessageItem,
|
|
221
|
+
currentUserId?: string,
|
|
222
|
+
conversation?: ConversationItem
|
|
223
|
+
): string => {
|
|
224
|
+
const sender =
|
|
225
|
+
currentUserId && message.sendID === currentUserId
|
|
226
|
+
? 'Bạn'
|
|
227
|
+
: message?.senderNickname ||
|
|
228
|
+
(conversation?.peerType === PeerType.Bot
|
|
229
|
+
? conversation?.showName || ''
|
|
230
|
+
: undefined);
|
|
231
|
+
return sender || '';
|
|
232
|
+
};
|
|
233
|
+
|
|
219
234
|
export interface GetLastMessageTextParams {
|
|
220
235
|
message: MessageItem | undefined;
|
|
221
236
|
currentUserId?: string;
|
|
@@ -233,13 +248,7 @@ export const getLastMessageText = ({
|
|
|
233
248
|
const preview = getMessagePreview(message);
|
|
234
249
|
if (!preview) return '';
|
|
235
250
|
|
|
236
|
-
const sender =
|
|
237
|
-
currentUserId && message.sendID === currentUserId
|
|
238
|
-
? 'Bạn'
|
|
239
|
-
: message.senderNickname ||
|
|
240
|
-
(conversation?.peerType === PeerType.Bot
|
|
241
|
-
? conversation?.showName || ''
|
|
242
|
-
: undefined);
|
|
251
|
+
const sender = getSenderName(message, currentUserId, conversation);
|
|
243
252
|
|
|
244
253
|
if (!sender) return preview;
|
|
245
254
|
|