@droppii-org/chat-mobile 0.2.62 → 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 (121) 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/ChatContext.js +2 -3
  13. package/lib/module/context/ChatContext.js.map +1 -1
  14. package/lib/module/context/ChatDetailContext.js +5 -3
  15. package/lib/module/context/ChatDetailContext.js.map +1 -1
  16. package/lib/module/hooks/flows/useFlow.js +1 -1
  17. package/lib/module/hooks/flows/useFlow.js.map +1 -1
  18. package/lib/module/hooks/message/useSearchMessage.js +39 -14
  19. package/lib/module/hooks/message/useSearchMessage.js.map +1 -1
  20. package/lib/module/screens/SearchConversation/SearchAllResult.js +25 -10
  21. package/lib/module/screens/SearchConversation/SearchAllResult.js.map +1 -1
  22. package/lib/module/screens/SearchConversation/SearchEmpty.js +22 -3
  23. package/lib/module/screens/SearchConversation/SearchEmpty.js.map +1 -1
  24. package/lib/module/screens/SearchConversation/SearchMessagesResult.js +23 -7
  25. package/lib/module/screens/SearchConversation/SearchMessagesResult.js.map +1 -1
  26. package/lib/module/screens/SearchConversation/SearchResultItem.js +53 -12
  27. package/lib/module/screens/SearchConversation/SearchResultItem.js.map +1 -1
  28. package/lib/module/screens/SearchMessage/SearchMessageResult.js +24 -7
  29. package/lib/module/screens/SearchMessage/SearchMessageResult.js.map +1 -1
  30. package/lib/module/screens/SearchMessage/SearchResultItem.js +31 -3
  31. package/lib/module/screens/SearchMessage/SearchResultItem.js.map +1 -1
  32. package/lib/module/screens/chat-detail/ChatListLegend.js +26 -17
  33. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  34. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +4 -2
  35. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
  36. package/lib/module/store/message.js +3 -0
  37. package/lib/module/store/message.js.map +1 -1
  38. package/lib/module/translation/resources/i18n.js +6 -2
  39. package/lib/module/translation/resources/i18n.js.map +1 -1
  40. package/lib/module/types/chat.js.map +1 -1
  41. package/lib/module/types/events.js +1 -0
  42. package/lib/module/types/events.js.map +1 -1
  43. package/lib/module/utils/flows.js +4 -4
  44. package/lib/module/utils/flows.js.map +1 -1
  45. package/lib/module/utils/highlightSearch.js +38 -0
  46. package/lib/module/utils/highlightSearch.js.map +1 -0
  47. package/lib/module/utils/messageUtils.js +5 -1
  48. package/lib/module/utils/messageUtils.js.map +1 -1
  49. package/lib/module/utils/toastFlashMessage.js +1 -1
  50. package/lib/module/utils/toastFlashMessage.js.map +1 -1
  51. package/lib/module/utils/toastFlashMessageConfig.js +1 -1
  52. package/lib/module/utils/toastFlashMessageConfig.js.map +1 -1
  53. package/lib/typescript/src/components/flows/inputButtons/index.d.ts +1 -1
  54. package/lib/typescript/src/components/flows/inputButtons/index.d.ts.map +1 -1
  55. package/lib/typescript/src/components/messages/linkMessage/index.d.ts +1 -1
  56. package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -1
  57. package/lib/typescript/src/components/messages/quotedMessage/index.d.ts.map +1 -1
  58. package/lib/typescript/src/components/messages/styles.d.ts +5 -0
  59. package/lib/typescript/src/components/messages/styles.d.ts.map +1 -1
  60. package/lib/typescript/src/components/messages/textMessage/index.d.ts +1 -1
  61. package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -1
  62. package/lib/typescript/src/components/messages/types.d.ts +1 -0
  63. package/lib/typescript/src/components/messages/types.d.ts.map +1 -1
  64. package/lib/typescript/src/context/ChatDetailContext.d.ts.map +1 -1
  65. package/lib/typescript/src/hooks/flows/useFlow.d.ts.map +1 -1
  66. package/lib/typescript/src/hooks/message/useSearchMessage.d.ts.map +1 -1
  67. package/lib/typescript/src/screens/SearchConversation/SearchAllResult.d.ts.map +1 -1
  68. package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts +7 -1
  69. package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts.map +1 -1
  70. package/lib/typescript/src/screens/SearchConversation/SearchMessagesResult.d.ts.map +1 -1
  71. package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts +1 -0
  72. package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts.map +1 -1
  73. package/lib/typescript/src/screens/SearchMessage/SearchMessageResult.d.ts.map +1 -1
  74. package/lib/typescript/src/screens/SearchMessage/SearchResultItem.d.ts +1 -0
  75. package/lib/typescript/src/screens/SearchMessage/SearchResultItem.d.ts.map +1 -1
  76. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
  77. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +2 -1
  78. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
  79. package/lib/typescript/src/store/message.d.ts.map +1 -1
  80. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  81. package/lib/typescript/src/types/chat.d.ts +1 -1
  82. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  83. package/lib/typescript/src/types/events.d.ts +5 -1
  84. package/lib/typescript/src/types/events.d.ts.map +1 -1
  85. package/lib/typescript/src/types/flows.d.ts +4 -0
  86. package/lib/typescript/src/types/flows.d.ts.map +1 -1
  87. package/lib/typescript/src/utils/flows.d.ts +1 -1
  88. package/lib/typescript/src/utils/flows.d.ts.map +1 -1
  89. package/lib/typescript/src/utils/highlightSearch.d.ts +7 -0
  90. package/lib/typescript/src/utils/highlightSearch.d.ts.map +1 -0
  91. package/lib/typescript/src/utils/messageUtils.d.ts +1 -0
  92. package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
  93. package/package.json +1 -1
  94. package/src/components/flows/inputButtons/index.tsx +20 -12
  95. package/src/components/messages/linkMessage/index.tsx +3 -0
  96. package/src/components/messages/quotedMessage/index.tsx +2 -1
  97. package/src/components/messages/styles.ts +6 -1
  98. package/src/components/messages/textMessage/index.tsx +7 -1
  99. package/src/components/messages/types.ts +1 -0
  100. package/src/context/ChatContext.tsx +2 -2
  101. package/src/context/ChatDetailContext.tsx +23 -10
  102. package/src/hooks/flows/useFlow.ts +5 -1
  103. package/src/hooks/message/useSearchMessage.ts +46 -15
  104. package/src/screens/SearchConversation/SearchAllResult.tsx +24 -10
  105. package/src/screens/SearchConversation/SearchEmpty.tsx +38 -14
  106. package/src/screens/SearchConversation/SearchMessagesResult.tsx +39 -18
  107. package/src/screens/SearchConversation/SearchResultItem.tsx +72 -13
  108. package/src/screens/SearchMessage/SearchMessageResult.tsx +47 -20
  109. package/src/screens/SearchMessage/SearchResultItem.tsx +37 -5
  110. package/src/screens/chat-detail/ChatListLegend.tsx +48 -21
  111. package/src/screens/chat-detail/legend/LegendChatMessage.tsx +3 -0
  112. package/src/store/message.ts +2 -0
  113. package/src/translation/resources/i18n.ts +6 -2
  114. package/src/types/chat.ts +5 -1
  115. package/src/types/events.ts +5 -0
  116. package/src/types/flows.ts +4 -0
  117. package/src/utils/flows.ts +5 -6
  118. package/src/utils/highlightSearch.ts +48 -0
  119. package/src/utils/messageUtils.ts +16 -7
  120. package/src/utils/toastFlashMessage.ts +1 -1
  121. package/src/utils/toastFlashMessageConfig.tsx +1 -1
@@ -4,15 +4,14 @@ import {
4
4
  type IConversationFlowStep,
5
5
  } from '../types/flows';
6
6
 
7
- export const getFlowInputButtonsNode = (
7
+ export const getFlowInputButtonsNodes = (
8
8
  step?: IConversationFlowStep | null
9
9
  ) => {
10
- if (!step) return null;
10
+ if (!step) return [];
11
11
  const childrenNode = step?.data?.children || [];
12
- const inputButtonsNode = childrenNode?.find(
13
- (f) => f.type === NodeTypes.InputButtons
14
- ) as GroupChild<'input-buttons'>;
15
- return inputButtonsNode;
12
+ const inputButtonsNodes =
13
+ childrenNode?.filter?.((f) => f.type === NodeTypes.InputButtons) || [];
14
+ return inputButtonsNodes as GroupChild<'input-buttons'>[];
16
15
  };
17
16
 
18
17
  export const DEFAULT_BUTTON_ID = 'default-item-button';
@@ -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
 
@@ -17,7 +17,7 @@ const VISIBILITY_TIME_MS = 2000;
17
17
  const displayToast = (params: ShowFlashMessageParams) => {
18
18
  currentKey = params.key;
19
19
  Toast.show({
20
- type: 'chatMessage',
20
+ type: 'info',
21
21
  text1: params.title,
22
22
  text2: params.body,
23
23
  onPress: params.onPress,
@@ -17,7 +17,7 @@ const containerProps: ViewProps = {
17
17
  },
18
18
  };
19
19
  export const toastFlashMessageConfig: ToastConfig = {
20
- chatMessage: (params) => {
20
+ info: (params) => {
21
21
  const { avatarUrl, fullName } = (params.props ??
22
22
  {}) as FlashMessageToastProps;
23
23