@droppii-org/chat-mobile 0.2.57 → 0.2.58

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 (116) hide show
  1. package/lib/module/assets/images/index.js +2 -1
  2. package/lib/module/assets/images/index.js.map +1 -1
  3. package/lib/module/assets/images/search_empty.png +0 -0
  4. package/lib/module/components/Avatar/Avatar.utils.js +5 -3
  5. package/lib/module/components/Avatar/Avatar.utils.js.map +1 -1
  6. package/lib/module/components/Avatar/SingleAvatar.js +2 -0
  7. package/lib/module/components/Avatar/SingleAvatar.js.map +1 -1
  8. package/lib/module/components/ThreadCard/AvatarSection.js +8 -4
  9. package/lib/module/components/ThreadCard/AvatarSection.js.map +1 -1
  10. package/lib/module/config/api-endpoints.js +2 -1
  11. package/lib/module/config/api-endpoints.js.map +1 -1
  12. package/lib/module/constants/index.js +4 -0
  13. package/lib/module/constants/index.js.map +1 -0
  14. package/lib/module/hooks/message/useSearchMessage.js +58 -0
  15. package/lib/module/hooks/message/useSearchMessage.js.map +1 -0
  16. package/lib/module/hooks/query-keys.js +4 -0
  17. package/lib/module/hooks/query-keys.js.map +1 -1
  18. package/lib/module/index.js +1 -0
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/module/screens/ChatInfo/ChatInfoActions.js +1 -1
  21. package/lib/module/screens/ChatInfo/ChatInfoActions.js.map +1 -1
  22. package/lib/module/screens/ChatInfo/ChatInfoMediaRow.js +1 -1
  23. package/lib/module/screens/ChatInfo/ChatInfoMediaRow.js.map +1 -1
  24. package/lib/module/screens/SearchConversation/SearchAllResult.js +123 -0
  25. package/lib/module/screens/SearchConversation/SearchAllResult.js.map +1 -0
  26. package/lib/module/screens/SearchConversation/SearchEmpty.js +32 -0
  27. package/lib/module/screens/SearchConversation/SearchEmpty.js.map +1 -0
  28. package/lib/module/screens/SearchConversation/SearchMessagesResult.js +71 -0
  29. package/lib/module/screens/SearchConversation/SearchMessagesResult.js.map +1 -0
  30. package/lib/module/screens/SearchConversation/SearchResultItem.js +102 -0
  31. package/lib/module/screens/SearchConversation/SearchResultItem.js.map +1 -0
  32. package/lib/module/screens/SearchConversation/TabResult.js +118 -0
  33. package/lib/module/screens/SearchConversation/TabResult.js.map +1 -0
  34. package/lib/module/screens/SearchConversation/index.js +57 -0
  35. package/lib/module/screens/SearchConversation/index.js.map +1 -0
  36. package/lib/module/screens/SearchConversation/types.js +9 -0
  37. package/lib/module/screens/SearchConversation/types.js.map +1 -0
  38. package/lib/module/screens/chat-detail/ChatDetail.js +3 -1
  39. package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
  40. package/lib/module/services/endpoints.js +2 -1
  41. package/lib/module/services/endpoints.js.map +1 -1
  42. package/lib/module/translation/resources/i18n.js +7 -1
  43. package/lib/module/translation/resources/i18n.js.map +1 -1
  44. package/lib/module/types/chat.js.map +1 -1
  45. package/lib/module/utils/messageUtils.js +5 -5
  46. package/lib/module/utils/messageUtils.js.map +1 -1
  47. package/lib/typescript/src/assets/images/index.d.ts +1 -0
  48. package/lib/typescript/src/assets/images/index.d.ts.map +1 -1
  49. package/lib/typescript/src/components/Avatar/Avatar.types.d.ts +1 -1
  50. package/lib/typescript/src/components/Avatar/Avatar.types.d.ts.map +1 -1
  51. package/lib/typescript/src/components/Avatar/Avatar.utils.d.ts +2 -0
  52. package/lib/typescript/src/components/Avatar/Avatar.utils.d.ts.map +1 -1
  53. package/lib/typescript/src/components/Avatar/SingleAvatar.d.ts.map +1 -1
  54. package/lib/typescript/src/components/ThreadCard/AvatarSection.d.ts +2 -1
  55. package/lib/typescript/src/components/ThreadCard/AvatarSection.d.ts.map +1 -1
  56. package/lib/typescript/src/config/api-endpoints.d.ts +1 -0
  57. package/lib/typescript/src/config/api-endpoints.d.ts.map +1 -1
  58. package/lib/typescript/src/constants/index.d.ts +2 -0
  59. package/lib/typescript/src/constants/index.d.ts.map +1 -0
  60. package/lib/typescript/src/hooks/message/useSearchMessage.d.ts +221 -0
  61. package/lib/typescript/src/hooks/message/useSearchMessage.d.ts.map +1 -0
  62. package/lib/typescript/src/hooks/query-keys.d.ts +4 -0
  63. package/lib/typescript/src/hooks/query-keys.d.ts.map +1 -1
  64. package/lib/typescript/src/index.d.ts +1 -0
  65. package/lib/typescript/src/index.d.ts.map +1 -1
  66. package/lib/typescript/src/screens/SearchConversation/SearchAllResult.d.ts +10 -0
  67. package/lib/typescript/src/screens/SearchConversation/SearchAllResult.d.ts.map +1 -0
  68. package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts +2 -0
  69. package/lib/typescript/src/screens/SearchConversation/SearchEmpty.d.ts.map +1 -0
  70. package/lib/typescript/src/screens/SearchConversation/SearchMessagesResult.d.ts +8 -0
  71. package/lib/typescript/src/screens/SearchConversation/SearchMessagesResult.d.ts.map +1 -0
  72. package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts +10 -0
  73. package/lib/typescript/src/screens/SearchConversation/SearchResultItem.d.ts.map +1 -0
  74. package/lib/typescript/src/screens/SearchConversation/TabResult.d.ts +8 -0
  75. package/lib/typescript/src/screens/SearchConversation/TabResult.d.ts.map +1 -0
  76. package/lib/typescript/src/screens/SearchConversation/index.d.ts +7 -0
  77. package/lib/typescript/src/screens/SearchConversation/index.d.ts.map +1 -0
  78. package/lib/typescript/src/screens/SearchConversation/types.d.ts +6 -0
  79. package/lib/typescript/src/screens/SearchConversation/types.d.ts.map +1 -0
  80. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts +1 -1
  81. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
  82. package/lib/typescript/src/screens/chat-detail/types.d.ts +1 -0
  83. package/lib/typescript/src/screens/chat-detail/types.d.ts.map +1 -1
  84. package/lib/typescript/src/services/endpoints.d.ts +1 -0
  85. package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
  86. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  87. package/lib/typescript/src/types/chat.d.ts +13 -1
  88. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  89. package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
  90. package/package.json +1 -1
  91. package/src/assets/images/index.ts +1 -0
  92. package/src/assets/images/search_empty.png +0 -0
  93. package/src/components/Avatar/Avatar.types.ts +1 -1
  94. package/src/components/Avatar/Avatar.utils.ts +5 -3
  95. package/src/components/Avatar/SingleAvatar.tsx +2 -0
  96. package/src/components/ThreadCard/AvatarSection.tsx +5 -2
  97. package/src/config/api-endpoints.ts +2 -0
  98. package/src/constants/index.ts +1 -0
  99. package/src/hooks/message/useSearchMessage.ts +78 -0
  100. package/src/hooks/query-keys.ts +6 -0
  101. package/src/index.tsx +1 -0
  102. package/src/screens/ChatInfo/ChatInfoActions.tsx +1 -1
  103. package/src/screens/ChatInfo/ChatInfoMediaRow.tsx +1 -1
  104. package/src/screens/SearchConversation/SearchAllResult.tsx +154 -0
  105. package/src/screens/SearchConversation/SearchEmpty.tsx +30 -0
  106. package/src/screens/SearchConversation/SearchMessagesResult.tsx +74 -0
  107. package/src/screens/SearchConversation/SearchResultItem.tsx +107 -0
  108. package/src/screens/SearchConversation/TabResult.tsx +144 -0
  109. package/src/screens/SearchConversation/index.tsx +61 -0
  110. package/src/screens/SearchConversation/types.tsx +5 -0
  111. package/src/screens/chat-detail/ChatDetail.tsx +2 -1
  112. package/src/screens/chat-detail/types.ts +1 -0
  113. package/src/services/endpoints.ts +1 -0
  114. package/src/translation/resources/i18n.ts +7 -0
  115. package/src/types/chat.ts +15 -0
  116. package/src/utils/messageUtils.ts +13 -6
@@ -0,0 +1,5 @@
1
+ export enum SearchConversationTabResultType {
2
+ All = 'all',
3
+ Conversations = 'conversations',
4
+ Messages = 'messages',
5
+ }
@@ -41,6 +41,7 @@ const ChatDetail = memo(
41
41
  targetUserId = '',
42
42
  targetGroupId = '',
43
43
  targetBotId = '',
44
+ targetMessageId = '',
44
45
  showAddMember,
45
46
  onBack,
46
47
  onPressSearch,
@@ -91,7 +92,7 @@ const ChatDetail = memo(
91
92
  getMoreNewMessages,
92
93
  hasMoreOld,
93
94
  hasMoreNew,
94
- } = useMessages({ conversationId });
95
+ } = useMessages({ conversationId, startClientMsgId: targetMessageId });
95
96
 
96
97
  const setShowFLashMessage = useSetIsShowFLashMessage();
97
98
 
@@ -94,6 +94,7 @@ export interface ChatDetailProps extends Omit<
94
94
  targetUserId?: string;
95
95
  targetGroupId?: string;
96
96
  targetBotId?: string;
97
+ targetMessageId?: string;
97
98
  enabled?: boolean;
98
99
  showAddMember?: boolean;
99
100
  onPressUrl?: (url: string) => void;
@@ -38,6 +38,7 @@ export const ENDPOINTS = {
38
38
  stickersByCategoryId: (id: string) =>
39
39
  `${getApiEndpoint('stickersByCategory')}/${id}/stickers`,
40
40
  stickerHistory: () => getApiEndpoint('stickerHistory'),
41
+ searchMessages: () => `${getApiEndpoint('messages')}/search`,
41
42
  },
42
43
  uploaderService: {
43
44
  get uploadImage() {
@@ -118,6 +118,13 @@ const i18nKey: Record<string, string> = {
118
118
  'Bạn đang trong phiên hỗ trợ với hỗ trợ viên, bạn có muốn <bold>kết thúc phiên hỗ trợ</bold> ngay bây giờ?',
119
119
  'chat:end_support_session_primary': 'Kết thúc',
120
120
  'chat:end_support_session_secondary': 'Tiếp tục',
121
+ 'search': 'Tìm kiếm',
122
+ 'all': 'Tất cả',
123
+ 'contacts': 'Liên hệ',
124
+ 'messages': 'Tin nhắn',
125
+ 'search:empty_description':
126
+ 'Không tìm thấy kết quả nào\nHãy thử lại với cách viết hoặc kết hợp cụm từ khác phù hợp hơn.',
127
+ 'view_all': 'Xem tất cả',
121
128
  };
122
129
 
123
130
  export default {
package/src/types/chat.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import {
2
+ MessageType,
2
3
  type ConversationItem,
3
4
  type MessageItem,
4
5
  } from '@droppii/openim-rn-client-sdk';
@@ -317,3 +318,17 @@ export interface DThreadResourceRawRow {
317
318
  tag: unknown;
318
319
  displayTag: unknown;
319
320
  }
321
+
322
+ export type ISearchMessagesRequest = {
323
+ conversationId?: string;
324
+ contentTypes: MessageType[];
325
+ page: number;
326
+ pageSize: number;
327
+ applicationType: DChatApplicationType;
328
+ searchTerm: string;
329
+ };
330
+
331
+ export interface ISearchMessageItem {
332
+ chatLog: MessageItem;
333
+ conversation: ConversationItem;
334
+ }
@@ -20,10 +20,14 @@ export const isMessageRevoked = (message: MessageItem): boolean =>
20
20
  export const extractTextContent = (message: MessageItem): string => {
21
21
  if (message.textElem?.content) return message.textElem.content;
22
22
  try {
23
- const parsed = JSON.parse(message.content) as { content?: string };
24
- return parsed.content ?? '';
23
+ const parsed = JSON.parse(message.content) as {
24
+ content?: string;
25
+ text?: string;
26
+ description?: string;
27
+ };
28
+ return parsed?.content || parsed?.text || parsed?.description || '';
25
29
  } catch {
26
- return message.content ?? '';
30
+ return message.content || '';
27
31
  }
28
32
  };
29
33
 
@@ -75,14 +79,17 @@ export const getMessagePreview = (message?: MessageItem): string => {
75
79
  case MessageType.UrlTextMessage:
76
80
  // Preview link message - show with [Link] prefix
77
81
  const urlText =
78
- message?.urlTextElem?.content || message?.urlTextElem?.urls?.[0] || '';
82
+ message?.urlTextElem?.content ||
83
+ message?.urlTextElem?.urls?.[0] ||
84
+ extractTextContent(message) ||
85
+ '';
79
86
  return urlText ? urlText : '';
80
87
 
81
88
  case MessageType.AtTextMessage:
82
89
  return extractTextContent(message);
83
90
 
84
91
  case MessageType.QuoteMessage:
85
- return message?.quoteElem?.text || '';
92
+ return message?.quoteElem?.text || extractTextContent(message) || '';
86
93
 
87
94
  case MessageType.RevokeMessage:
88
95
  return trans('msg_type_revoke');
@@ -91,7 +98,7 @@ export const getMessagePreview = (message?: MessageItem): string => {
91
98
  if (message?.customElem?.description) {
92
99
  return message?.customElem?.description;
93
100
  }
94
- return '';
101
+ return extractTextContent(message) || '';
95
102
 
96
103
  case MessageType.StickerMessage:
97
104
  return '[Sticker]';