@droppii-org/chat-mobile 0.2.79 → 0.2.80

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 (97) hide show
  1. package/lib/module/components/messages/BubbleTail.js +31 -0
  2. package/lib/module/components/messages/BubbleTail.js.map +1 -0
  3. package/lib/module/components/messages/BubbleTailRow.js +46 -0
  4. package/lib/module/components/messages/BubbleTailRow.js.map +1 -0
  5. package/lib/module/components/messages/bubbleTail.utils.js +19 -0
  6. package/lib/module/components/messages/bubbleTail.utils.js.map +1 -0
  7. package/lib/module/components/messages/fileMessage/index.js +72 -65
  8. package/lib/module/components/messages/fileMessage/index.js.map +1 -1
  9. package/lib/module/components/messages/imageMessage/index.js +23 -17
  10. package/lib/module/components/messages/imageMessage/index.js.map +1 -1
  11. package/lib/module/components/messages/linkMessage/index.js +11 -23
  12. package/lib/module/components/messages/linkMessage/index.js.map +1 -1
  13. package/lib/module/components/messages/mergedMessage/index.js +14 -7
  14. package/lib/module/components/messages/mergedMessage/index.js.map +1 -1
  15. package/lib/module/components/messages/quotedMessage/index.js +11 -23
  16. package/lib/module/components/messages/quotedMessage/index.js.map +1 -1
  17. package/lib/module/components/messages/revokedMessage/index.js +14 -7
  18. package/lib/module/components/messages/revokedMessage/index.js.map +1 -1
  19. package/lib/module/components/messages/stickerMessage/index.js +13 -7
  20. package/lib/module/components/messages/stickerMessage/index.js.map +1 -1
  21. package/lib/module/components/messages/textMessage/index.js +11 -26
  22. package/lib/module/components/messages/textMessage/index.js.map +1 -1
  23. package/lib/module/components/messages/types.js.map +1 -1
  24. package/lib/module/components/messages/videoMessage/index.js +16 -8
  25. package/lib/module/components/messages/videoMessage/index.js.map +1 -1
  26. package/lib/module/hooks/groups/useDismissGroup.js +2 -1
  27. package/lib/module/hooks/groups/useDismissGroup.js.map +1 -1
  28. package/lib/module/screens/chat-detail/ChatListLegend.js +71 -21
  29. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  30. package/lib/module/screens/chat-detail/legend/LegendChatDay.js +8 -2
  31. package/lib/module/screens/chat-detail/legend/LegendChatDay.js.map +1 -1
  32. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +38 -13
  33. package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
  34. package/lib/module/utils/legendListMessage.js +86 -12
  35. package/lib/module/utils/legendListMessage.js.map +1 -1
  36. package/lib/module/utils/message.js +19 -1
  37. package/lib/module/utils/message.js.map +1 -1
  38. package/lib/module/utils/messageUtils.js +6 -0
  39. package/lib/module/utils/messageUtils.js.map +1 -1
  40. package/lib/typescript/src/components/messages/BubbleTail.d.ts +13 -0
  41. package/lib/typescript/src/components/messages/BubbleTail.d.ts.map +1 -0
  42. package/lib/typescript/src/components/messages/BubbleTailRow.d.ts +25 -0
  43. package/lib/typescript/src/components/messages/BubbleTailRow.d.ts.map +1 -0
  44. package/lib/typescript/src/components/messages/bubbleTail.utils.d.ts +11 -0
  45. package/lib/typescript/src/components/messages/bubbleTail.utils.d.ts.map +1 -0
  46. package/lib/typescript/src/components/messages/fileMessage/index.d.ts +1 -1
  47. package/lib/typescript/src/components/messages/fileMessage/index.d.ts.map +1 -1
  48. package/lib/typescript/src/components/messages/imageMessage/index.d.ts +1 -1
  49. package/lib/typescript/src/components/messages/imageMessage/index.d.ts.map +1 -1
  50. package/lib/typescript/src/components/messages/linkMessage/index.d.ts +1 -1
  51. package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -1
  52. package/lib/typescript/src/components/messages/mergedMessage/index.d.ts +1 -1
  53. package/lib/typescript/src/components/messages/mergedMessage/index.d.ts.map +1 -1
  54. package/lib/typescript/src/components/messages/quotedMessage/index.d.ts.map +1 -1
  55. package/lib/typescript/src/components/messages/revokedMessage/index.d.ts +1 -1
  56. package/lib/typescript/src/components/messages/revokedMessage/index.d.ts.map +1 -1
  57. package/lib/typescript/src/components/messages/stickerMessage/index.d.ts +1 -1
  58. package/lib/typescript/src/components/messages/stickerMessage/index.d.ts.map +1 -1
  59. package/lib/typescript/src/components/messages/textMessage/index.d.ts +1 -1
  60. package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -1
  61. package/lib/typescript/src/components/messages/types.d.ts +3 -0
  62. package/lib/typescript/src/components/messages/types.d.ts.map +1 -1
  63. package/lib/typescript/src/components/messages/videoMessage/index.d.ts +1 -1
  64. package/lib/typescript/src/components/messages/videoMessage/index.d.ts.map +1 -1
  65. package/lib/typescript/src/hooks/groups/useDismissGroup.d.ts.map +1 -1
  66. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
  67. package/lib/typescript/src/screens/chat-detail/legend/LegendChatDay.d.ts +6 -1
  68. package/lib/typescript/src/screens/chat-detail/legend/LegendChatDay.d.ts.map +1 -1
  69. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +14 -1
  70. package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
  71. package/lib/typescript/src/utils/legendListMessage.d.ts +19 -4
  72. package/lib/typescript/src/utils/legendListMessage.d.ts.map +1 -1
  73. package/lib/typescript/src/utils/message.d.ts +17 -0
  74. package/lib/typescript/src/utils/message.d.ts.map +1 -1
  75. package/lib/typescript/src/utils/messageUtils.d.ts +1 -0
  76. package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
  77. package/package.json +1 -1
  78. package/src/components/messages/BubbleTail.tsx +35 -0
  79. package/src/components/messages/BubbleTailRow.tsx +64 -0
  80. package/src/components/messages/bubbleTail.utils.ts +21 -0
  81. package/src/components/messages/fileMessage/index.tsx +90 -83
  82. package/src/components/messages/imageMessage/index.tsx +26 -23
  83. package/src/components/messages/linkMessage/index.tsx +6 -18
  84. package/src/components/messages/mergedMessage/index.tsx +27 -15
  85. package/src/components/messages/quotedMessage/index.tsx +7 -19
  86. package/src/components/messages/revokedMessage/index.tsx +23 -14
  87. package/src/components/messages/stickerMessage/index.tsx +16 -11
  88. package/src/components/messages/textMessage/index.tsx +6 -22
  89. package/src/components/messages/types.ts +3 -0
  90. package/src/components/messages/videoMessage/index.tsx +13 -10
  91. package/src/hooks/groups/useDismissGroup.tsx +1 -0
  92. package/src/screens/chat-detail/ChatListLegend.tsx +97 -28
  93. package/src/screens/chat-detail/legend/LegendChatDay.tsx +25 -15
  94. package/src/screens/chat-detail/legend/LegendChatMessage.tsx +62 -12
  95. package/src/utils/legendListMessage.ts +123 -14
  96. package/src/utils/message.ts +19 -1
  97. package/src/utils/messageUtils.ts +8 -0
@@ -6,12 +6,30 @@ import {
6
6
  } from '@droppii/openim-rn-client-sdk';
7
7
  import { getConversationID } from './conversation';
8
8
 
9
- const getMessageTime = (message: MessageItem) =>
9
+ /**
10
+ * Canonical timestamp for a message. `sendTime` is 0 until the SDK stamps an
11
+ * outgoing message, so `createTime` covers the in-flight window. This is the
12
+ * key the list is sorted by — anything reasoning about message order must use
13
+ * it too, or it will disagree with the order actually rendered.
14
+ */
15
+ export const getMessageTime = (message: MessageItem) =>
10
16
  message.sendTime || message.createTime || 0;
11
17
 
12
18
  const getMessageKey = (message: MessageItem) =>
13
19
  message.clientMsgID || message.serverMsgID;
14
20
 
21
+ /**
22
+ * Stable id for a message inside a rendered list.
23
+ *
24
+ * A message that has not round-tripped through the server yet may carry
25
+ * neither id, so position and timestamp stand in. Every consumer that looks a
26
+ * message up by id must derive it the same way — the precompute map is keyed
27
+ * on this, so a divergent formula silently misses and the message renders
28
+ * without its day divider or cluster position.
29
+ */
30
+ export const getMessageRenderId = (message: MessageItem, index: number) =>
31
+ getMessageKey(message) || `temp-${getMessageTime(message)}-${index}`;
32
+
15
33
  export const mergeMessages = (
16
34
  current: MessageItem[],
17
35
  incoming: MessageItem[]
@@ -92,6 +92,14 @@ export const GROUP_NOTIFICATION_TEXT: Partial<
92
92
  },
93
93
  };
94
94
 
95
+ // The content types above, as a plain list. Both the chat list (to decide
96
+ // whether a message renders as a system banner) and the grouping precompute
97
+ // (system messages never join a sender cluster) need this, so it is derived
98
+ // once here rather than in each consumer.
99
+ export const GROUP_NOTIFICATION_TYPES = Object.keys(
100
+ GROUP_NOTIFICATION_TEXT
101
+ ).map(Number) as MessageType[];
102
+
95
103
  const parseNotificationDetail = (message: MessageItem): any => {
96
104
  if (!message.notificationElem?.detail) return undefined;
97
105
  try {