@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.
Files changed (112) hide show
  1. package/lib/module/components/flows/inputButtons/index.js +11 -6
  2. package/lib/module/components/flows/inputButtons/index.js.map +1 -1
  3. package/lib/module/components/messages/linkMessage/index.js +4 -2
  4. package/lib/module/components/messages/linkMessage/index.js.map +1 -1
  5. package/lib/module/components/messages/quotedMessage/index.js +3 -2
  6. package/lib/module/components/messages/quotedMessage/index.js.map +1 -1
  7. package/lib/module/components/messages/styles.js +6 -1
  8. package/lib/module/components/messages/styles.js.map +1 -1
  9. package/lib/module/components/messages/textMessage/index.js +3 -2
  10. package/lib/module/components/messages/textMessage/index.js.map +1 -1
  11. package/lib/module/components/messages/types.js.map +1 -1
  12. package/lib/module/context/ChatDetailContext.js +5 -3
  13. package/lib/module/context/ChatDetailContext.js.map +1 -1
  14. package/lib/module/hooks/flows/useFlow.js +1 -1
  15. package/lib/module/hooks/flows/useFlow.js.map +1 -1
  16. package/lib/module/hooks/message/useSearchMessage.js +39 -14
  17. package/lib/module/hooks/message/useSearchMessage.js.map +1 -1
  18. package/lib/module/screens/SearchConversation/SearchAllResult.js +25 -10
  19. package/lib/module/screens/SearchConversation/SearchAllResult.js.map +1 -1
  20. package/lib/module/screens/SearchConversation/SearchEmpty.js +22 -3
  21. package/lib/module/screens/SearchConversation/SearchEmpty.js.map +1 -1
  22. package/lib/module/screens/SearchConversation/SearchMessagesResult.js +23 -7
  23. package/lib/module/screens/SearchConversation/SearchMessagesResult.js.map +1 -1
  24. package/lib/module/screens/SearchConversation/SearchResultItem.js +53 -12
  25. package/lib/module/screens/SearchConversation/SearchResultItem.js.map +1 -1
  26. package/lib/module/screens/SearchMessage/SearchMessageResult.js +24 -7
  27. package/lib/module/screens/SearchMessage/SearchMessageResult.js.map +1 -1
  28. package/lib/module/screens/SearchMessage/SearchResultItem.js +31 -3
  29. package/lib/module/screens/SearchMessage/SearchResultItem.js.map +1 -1
  30. package/lib/module/screens/chat-detail/ChatListLegend.js +26 -17
  31. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  32. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +4 -2
  33. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
  34. package/lib/module/store/message.js +3 -0
  35. package/lib/module/store/message.js.map +1 -1
  36. package/lib/module/translation/resources/i18n.js +6 -2
  37. package/lib/module/translation/resources/i18n.js.map +1 -1
  38. package/lib/module/types/chat.js.map +1 -1
  39. package/lib/module/types/events.js +1 -0
  40. package/lib/module/types/events.js.map +1 -1
  41. package/lib/module/utils/flows.js +4 -4
  42. package/lib/module/utils/flows.js.map +1 -1
  43. package/lib/module/utils/highlightSearch.js +38 -0
  44. package/lib/module/utils/highlightSearch.js.map +1 -0
  45. package/lib/module/utils/messageUtils.js +5 -1
  46. package/lib/module/utils/messageUtils.js.map +1 -1
  47. package/lib/typescript/src/components/flows/inputButtons/index.d.ts +1 -1
  48. package/lib/typescript/src/components/flows/inputButtons/index.d.ts.map +1 -1
  49. package/lib/typescript/src/components/messages/linkMessage/index.d.ts +1 -1
  50. package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -1
  51. package/lib/typescript/src/components/messages/quotedMessage/index.d.ts.map +1 -1
  52. package/lib/typescript/src/components/messages/styles.d.ts +5 -0
  53. package/lib/typescript/src/components/messages/styles.d.ts.map +1 -1
  54. package/lib/typescript/src/components/messages/textMessage/index.d.ts +1 -1
  55. package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -1
  56. package/lib/typescript/src/components/messages/types.d.ts +1 -0
  57. package/lib/typescript/src/components/messages/types.d.ts.map +1 -1
  58. package/lib/typescript/src/context/ChatDetailContext.d.ts.map +1 -1
  59. package/lib/typescript/src/hooks/flows/useFlow.d.ts.map +1 -1
  60. package/lib/typescript/src/hooks/message/useSearchMessage.d.ts.map +1 -1
  61. package/lib/typescript/src/screens/SearchConversation/SearchAllResult.d.ts.map +1 -1
  62. package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts +7 -1
  63. package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts.map +1 -1
  64. package/lib/typescript/src/screens/SearchConversation/SearchMessagesResult.d.ts.map +1 -1
  65. package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts +1 -0
  66. package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts.map +1 -1
  67. package/lib/typescript/src/screens/SearchMessage/SearchMessageResult.d.ts.map +1 -1
  68. package/lib/typescript/src/screens/SearchMessage/SearchResultItem.d.ts +1 -0
  69. package/lib/typescript/src/screens/SearchMessage/SearchResultItem.d.ts.map +1 -1
  70. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
  71. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +2 -1
  72. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
  73. package/lib/typescript/src/store/message.d.ts.map +1 -1
  74. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  75. package/lib/typescript/src/types/chat.d.ts +1 -1
  76. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  77. package/lib/typescript/src/types/events.d.ts +5 -1
  78. package/lib/typescript/src/types/events.d.ts.map +1 -1
  79. package/lib/typescript/src/types/flows.d.ts +4 -0
  80. package/lib/typescript/src/types/flows.d.ts.map +1 -1
  81. package/lib/typescript/src/utils/flows.d.ts +1 -1
  82. package/lib/typescript/src/utils/flows.d.ts.map +1 -1
  83. package/lib/typescript/src/utils/highlightSearch.d.ts +7 -0
  84. package/lib/typescript/src/utils/highlightSearch.d.ts.map +1 -0
  85. package/lib/typescript/src/utils/messageUtils.d.ts +1 -0
  86. package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
  87. package/package.json +1 -1
  88. package/src/components/flows/inputButtons/index.tsx +20 -12
  89. package/src/components/messages/linkMessage/index.tsx +3 -0
  90. package/src/components/messages/quotedMessage/index.tsx +2 -1
  91. package/src/components/messages/styles.ts +6 -1
  92. package/src/components/messages/textMessage/index.tsx +7 -1
  93. package/src/components/messages/types.ts +1 -0
  94. package/src/context/ChatDetailContext.tsx +23 -10
  95. package/src/hooks/flows/useFlow.ts +5 -1
  96. package/src/hooks/message/useSearchMessage.ts +46 -15
  97. package/src/screens/SearchConversation/SearchAllResult.tsx +24 -10
  98. package/src/screens/SearchConversation/SearchEmpty.tsx +38 -14
  99. package/src/screens/SearchConversation/SearchMessagesResult.tsx +39 -18
  100. package/src/screens/SearchConversation/SearchResultItem.tsx +72 -13
  101. package/src/screens/SearchMessage/SearchMessageResult.tsx +47 -20
  102. package/src/screens/SearchMessage/SearchResultItem.tsx +37 -5
  103. package/src/screens/chat-detail/ChatListLegend.tsx +48 -21
  104. package/src/screens/chat-detail/legend/LegendChatMessage.tsx +3 -0
  105. package/src/store/message.ts +2 -0
  106. package/src/translation/resources/i18n.ts +6 -2
  107. package/src/types/chat.ts +5 -1
  108. package/src/types/events.ts +5 -0
  109. package/src/types/flows.ts +4 -0
  110. package/src/utils/flows.ts +5 -6
  111. package/src/utils/highlightSearch.ts +48 -0
  112. 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