@droppii-org/chat-mobile 0.2.35 → 0.2.38

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 (160) hide show
  1. package/lib/module/components/messages/linkMessage/index.js +1 -10
  2. package/lib/module/components/messages/linkMessage/index.js.map +1 -1
  3. package/lib/module/components/messages/quotedMessage/index.js +173 -0
  4. package/lib/module/components/messages/quotedMessage/index.js.map +1 -0
  5. package/lib/module/context/ChatContext.js +26 -22
  6. package/lib/module/context/ChatContext.js.map +1 -1
  7. package/lib/module/context/ChatDetailContext.js +7 -4
  8. package/lib/module/context/ChatDetailContext.js.map +1 -1
  9. package/lib/module/core/useChatListener.js +0 -1
  10. package/lib/module/core/useChatListener.js.map +1 -1
  11. package/lib/module/core/useUserListener.js +12 -21
  12. package/lib/module/core/useUserListener.js.map +1 -1
  13. package/lib/module/hooks/message/useSendMessage.js +26 -4
  14. package/lib/module/hooks/message/useSendMessage.js.map +1 -1
  15. package/lib/module/hooks/useChatMessages.js.map +1 -1
  16. package/lib/module/hooks/useFileAttachment.js +3 -1
  17. package/lib/module/hooks/useFileAttachment.js.map +1 -1
  18. package/lib/module/index.js +0 -7
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/module/screens/chat-detail/ChatComposer.js +2 -1
  21. package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
  22. package/lib/module/screens/chat-detail/ChatCurrentQuotedMessage.js +142 -0
  23. package/lib/module/screens/chat-detail/ChatCurrentQuotedMessage.js.map +1 -0
  24. package/lib/module/screens/chat-detail/ChatDetail.js +10 -1
  25. package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
  26. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  27. package/lib/module/screens/chat-detail/PinnedMessageBar.js +8 -3
  28. package/lib/module/screens/chat-detail/PinnedMessageBar.js.map +1 -1
  29. package/lib/module/screens/chat-detail/PinnedMessagesSheet.js +173 -0
  30. package/lib/module/screens/chat-detail/PinnedMessagesSheet.js.map +1 -0
  31. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +2 -1
  32. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
  33. package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxMenu.js +17 -1
  34. package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxMenu.js.map +1 -1
  35. package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxOverlay.js +11 -1
  36. package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxOverlay.js.map +1 -1
  37. package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxWrapper.js +1 -0
  38. package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxWrapper.js.map +1 -1
  39. package/lib/module/screens/chat-detail/messageToolbox/messageToolbox.utils.js +5 -2
  40. package/lib/module/screens/chat-detail/messageToolbox/messageToolbox.utils.js.map +1 -1
  41. package/lib/module/screens/inbox/Inbox.js +1 -5
  42. package/lib/module/screens/inbox/Inbox.js.map +1 -1
  43. package/lib/module/services/apis.js +0 -3
  44. package/lib/module/services/apis.js.map +1 -1
  45. package/lib/module/services/message.js.map +1 -1
  46. package/lib/module/store/message.js.map +1 -1
  47. package/lib/module/store/pinnedMessage.js.map +1 -1
  48. package/lib/module/store/user.js +2 -3
  49. package/lib/module/store/user.js.map +1 -1
  50. package/lib/module/translation/resources/i18n.js +9 -2
  51. package/lib/module/translation/resources/i18n.js.map +1 -1
  52. package/lib/module/types/auth.js +0 -7
  53. package/lib/module/types/auth.js.map +1 -1
  54. package/lib/module/types/chat.js +12 -0
  55. package/lib/module/types/chat.js.map +1 -1
  56. package/lib/module/utils/UIUtils.js +6 -0
  57. package/lib/module/utils/UIUtils.js.map +1 -1
  58. package/lib/module/utils/legendListMessage.js +1 -0
  59. package/lib/module/utils/legendListMessage.js.map +1 -1
  60. package/lib/module/utils/message.js.map +1 -1
  61. package/lib/module/utils/messageUtils.js +18 -1
  62. package/lib/module/utils/messageUtils.js.map +1 -1
  63. package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -1
  64. package/lib/typescript/src/components/messages/quotedMessage/index.d.ts +7 -0
  65. package/lib/typescript/src/components/messages/quotedMessage/index.d.ts.map +1 -0
  66. package/lib/typescript/src/components/messages/types.d.ts +2 -2
  67. package/lib/typescript/src/components/messages/types.d.ts.map +1 -1
  68. package/lib/typescript/src/context/ChatContext.d.ts.map +1 -1
  69. package/lib/typescript/src/context/ChatDetailContext.d.ts.map +1 -1
  70. package/lib/typescript/src/core/useChatListener.d.ts.map +1 -1
  71. package/lib/typescript/src/core/useUserListener.d.ts.map +1 -1
  72. package/lib/typescript/src/hooks/message/usePinMessage.d.ts +1 -1
  73. package/lib/typescript/src/hooks/message/useSendMessage.d.ts +2 -1
  74. package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
  75. package/lib/typescript/src/hooks/useChatMessages.d.ts +2 -2
  76. package/lib/typescript/src/hooks/useChatMessages.d.ts.map +1 -1
  77. package/lib/typescript/src/hooks/useFileAttachment.d.ts.map +1 -1
  78. package/lib/typescript/src/index.d.ts +1 -1
  79. package/lib/typescript/src/index.d.ts.map +1 -1
  80. package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
  81. package/lib/typescript/src/screens/chat-detail/ChatCurrentQuotedMessage.d.ts +2 -0
  82. package/lib/typescript/src/screens/chat-detail/ChatCurrentQuotedMessage.d.ts.map +1 -0
  83. package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
  84. package/lib/typescript/src/screens/chat-detail/PinnedMessageBar.d.ts +4 -3
  85. package/lib/typescript/src/screens/chat-detail/PinnedMessageBar.d.ts.map +1 -1
  86. package/lib/typescript/src/screens/chat-detail/PinnedMessagesSheet.d.ts +9 -0
  87. package/lib/typescript/src/screens/chat-detail/PinnedMessagesSheet.d.ts.map +1 -0
  88. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +2 -3
  89. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
  90. package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxMenu.d.ts +11 -7
  91. package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxMenu.d.ts.map +1 -1
  92. package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.d.ts +4 -4
  93. package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.d.ts.map +1 -1
  94. package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxWrapper.d.ts.map +1 -1
  95. package/lib/typescript/src/screens/chat-detail/messageToolbox/messageToolbox.utils.d.ts +5 -3
  96. package/lib/typescript/src/screens/chat-detail/messageToolbox/messageToolbox.utils.d.ts.map +1 -1
  97. package/lib/typescript/src/screens/chat-detail/messageToolbox/types.d.ts +2 -2
  98. package/lib/typescript/src/screens/chat-detail/messageToolbox/types.d.ts.map +1 -1
  99. package/lib/typescript/src/screens/chat-detail/types.d.ts +5 -5
  100. package/lib/typescript/src/screens/chat-detail/types.d.ts.map +1 -1
  101. package/lib/typescript/src/screens/inbox/Inbox.d.ts.map +1 -1
  102. package/lib/typescript/src/services/apis.d.ts +0 -1
  103. package/lib/typescript/src/services/apis.d.ts.map +1 -1
  104. package/lib/typescript/src/services/message.d.ts +1 -2
  105. package/lib/typescript/src/services/message.d.ts.map +1 -1
  106. package/lib/typescript/src/store/message.d.ts.map +1 -1
  107. package/lib/typescript/src/store/pinnedMessage.d.ts +4 -4
  108. package/lib/typescript/src/store/pinnedMessage.d.ts.map +1 -1
  109. package/lib/typescript/src/store/user.d.ts +4 -4
  110. package/lib/typescript/src/store/user.d.ts.map +1 -1
  111. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  112. package/lib/typescript/src/types/auth.d.ts +0 -5
  113. package/lib/typescript/src/types/auth.d.ts.map +1 -1
  114. package/lib/typescript/src/types/chat.d.ts +19 -36
  115. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  116. package/lib/typescript/src/utils/UIUtils.d.ts.map +1 -1
  117. package/lib/typescript/src/utils/legendListMessage.d.ts +4 -4
  118. package/lib/typescript/src/utils/legendListMessage.d.ts.map +1 -1
  119. package/lib/typescript/src/utils/message.d.ts +4 -5
  120. package/lib/typescript/src/utils/message.d.ts.map +1 -1
  121. package/lib/typescript/src/utils/messageUtils.d.ts +9 -7
  122. package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
  123. package/package.json +2 -2
  124. package/src/components/messages/linkMessage/index.tsx +1 -11
  125. package/src/components/messages/quotedMessage/index.tsx +197 -0
  126. package/src/components/messages/types.ts +2 -2
  127. package/src/context/ChatContext.tsx +30 -25
  128. package/src/context/ChatDetailContext.tsx +9 -3
  129. package/src/core/useChatListener.ts +0 -1
  130. package/src/core/useUserListener.ts +9 -25
  131. package/src/hooks/message/useSendMessage.ts +25 -4
  132. package/src/hooks/useChatMessages.ts +4 -6
  133. package/src/hooks/useFileAttachment.ts +3 -1
  134. package/src/index.tsx +5 -6
  135. package/src/screens/chat-detail/ChatComposer.tsx +2 -0
  136. package/src/screens/chat-detail/ChatCurrentQuotedMessage.tsx +150 -0
  137. package/src/screens/chat-detail/ChatDetail.tsx +13 -2
  138. package/src/screens/chat-detail/ChatListLegend.tsx +3 -3
  139. package/src/screens/chat-detail/PinnedMessageBar.tsx +53 -49
  140. package/src/screens/chat-detail/PinnedMessagesSheet.tsx +243 -0
  141. package/src/screens/chat-detail/legend/LegendChatMessage.tsx +4 -4
  142. package/src/screens/chat-detail/messageToolbox/MessageToolboxMenu.tsx +30 -6
  143. package/src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.tsx +15 -6
  144. package/src/screens/chat-detail/messageToolbox/MessageToolboxWrapper.tsx +1 -0
  145. package/src/screens/chat-detail/messageToolbox/messageToolbox.utils.ts +21 -12
  146. package/src/screens/chat-detail/messageToolbox/types.ts +2 -2
  147. package/src/screens/chat-detail/types.ts +5 -5
  148. package/src/screens/inbox/Inbox.tsx +1 -5
  149. package/src/services/apis.ts +0 -4
  150. package/src/services/message.ts +1 -2
  151. package/src/store/message.ts +3 -3
  152. package/src/store/pinnedMessage.ts +4 -4
  153. package/src/store/user.ts +5 -5
  154. package/src/translation/resources/i18n.ts +10 -1
  155. package/src/types/auth.ts +0 -6
  156. package/src/types/chat.ts +19 -40
  157. package/src/utils/UIUtils.ts +5 -0
  158. package/src/utils/legendListMessage.ts +4 -5
  159. package/src/utils/message.ts +10 -11
  160. package/src/utils/messageUtils.ts +37 -9
@@ -6,17 +6,17 @@ import {
6
6
  MessageType,
7
7
  PeerType,
8
8
  type ConversationItem,
9
+ type MessageItem,
9
10
  } from '@droppii/openim-rn-client-sdk';
10
- import { type DMessageItem } from '../types/chat';
11
- import type { IUrlMetadata } from '../types/common';
12
11
  import { formatDuration } from './dateTimeUtils';
13
12
  import { getFileIcon, getMimeType } from './imageUtils';
14
13
  import { trans } from '../translation';
14
+ import type { IUrlMetadata } from '../types/common';
15
15
 
16
- export const isMessageRevoked = (message: DMessageItem): boolean =>
16
+ export const isMessageRevoked = (message: MessageItem): boolean =>
17
17
  message.contentType === MessageType.RevokeMessage;
18
18
 
19
- export const extractTextContent = (message: DMessageItem): string => {
19
+ export const extractTextContent = (message: MessageItem): string => {
20
20
  if (message.textElem?.content) return message.textElem.content;
21
21
  try {
22
22
  const parsed = JSON.parse(message.content) as { content?: string };
@@ -26,7 +26,8 @@ export const extractTextContent = (message: DMessageItem): string => {
26
26
  }
27
27
  };
28
28
 
29
- export const getMessagePreview = (message: DMessageItem): string => {
29
+ export const getMessagePreview = (message?: MessageItem): string => {
30
+ if (!message) return '';
30
31
  // Handle standard message types
31
32
  switch (message.contentType) {
32
33
  case MessageType.TextMessage:
@@ -78,9 +79,11 @@ export const getMessagePreview = (message: DMessageItem): string => {
78
79
  return urlText ? urlText : '';
79
80
 
80
81
  case MessageType.AtTextMessage:
81
- case MessageType.QuoteMessage:
82
82
  return extractTextContent(message);
83
83
 
84
+ case MessageType.QuoteMessage:
85
+ return message?.quoteElem?.text || '';
86
+
84
87
  case MessageType.RevokeMessage:
85
88
  return trans('msg_type_revoke');
86
89
 
@@ -110,7 +113,7 @@ const getImageUrl = (pictureElem: any): string | undefined =>
110
113
 
111
114
  // Link messages carry their rich-preview metadata (title/description/image)
112
115
  // as a JSON string in `ex`, set by useSendMessage's IMessageItemEx payload.
113
- const getUrlMetadata = (message: DMessageItem): IUrlMetadata | undefined => {
116
+ const getUrlMetadata = (message: MessageItem): IUrlMetadata | undefined => {
114
117
  if (!message.ex) return undefined;
115
118
  try {
116
119
  const parsed = JSON.parse(message.ex) as { urlMetadata?: IUrlMetadata };
@@ -121,7 +124,7 @@ const getUrlMetadata = (message: DMessageItem): IUrlMetadata | undefined => {
121
124
  };
122
125
 
123
126
  export const getPinnedMessagePreview = (
124
- message: DMessageItem
127
+ message: MessageItem
125
128
  ): PinnedMessagePreview => {
126
129
  switch (message.contentType) {
127
130
  case MessageType.PictureMessage: {
@@ -183,7 +186,7 @@ export const getPinnedMessagePreview = (
183
186
  };
184
187
 
185
188
  export const getLastMessageText = (
186
- message: DMessageItem | undefined,
189
+ message: MessageItem | undefined,
187
190
  currentUserId?: string,
188
191
  conversation?: ConversationItem
189
192
  ): string => {
@@ -205,3 +208,28 @@ export const getLastMessageText = (
205
208
  ? trans('chat:revoked_by_sender', { sender })
206
209
  : `${sender}: ${preview}`;
207
210
  };
211
+
212
+ export const getReplySenderName = (
213
+ message?: MessageItem,
214
+ currentUserId?: string,
215
+ conversation?: ConversationItem,
216
+ isSent?: boolean
217
+ ): string => {
218
+ if (!message) return '';
219
+ if (currentUserId && message.sendID === currentUserId)
220
+ return trans(isSent ? 'you' : 'yourself');
221
+ return conversation?.peerType === PeerType.Bot
222
+ ? conversation?.showName || ''
223
+ : message?.senderNickname || '';
224
+ };
225
+
226
+ export const parseUrlMetadata = (ex?: string): IUrlMetadata | undefined => {
227
+ if (!ex) return undefined;
228
+ try {
229
+ const parsed = JSON.parse(ex) as any;
230
+ // Handle nested urlMetadata structure
231
+ return parsed?.urlMetadata || undefined;
232
+ } catch {
233
+ return undefined;
234
+ }
235
+ };