@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
@@ -2,7 +2,8 @@
2
2
 
3
3
  import { memo, useCallback, useMemo } from 'react';
4
4
  import { messageStyles } from "../styles.js";
5
- import { formatMessageTime } from "../types.js";
5
+ import { getTailCornerStyle } from "../bubbleTail.utils.js";
6
+ import { BubbleTailRow } from "../BubbleTailRow.js";
6
7
  import { KColors, KContainer, KImage, KLabel, KRadiusValue, KSpacingValue } from '@droppii/libs';
7
8
  import { DeviceEventEmitter, StyleSheet } from 'react-native';
8
9
  import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
@@ -12,13 +13,13 @@ import { getFileIcon, getMimeType } from "../../../utils/imageUtils.js";
12
13
  import { useUserStore } from "../../../store/index.js";
13
14
  import { useChatDetailContext } from "../../../context/index.js";
14
15
  import { ChatEvent } from "../../../types/events.js";
15
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
16
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
17
  const QuotedMessage = /*#__PURE__*/memo(props => {
17
18
  const {
18
19
  message,
19
20
  isOutgoing,
20
- createdAtTime,
21
- isHighlighted
21
+ isHighlighted,
22
+ groupPosition
22
23
  } = props || {};
23
24
  const {
24
25
  conversation
@@ -26,7 +27,6 @@ const QuotedMessage = /*#__PURE__*/memo(props => {
26
27
  const currentUserId = useUserStore(s => s.user?.userID);
27
28
  const quotedMessage = message?.quoteElem?.quoteMessage;
28
29
  const messagePreview = getMessagePreviewParts(quotedMessage);
29
- const timeLabel = formatMessageTime(createdAtTime);
30
30
  const imageUrl = useMemo(() => {
31
31
  switch (quotedMessage?.contentType) {
32
32
  case MessageType.PictureMessage:
@@ -50,9 +50,11 @@ const QuotedMessage = /*#__PURE__*/memo(props => {
50
50
  clientMessageId: quotedMessage?.clientMsgID || ''
51
51
  });
52
52
  }, [quotedMessage]);
53
- return /*#__PURE__*/_jsxs(_Fragment, {
54
- children: [/*#__PURE__*/_jsxs(KContainer.View, {
55
- style: [messageStyles.bubble, styles.container, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived, isHighlighted && messageStyles.bubbleHighlighted],
53
+ return /*#__PURE__*/_jsx(BubbleTailRow, {
54
+ isOutgoing: isOutgoing,
55
+ groupPosition: groupPosition,
56
+ children: /*#__PURE__*/_jsxs(KContainer.View, {
57
+ style: [messageStyles.bubble, styles.container, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived, isHighlighted && messageStyles.bubbleHighlighted, getTailCornerStyle(isOutgoing, groupPosition)],
56
58
  children: [/*#__PURE__*/_jsxs(KContainer.Touchable, {
57
59
  style: styles.quotedContainer,
58
60
  onPress: handlePressQuotedMessage,
@@ -107,17 +109,7 @@ const QuotedMessage = /*#__PURE__*/memo(props => {
107
109
  color: CHAT_BUBBLE_COLORS.text,
108
110
  children: message?.quoteElem?.text || ''
109
111
  })]
110
- }), /*#__PURE__*/_jsx(KContainer.View, {
111
- row: true,
112
- alignItems: true,
113
- style: styles.timeLabel,
114
- children: !isOutgoing && timeLabel ? /*#__PURE__*/_jsx(KLabel.Text, {
115
- typo: "TextXsNormal",
116
- color: CHAT_BUBBLE_COLORS.timestamp,
117
- marginL: "0.25rem",
118
- children: timeLabel
119
- }) : null
120
- })]
112
+ })
121
113
  });
122
114
  });
123
115
  QuotedMessage.displayName = 'QuotedMessage';
@@ -171,10 +163,6 @@ const styles = StyleSheet.create({
171
163
  backgroundColor: KColors.hexToRgba(KColors.black, 0.6),
172
164
  justifyContent: 'center',
173
165
  alignItems: 'center'
174
- },
175
- timeLabel: {
176
- gap: 4,
177
- marginTop: 2
178
166
  }
179
167
  });
180
168
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useCallback","useMemo","messageStyles","formatMessageTime","KColors","KContainer","KImage","KLabel","KRadiusValue","KSpacingValue","DeviceEventEmitter","StyleSheet","CHAT_BUBBLE_COLORS","MessageType","getMessagePreviewParts","getReplySenderName","parseUrlMetadata","getFileIcon","getMimeType","useUserStore","useChatDetailContext","ChatEvent","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","QuotedMessage","props","message","isOutgoing","createdAtTime","isHighlighted","conversation","currentUserId","s","user","userID","quotedMessage","quoteElem","quoteMessage","messagePreview","timeLabel","imageUrl","contentType","PictureMessage","pictureElem","snapshotPicture","url","VideoMessage","videoElem","snapshotUrl","UrlTextMessage","metadata","ex","image","iconSource","FileMessage","mimeType","fileElem","fileName","handlePressQuotedMessage","emit","ScrollToMessage","clientMessageId","clientMsgID","children","View","style","bubble","styles","container","bubbleSent","bubbleReceived","bubbleHighlighted","Touchable","quotedContainer","onPress","dot","VisibleView","visible","imageContainer","Base","uri","playIconContainer","playIcon","VectorIcons","name","size","color","white","icon","resizeMode","flexS","content","Text","typo","numberOfLines","gray","light","textProps","text","row","alignItems","timestamp","marginL","displayName","create","gap","backgroundColor","flexDirection","borderTopRightRadius","borderBottomRightRadius","paddingRight","maxWidth","width","height","palette","grayCool","w200","borderRadius","x","marginRight","paddingHorizontal","paddingVertical","position","top","left","right","bottom","justifyContent","padding","hexToRgba","black","marginTop"],"sourceRoot":"../../../../../src","sources":["components/messages/quotedMessage/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["memo","useCallback","useMemo","messageStyles","getTailCornerStyle","BubbleTailRow","KColors","KContainer","KImage","KLabel","KRadiusValue","KSpacingValue","DeviceEventEmitter","StyleSheet","CHAT_BUBBLE_COLORS","MessageType","getMessagePreviewParts","getReplySenderName","parseUrlMetadata","getFileIcon","getMimeType","useUserStore","useChatDetailContext","ChatEvent","jsx","_jsx","jsxs","_jsxs","QuotedMessage","props","message","isOutgoing","isHighlighted","groupPosition","conversation","currentUserId","s","user","userID","quotedMessage","quoteElem","quoteMessage","messagePreview","imageUrl","contentType","PictureMessage","pictureElem","snapshotPicture","url","VideoMessage","videoElem","snapshotUrl","UrlTextMessage","metadata","ex","image","iconSource","FileMessage","mimeType","fileElem","fileName","handlePressQuotedMessage","emit","ScrollToMessage","clientMessageId","clientMsgID","children","View","style","bubble","styles","container","bubbleSent","bubbleReceived","bubbleHighlighted","Touchable","quotedContainer","onPress","dot","VisibleView","visible","imageContainer","Base","uri","playIconContainer","playIcon","VectorIcons","name","size","color","white","icon","resizeMode","flexS","content","Text","typo","numberOfLines","gray","light","textProps","text","displayName","create","gap","backgroundColor","flexDirection","alignItems","borderTopRightRadius","borderBottomRightRadius","paddingRight","maxWidth","width","height","palette","grayCool","w200","borderRadius","x","marginRight","paddingHorizontal","paddingVertical","position","top","left","right","bottom","justifyContent","padding","hexToRgba","black"],"sourceRoot":"../../../../../src","sources":["components/messages/quotedMessage/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -5,16 +5,23 @@ import { KContainer, KLabel } from '@droppii/libs';
5
5
  import { trans } from "../../../translation/index.js";
6
6
  import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
7
7
  import { messageStyles } from "../styles.js";
8
+ import { getTailCornerStyle } from "../bubbleTail.utils.js";
9
+ import { BubbleTailRow } from "../BubbleTailRow.js";
8
10
  import { jsx as _jsx } from "react/jsx-runtime";
9
11
  export const RevokedMessage = /*#__PURE__*/memo(({
10
- isOutgoing
12
+ isOutgoing,
13
+ groupPosition
11
14
  }) => {
12
- return /*#__PURE__*/_jsx(KContainer.View, {
13
- style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
14
- children: /*#__PURE__*/_jsx(KLabel.Text, {
15
- typo: "TextMdNormal",
16
- color: CHAT_BUBBLE_COLORS.timestamp,
17
- children: trans('msg_type_revoke')
15
+ return /*#__PURE__*/_jsx(BubbleTailRow, {
16
+ isOutgoing: isOutgoing,
17
+ groupPosition: groupPosition,
18
+ children: /*#__PURE__*/_jsx(KContainer.View, {
19
+ style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived, getTailCornerStyle(isOutgoing, groupPosition)],
20
+ children: /*#__PURE__*/_jsx(KLabel.Text, {
21
+ typo: "TextMdNormal",
22
+ color: CHAT_BUBBLE_COLORS.timestamp,
23
+ children: trans('msg_type_revoke')
24
+ })
18
25
  })
19
26
  });
20
27
  });
@@ -1 +1 @@
1
- {"version":3,"names":["memo","KContainer","KLabel","trans","CHAT_BUBBLE_COLORS","messageStyles","jsx","_jsx","RevokedMessage","isOutgoing","View","style","bubble","bubbleSent","bubbleReceived","children","Text","typo","color","timestamp","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/revokedMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,KAAK,QAAQ,+BAAsB;AAC5C,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG1C,OAAO,MAAMC,cAAc,gBAAGR,IAAI,CAAC,CAAC;EAAES;AAAmC,CAAC,KAAK;EAC7E,oBACEF,IAAA,CAACN,UAAU,CAACS,IAAI;IACdC,KAAK,EAAE,CACLN,aAAa,CAACO,MAAM,EACpBH,UAAU,GAAGJ,aAAa,CAACQ,UAAU,GAAGR,aAAa,CAACS,cAAc,CACpE;IAAAC,QAAA,eAEFR,IAAA,CAACL,MAAM,CAACc,IAAI;MAACC,IAAI,EAAC,cAAc;MAACC,KAAK,EAAEd,kBAAkB,CAACe,SAAU;MAAAJ,QAAA,EAClEZ,KAAK,CAAC,iBAAiB;IAAC,CACd;EAAC,CACC,CAAC;AAEtB,CAAC,CAAC;AAEFK,cAAc,CAACY,WAAW,GAAG,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["memo","KContainer","KLabel","trans","CHAT_BUBBLE_COLORS","messageStyles","getTailCornerStyle","BubbleTailRow","jsx","_jsx","RevokedMessage","isOutgoing","groupPosition","children","View","style","bubble","bubbleSent","bubbleReceived","Text","typo","color","timestamp","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/revokedMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,KAAK,QAAQ,+BAAsB;AAC5C,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AACzC,SAASC,kBAAkB,QAAQ,wBAAqB;AACxD,SAASC,aAAa,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGjD,OAAO,MAAMC,cAAc,gBAAGV,IAAI,CAChC,CAAC;EAAEW,UAAU;EAAEC;AAAsC,CAAC,KAAK;EACzD,oBACEH,IAAA,CAACF,aAAa;IAACI,UAAU,EAAEA,UAAW;IAACC,aAAa,EAAEA,aAAc;IAAAC,QAAA,eAClEJ,IAAA,CAACR,UAAU,CAACa,IAAI;MACdC,KAAK,EAAE,CACLV,aAAa,CAACW,MAAM,EACpBL,UAAU,GACNN,aAAa,CAACY,UAAU,GACxBZ,aAAa,CAACa,cAAc,EAChCZ,kBAAkB,CAACK,UAAU,EAAEC,aAAa,CAAC,CAC7C;MAAAC,QAAA,eAEFJ,IAAA,CAACP,MAAM,CAACiB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,KAAK,EAAEjB,kBAAkB,CAACkB,SAAU;QAAAT,QAAA,EAClEV,KAAK,CAAC,iBAAiB;MAAC,CACd;IAAC,CACC;EAAC,CACL,CAAC;AAEpB,CACF,CAAC;AAEDO,cAAc,CAACa,WAAW,GAAG,gBAAgB","ignoreList":[]}
@@ -3,17 +3,23 @@
3
3
  import { memo } from 'react';
4
4
  import { KContainer, KImage } from '@droppii/libs';
5
5
  import { StyleSheet } from 'react-native';
6
+ import { BubbleTailRow } from "../BubbleTailRow.js";
6
7
  import { jsx as _jsx } from "react/jsx-runtime";
7
8
  export const STICKER_SIZE = 120;
8
9
  export const StickerMessage = /*#__PURE__*/memo(({
9
- message
10
+ message,
11
+ isOutgoing
10
12
  }) => {
11
- return /*#__PURE__*/_jsx(KContainer.View, {
12
- style: styles.message,
13
- children: /*#__PURE__*/_jsx(KImage.Base, {
14
- uri: message?.stickerElem?.content || '',
15
- width: STICKER_SIZE,
16
- height: STICKER_SIZE
13
+ return /*#__PURE__*/_jsx(BubbleTailRow, {
14
+ isOutgoing: isOutgoing,
15
+ withTail: false,
16
+ children: /*#__PURE__*/_jsx(KContainer.View, {
17
+ style: styles.message,
18
+ children: /*#__PURE__*/_jsx(KImage.Base, {
19
+ uri: message?.stickerElem?.content || '',
20
+ width: STICKER_SIZE,
21
+ height: STICKER_SIZE
22
+ })
17
23
  })
18
24
  });
19
25
  });
@@ -1 +1 @@
1
- {"version":3,"names":["memo","KContainer","KImage","StyleSheet","jsx","_jsx","STICKER_SIZE","StickerMessage","message","View","style","styles","children","Base","uri","stickerElem","content","width","height","create","justifyContent","alignItems"],"sourceRoot":"../../../../../src","sources":["components/messages/stickerMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAE5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,UAAU,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1C,OAAO,MAAMC,YAAY,GAAG,GAAG;AAC/B,OAAO,MAAMC,cAAc,gBAAGP,IAAI,CAAC,CAAC;EAAEQ;AAAgC,CAAC,KAAK;EAC1E,oBACEH,IAAA,CAACJ,UAAU,CAACQ,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACH,OAAQ;IAAAI,QAAA,eACrCP,IAAA,CAACH,MAAM,CAACW,IAAI;MACVC,GAAG,EAAEN,OAAO,EAAEO,WAAW,EAAEC,OAAO,IAAI,EAAG;MACzCC,KAAK,EAAEX,YAAa;MACpBY,MAAM,EAAEZ;IAAa,CACtB;EAAC,CACa,CAAC;AAEtB,CAAC,CAAC;AAEF,MAAMK,MAAM,GAAGR,UAAU,CAACgB,MAAM,CAAC;EAC/BX,OAAO,EAAE;IACPS,KAAK,EAAEX,YAAY;IACnBY,MAAM,EAAEZ,YAAY;IACpBc,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["memo","KContainer","KImage","StyleSheet","BubbleTailRow","jsx","_jsx","STICKER_SIZE","StickerMessage","message","isOutgoing","withTail","children","View","style","styles","Base","uri","stickerElem","content","width","height","create","justifyContent","alignItems"],"sourceRoot":"../../../../../src","sources":["components/messages/stickerMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAE5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,aAAa,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEjD,OAAO,MAAMC,YAAY,GAAG,GAAG;AAC/B,OAAO,MAAMC,cAAc,gBAAGR,IAAI,CAChC,CAAC;EAAES,OAAO;EAAEC;AAAmC,CAAC,KAAK;EACnD,oBACEJ,IAAA,CAACF,aAAa;IAACM,UAAU,EAAEA,UAAW;IAACC,QAAQ,EAAE,KAAM;IAAAC,QAAA,eACrDN,IAAA,CAACL,UAAU,CAACY,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACN,OAAQ;MAAAG,QAAA,eACrCN,IAAA,CAACJ,MAAM,CAACc,IAAI;QACVC,GAAG,EAAER,OAAO,EAAES,WAAW,EAAEC,OAAO,IAAI,EAAG;QACzCC,KAAK,EAAEb,YAAa;QACpBc,MAAM,EAAEd;MAAa,CACtB;IAAC,CACa;EAAC,CACL,CAAC;AAEpB,CACF,CAAC;AAED,MAAMQ,MAAM,GAAGZ,UAAU,CAACmB,MAAM,CAAC;EAC/Bb,OAAO,EAAE;IACPW,KAAK,EAAEb,YAAY;IACnBc,MAAM,EAAEd,YAAY;IACpBgB,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -5,46 +5,31 @@ import { KContainer, KLabel } from '@droppii/libs';
5
5
  import { getMessageText } from "../../../utils/legendListMessage.js";
6
6
  import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
7
7
  import { messageStyles } from "../styles.js";
8
- import { formatMessageTime } from "../types.js";
9
- import { StyleSheet } from 'react-native';
10
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
8
+ import { getTailCornerStyle } from "../bubbleTail.utils.js";
9
+ import { BubbleTailRow } from "../BubbleTailRow.js";
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
11
  export const TextMessage = /*#__PURE__*/memo(({
12
12
  message,
13
13
  isOutgoing,
14
- createdAtTime,
15
- isHighlighted
14
+ isHighlighted,
15
+ groupPosition
16
16
  }) => {
17
17
  const messageText = getMessageText(message);
18
- const timeLabel = formatMessageTime(createdAtTime);
19
18
  if (!messageText?.trim()) {
20
19
  return null;
21
20
  }
22
- return /*#__PURE__*/_jsxs(_Fragment, {
23
- children: [/*#__PURE__*/_jsx(KContainer.View, {
24
- style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived, isHighlighted && messageStyles.bubbleHighlighted],
21
+ return /*#__PURE__*/_jsx(BubbleTailRow, {
22
+ isOutgoing: isOutgoing,
23
+ groupPosition: groupPosition,
24
+ children: /*#__PURE__*/_jsx(KContainer.View, {
25
+ style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived, isHighlighted && messageStyles.bubbleHighlighted, getTailCornerStyle(isOutgoing, groupPosition)],
25
26
  children: /*#__PURE__*/_jsx(KLabel.Text, {
26
27
  typo: "TextMdNormal",
27
28
  color: CHAT_BUBBLE_COLORS.text,
28
29
  children: messageText
29
30
  })
30
- }), /*#__PURE__*/_jsx(KContainer.View, {
31
- row: true,
32
- alignItems: true,
33
- style: styles.timeLabel,
34
- children: !isOutgoing && timeLabel ? /*#__PURE__*/_jsx(KLabel.Text, {
35
- typo: "TextXsNormal",
36
- color: CHAT_BUBBLE_COLORS.timestamp,
37
- marginL: '0.25rem',
38
- children: timeLabel
39
- }) : null
40
- })]
31
+ })
41
32
  });
42
33
  });
43
34
  TextMessage.displayName = 'TextMessage';
44
- const styles = StyleSheet.create({
45
- timeLabel: {
46
- gap: 4,
47
- marginTop: 2
48
- }
49
- });
50
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["memo","KContainer","KLabel","getMessageText","CHAT_BUBBLE_COLORS","messageStyles","formatMessageTime","StyleSheet","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","TextMessage","message","isOutgoing","createdAtTime","isHighlighted","messageText","timeLabel","trim","children","View","style","bubble","bubbleSent","bubbleReceived","bubbleHighlighted","Text","typo","color","text","row","alignItems","styles","timestamp","marginL","displayName","create","gap","marginTop"],"sourceRoot":"../../../../../src","sources":["components/messages/textMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,cAAc,QAAQ,qCAAkC;AACjE,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AACzC,SAASC,iBAAiB,QAAQ,aAAU;AAE5C,SAASC,UAAU,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAC1C,OAAO,MAAMC,WAAW,gBAAGd,IAAI,CAC7B,CAAC;EACCe,OAAO;EACPC,UAAU;EACVC,aAAa;EACbC;AACsB,CAAC,KAAK;EAC5B,MAAMC,WAAW,GAAGhB,cAAc,CAACY,OAAO,CAAC;EAC3C,MAAMK,SAAS,GAAGd,iBAAiB,CAACW,aAAa,CAAC;EAElD,IAAI,CAACE,WAAW,EAAEE,IAAI,CAAC,CAAC,EAAE;IACxB,OAAO,IAAI;EACb;EAEA,oBACER,KAAA,CAAAF,SAAA;IAAAW,QAAA,gBACEb,IAAA,CAACR,UAAU,CAACsB,IAAI;MACdC,KAAK,EAAE,CACLnB,aAAa,CAACoB,MAAM,EACpBT,UAAU,GACNX,aAAa,CAACqB,UAAU,GACxBrB,aAAa,CAACsB,cAAc,EAChCT,aAAa,IAAIb,aAAa,CAACuB,iBAAiB,CAChD;MAAAN,QAAA,eAEFb,IAAA,CAACP,MAAM,CAAC2B,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,KAAK,EAAE3B,kBAAkB,CAAC4B,IAAK;QAAAV,QAAA,EAC7DH;MAAW,CACD;IAAC,CACC,CAAC,eAElBV,IAAA,CAACR,UAAU,CAACsB,IAAI;MAACU,GAAG;MAACC,UAAU;MAACV,KAAK,EAAEW,MAAM,CAACf,SAAU;MAAAE,QAAA,EACrD,CAACN,UAAU,IAAII,SAAS,gBACvBX,IAAA,CAACP,MAAM,CAAC2B,IAAI;QACVC,IAAI,EAAC,cAAc;QACnBC,KAAK,EAAE3B,kBAAkB,CAACgC,SAAU;QACpCC,OAAO,EAAE,SAAU;QAAAf,QAAA,EAElBF;MAAS,CACC,CAAC,GACZ;IAAI,CACO,CAAC;EAAA,CAClB,CAAC;AAEP,CACF,CAAC;AAEDN,WAAW,CAACwB,WAAW,GAAG,aAAa;AAEvC,MAAMH,MAAM,GAAG5B,UAAU,CAACgC,MAAM,CAAC;EAC/BnB,SAAS,EAAE;IAAEoB,GAAG,EAAE,CAAC;IAAEC,SAAS,EAAE;EAAE;AACpC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["memo","KContainer","KLabel","getMessageText","CHAT_BUBBLE_COLORS","messageStyles","getTailCornerStyle","BubbleTailRow","jsx","_jsx","TextMessage","message","isOutgoing","isHighlighted","groupPosition","messageText","trim","children","View","style","bubble","bubbleSent","bubbleReceived","bubbleHighlighted","Text","typo","color","text","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/textMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,cAAc,QAAQ,qCAAkC;AACjE,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AACzC,SAASC,kBAAkB,QAAQ,wBAAqB;AACxD,SAASC,aAAa,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEjD,OAAO,MAAMC,WAAW,gBAAGV,IAAI,CAC7B,CAAC;EACCW,OAAO;EACPC,UAAU;EACVC,aAAa;EACbC;AACsB,CAAC,KAAK;EAC5B,MAAMC,WAAW,GAAGZ,cAAc,CAACQ,OAAO,CAAC;EAE3C,IAAI,CAACI,WAAW,EAAEC,IAAI,CAAC,CAAC,EAAE;IACxB,OAAO,IAAI;EACb;EAEA,oBACEP,IAAA,CAACF,aAAa;IAACK,UAAU,EAAEA,UAAW;IAACE,aAAa,EAAEA,aAAc;IAAAG,QAAA,eAClER,IAAA,CAACR,UAAU,CAACiB,IAAI;MACdC,KAAK,EAAE,CACLd,aAAa,CAACe,MAAM,EACpBR,UAAU,GACNP,aAAa,CAACgB,UAAU,GACxBhB,aAAa,CAACiB,cAAc,EAChCT,aAAa,IAAIR,aAAa,CAACkB,iBAAiB,EAChDjB,kBAAkB,CAACM,UAAU,EAAEE,aAAa,CAAC,CAC7C;MAAAG,QAAA,eAEFR,IAAA,CAACP,MAAM,CAACsB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,KAAK,EAAEtB,kBAAkB,CAACuB,IAAK;QAAAV,QAAA,EAC7DF;MAAW,CACD;IAAC,CACC;EAAC,CACL,CAAC;AAEpB,CACF,CAAC;AAEDL,WAAW,CAACkB,WAAW,GAAG,aAAa","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["formatMessageTime","createdAt","date","Date","Number","isNaN","getTime","toLocaleTimeString","hour","minute","hour12"],"sourceRoot":"../../../../src","sources":["components/messages/types.ts"],"mappings":";;AAWA,OAAO,MAAMA,iBAAiB,GAAIC,SAAiB,IAAK;EACtD,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,SAAS,CAAC;EAChC,IAAIG,MAAM,CAACC,KAAK,CAACH,IAAI,CAACI,OAAO,CAAC,CAAC,CAAC,EAAE;IAChC,OAAO,EAAE;EACX;EAEA,OAAOJ,IAAI,CAACK,kBAAkB,CAAC,OAAO,EAAE;IACtCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["formatMessageTime","createdAt","date","Date","Number","isNaN","getTime","toLocaleTimeString","hour","minute","hour12"],"sourceRoot":"../../../../src","sources":["components/messages/types.ts"],"mappings":";;AAcA,OAAO,MAAMA,iBAAiB,GAAIC,SAAiB,IAAK;EACtD,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,SAAS,CAAC;EAChC,IAAIG,MAAM,CAACC,KAAK,CAACH,IAAI,CAACI,OAAO,CAAC,CAAC,CAAC,EAAE;IAChC,OAAO,EAAE;EACX;EAEA,OAAOJ,IAAI,CAACK,kBAAkB,CAAC,OAAO,EAAE;IACtCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -6,7 +6,8 @@ import { KContainer, KImage, KLabel } from '@droppii/libs';
6
6
  import ChatImageDimens, { CHAT_IMAGE_VIEW_SOURCE } from "../../../utils/chatImageDimens.js";
7
7
  import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
8
8
  import { messageStyles } from "../styles.js";
9
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
9
+ import { BubbleTailRow } from "../BubbleTailRow.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
11
  const formatDuration = durationMs => {
11
12
  const totalSeconds = Math.floor(durationMs / 1000);
12
13
  const minutes = Math.floor(totalSeconds / 60);
@@ -15,6 +16,7 @@ const formatDuration = durationMs => {
15
16
  };
16
17
  export const VideoMessage = /*#__PURE__*/memo(({
17
18
  message,
19
+ isOutgoing,
18
20
  onMediaPress
19
21
  }) => {
20
22
  const videoElem = message?.videoElem;
@@ -30,17 +32,23 @@ export const VideoMessage = /*#__PURE__*/memo(({
30
32
  }
31
33
  }, [videoUrl, onMediaPress]);
32
34
  if (!videoUrl) {
33
- return /*#__PURE__*/_jsx(KContainer.View, {
34
- style: [messageStyles.bubble, messageStyles.videoPlaceholder],
35
- children: /*#__PURE__*/_jsx(KLabel.Text, {
36
- typo: "TextSmNormal",
37
- color: CHAT_BUBBLE_COLORS.text,
38
- children: "\uD83D\uDCF9 [Video unavailable]"
35
+ return /*#__PURE__*/_jsx(BubbleTailRow, {
36
+ isOutgoing: isOutgoing,
37
+ withTail: false,
38
+ children: /*#__PURE__*/_jsx(KContainer.View, {
39
+ style: [messageStyles.bubble, messageStyles.videoPlaceholder],
40
+ children: /*#__PURE__*/_jsx(KLabel.Text, {
41
+ typo: "TextSmNormal",
42
+ color: CHAT_BUBBLE_COLORS.text,
43
+ children: "\uD83D\uDCF9 [Video unavailable]"
44
+ })
39
45
  })
40
46
  });
41
47
  }
42
48
  const dimen = ChatImageDimens.getDimensions(CHAT_IMAGE_VIEW_SOURCE.MessageListThumbnail);
43
- return /*#__PURE__*/_jsx(_Fragment, {
49
+ return /*#__PURE__*/_jsx(BubbleTailRow, {
50
+ isOutgoing: isOutgoing,
51
+ withTail: false,
44
52
  children: /*#__PURE__*/_jsxs(KContainer.Touchable, {
45
53
  onPress: handlePress,
46
54
  style: [styles.videoContainer, {
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useCallback","StyleSheet","KContainer","KImage","KLabel","ChatImageDimens","CHAT_IMAGE_VIEW_SOURCE","CHAT_BUBBLE_COLORS","messageStyles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","formatDuration","durationMs","totalSeconds","Math","floor","minutes","seconds","String","padStart","VideoMessage","message","onMediaPress","videoElem","videoUrl","duration","thumbnail","snapshotUrl","handlePress","url","isVideo","View","style","bubble","videoPlaceholder","children","Text","typo","color","text","dimen","getDimensions","MessageListThumbnail","Touchable","onPress","styles","videoContainer","width","height","Base","uri","resizeMode","videoBg","playOverlay","center","VectorIcons","name","provider","size","durationBadge","displayName","create","overflow","borderRadius","backgroundColor","flex","position","top","left","right","bottom","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../../../src","sources":["components/messages/videoMessage/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["memo","useCallback","StyleSheet","KContainer","KImage","KLabel","ChatImageDimens","CHAT_IMAGE_VIEW_SOURCE","CHAT_BUBBLE_COLORS","messageStyles","BubbleTailRow","jsx","_jsx","jsxs","_jsxs","formatDuration","durationMs","totalSeconds","Math","floor","minutes","seconds","String","padStart","VideoMessage","message","isOutgoing","onMediaPress","videoElem","videoUrl","duration","thumbnail","snapshotUrl","handlePress","url","isVideo","withTail","children","View","style","bubble","videoPlaceholder","Text","typo","color","text","dimen","getDimensions","MessageListThumbnail","Touchable","onPress","styles","videoContainer","width","height","Base","uri","resizeMode","videoBg","playOverlay","center","VectorIcons","name","provider","size","durationBadge","displayName","create","overflow","borderRadius","backgroundColor","flex","position","top","left","right","bottom","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../../../src","sources":["components/messages/videoMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,QAAQ,OAAO;AACzC,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,EAAEC,MAAM,EAAEC,MAAM,QAAQ,eAAe;AAC1D,OAAOC,eAAe,IACpBC,sBAAsB,QACjB,mCAAgC;AACvC,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AACzC,SAASC,aAAa,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEjD,MAAMC,cAAc,GAAIC,UAAkB,IAAa;EACrD,MAAMC,YAAY,GAAGC,IAAI,CAACC,KAAK,CAACH,UAAU,GAAG,IAAI,CAAC;EAClD,MAAMI,OAAO,GAAGF,IAAI,CAACC,KAAK,CAACF,YAAY,GAAG,EAAE,CAAC;EAC7C,MAAMI,OAAO,GAAGJ,YAAY,GAAG,EAAE;EACjC,OAAO,GAAGK,MAAM,CAACF,OAAO,CAAC,CAACG,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAID,MAAM,CAACD,OAAO,CAAC,CAACE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AAClF,CAAC;AAED,OAAO,MAAMC,YAAY,gBAAGxB,IAAI,CAC9B,CAAC;EAAEyB,OAAO;EAAEC,UAAU;EAAEC;AAAqC,CAAC,KAAK;EACjE,MAAMC,SAAS,GAAGH,OAAO,EAAEG,SAAS;EACpC,MAAMC,QAAQ,GAAGD,SAAS,EAAEC,QAAQ;EACpC,MAAMC,QAAQ,GAAGF,SAAS,EAAEE,QAAQ;EACpC,MAAMC,SAAS,GAAGH,SAAS,EAAEI,WAAW;EAExC,MAAMC,WAAW,GAAGhC,WAAW,CAAC,MAAM;IACpC,IAAI4B,QAAQ,IAAIF,YAAY,EAAE;MAC5BA,YAAY,CAAC,CAAC;QAAEO,GAAG,EAAEL,QAAQ;QAAEM,OAAO,EAAE;MAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD;EACF,CAAC,EAAE,CAACN,QAAQ,EAAEF,YAAY,CAAC,CAAC;EAE5B,IAAI,CAACE,QAAQ,EAAE;IACb,oBACEjB,IAAA,CAACF,aAAa;MAACgB,UAAU,EAAEA,UAAW;MAACU,QAAQ,EAAE,KAAM;MAAAC,QAAA,eACrDzB,IAAA,CAACT,UAAU,CAACmC,IAAI;QACdC,KAAK,EAAE,CAAC9B,aAAa,CAAC+B,MAAM,EAAE/B,aAAa,CAACgC,gBAAgB,CAAE;QAAAJ,QAAA,eAE9DzB,IAAA,CAACP,MAAM,CAACqC,IAAI;UAACC,IAAI,EAAC,cAAc;UAACC,KAAK,EAAEpC,kBAAkB,CAACqC,IAAK;UAAAR,QAAA,EAAC;QAEjE,CAAa;MAAC,CACC;IAAC,CACL,CAAC;EAEpB;EAEA,MAAMS,KAAK,GAAGxC,eAAe,CAACyC,aAAa,CACzCxC,sBAAsB,CAACyC,oBACzB,CAAC;EAED,oBACEpC,IAAA,CAACF,aAAa;IAACgB,UAAU,EAAEA,UAAW;IAACU,QAAQ,EAAE,KAAM;IAAAC,QAAA,eACrDvB,KAAA,CAACX,UAAU,CAAC8C,SAAS;MACnBC,OAAO,EAAEjB,WAAY;MACrBM,KAAK,EAAE,CACLY,MAAM,CAACC,cAAc,EACrB;QAAEC,KAAK,EAAEP,KAAK,CAACO,KAAK;QAAEC,MAAM,EAAER,KAAK,CAACQ;MAAO,CAAC,CAC5C;MAAAjB,QAAA,GAEDN,SAAS,gBACRnB,IAAA,CAACR,MAAM,CAACmD,IAAI;QACVC,GAAG,EAAEzB,SAAU;QACfsB,KAAK,EAAEP,KAAK,CAACO,KAAM;QACnBC,MAAM,EAAER,KAAK,CAACQ,MAAO;QACrBG,UAAU,EAAC;MAAO,CACnB,CAAC,gBAEF7C,IAAA,CAACT,UAAU,CAACmC,IAAI;QAACC,KAAK,EAAEY,MAAM,CAACO;MAAQ,CAAE,CAC1C,eAED9C,IAAA,CAACT,UAAU,CAACmC,IAAI;QAACC,KAAK,EAAEY,MAAM,CAACQ,WAAY;QAACC,MAAM;QAAAvB,QAAA,eAChDzB,IAAA,CAACR,MAAM,CAACyD,WAAW;UACjBC,IAAI,EAAC,aAAa;UAClBC,QAAQ,EAAC,wBAAwB;UACjCC,IAAI,EAAE,EAAG;UACTpB,KAAK,EAAC;QAAO,CACd;MAAC,CACa,CAAC,EAEjBd,QAAQ,iBACPlB,IAAA,CAACT,UAAU,CAACmC,IAAI;QAACC,KAAK,EAAEY,MAAM,CAACc,aAAc;QAAA5B,QAAA,eAC3CzB,IAAA,CAACP,MAAM,CAACqC,IAAI;UAACC,IAAI,EAAC,cAAc;UAACC,KAAK,EAAC,OAAO;UAAAP,QAAA,EAC3CtB,cAAc,CAACe,QAAQ;QAAC,CACd;MAAC,CACC,CAClB;IAAA,CACmB;EAAC,CACV,CAAC;AAEpB,CACF,CAAC;AAEDN,YAAY,CAAC0C,WAAW,GAAG,cAAc;AAEzC,MAAMf,MAAM,GAAGjD,UAAU,CAACiE,MAAM,CAAC;EAC/Bf,cAAc,EAAE;IACdgB,QAAQ,EAAE,QAAQ;IAClBC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE;EACnB,CAAC;EACDZ,OAAO,EAAE;IACPa,IAAI,EAAE,CAAC;IACPD,eAAe,EAAE;EACnB,CAAC;EACDX,WAAW,EAAE;IACXa,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTN,eAAe,EAAE;EACnB,CAAC;EACDL,aAAa,EAAE;IACbO,QAAQ,EAAE,UAAU;IACpBI,MAAM,EAAE,CAAC;IACTD,KAAK,EAAE,CAAC;IACRL,eAAe,EAAE,oBAAoB;IACrCO,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAE,CAAC;IAClBT,YAAY,EAAE;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -16,7 +16,8 @@ export function useDismissGroup({
16
16
  title: {
17
17
  text: trans('group:dismiss_confirm_title')
18
18
  },
19
- alignment: 'center'
19
+ alignment: 'center',
20
+ showCloseButton: true
20
21
  },
21
22
  body: {
22
23
  renderContent: () => {
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","OpenIMSDK","KContainer","KLabel","UIUtils","trans","jsx","_jsx","useDismissGroup","onSuccess","openDismissPopup","Promise","resolve","reject","popup","open","header","title","text","alignment","body","renderContent","View","padding","justifyContent","alignItems","children","Text","typo","textAlign","actions","buttons","label","kind","onPress","weight","isLightSolid","type","dismissGroup","groupID","toast","theme","error","console"],"sourceRoot":"../../../../src","sources":["hooks/groups/useDismissGroup.tsx"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,OAAOC,SAAS,MAAM,+BAA+B;AACrD,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,OAAO,QAAQ,wBAAqB;AAC7C,SAASC,KAAK,QAAQ,4BAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAK1C,OAAO,SAASC,eAAeA,CAAC;EAAEC;AAAgC,CAAC,EAAE;EACnE,MAAMC,gBAAgB,GAAGV,WAAW,CAAC,MAAM;IACzC,OAAO,IAAIW,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAK;MAC5CT,OAAO,CAACU,KAAK,CAACC,IAAI,CAAC;QACjBC,MAAM,EAAE;UACNC,KAAK,EAAE;YAAEC,IAAI,EAAEb,KAAK,CAAC,6BAA6B;UAAE,CAAC;UACrDc,SAAS,EAAE;QACb,CAAC;QACDC,IAAI,EAAE;UACJC,aAAa,EAAEA,CAAA,KAAM;YACnB,oBACEd,IAAA,CAACL,UAAU,CAACoB,IAAI;cAACC,OAAO,EAAE,MAAO;cAACC,cAAc;cAACC,UAAU;cAAAC,QAAA,eACzDnB,IAAA,CAACJ,MAAM,CAACwB,IAAI;gBAACC,IAAI,EAAC,cAAc;gBAACC,SAAS,EAAC,QAAQ;gBAAAH,QAAA,EAChDrB,KAAK,CAAC,4BAA4B;cAAC,CACzB;YAAC,CACC,CAAC;UAEtB;QACF,CAAC;QACDyB,OAAO,EAAE;UACPC,OAAO,EAAE,CACP;YACEC,KAAK,EAAE3B,KAAK,CAAC,iCAAiC,CAAC;YAC/C4B,IAAI,EAAE,OAAO;YACbC,OAAO,EAAEA,CAAA,KAAMrB,MAAM,CAAC,CAAC;YACvBsB,MAAM,EAAE;UACV,CAAC,EACD;YACEH,KAAK,EAAE3B,KAAK,CAAC,+BAA+B,CAAC;YAC7C4B,IAAI,EAAE,QAAQ;YACdC,OAAO,EAAEA,CAAA,KAAMtB,OAAO,CAAC,CAAC;YACxBwB,YAAY,EAAE,IAAI;YAClBD,MAAM,EAAE;UACV,CAAC,CACF;UACDE,IAAI,EAAE;QACR;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,YAAY,GAAGtC,WAAW,CAC9B,MAAOuC,OAAgB,IAAK;IAC1B,IAAI,CAACA,OAAO,EAAE;IAEd,IAAI;MACF,MAAM7B,gBAAgB,CAAC,CAAC;IAC1B,CAAC,CAAC,MAAM;MACN;IACF;IAEA,IAAI;MACF,MAAMT,SAAS,CAACqC,YAAY,CAACC,OAAO,CAAC;MACrC9B,SAAS,GAAG,CAAC;MACbL,OAAO,CAACoC,KAAK,CAACzB,IAAI,CAAC;QACjBE,KAAK,EAAEZ,KAAK,CAAC,6BAA6B,CAAC;QAC3CoC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,qBAAqB,EAAEA,KAAK,CAAC;MAC3CtC,OAAO,CAACoC,KAAK,CAACzB,IAAI,CAAC;QACjBE,KAAK,EAAEZ,KAAK,CAAC,oBAAoB,CAAC;QAClCoC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAAC/B,gBAAgB,EAAED,SAAS,CAC9B,CAAC;EAED,OAAO;IAAE6B;EAAa,CAAC;AACzB","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","OpenIMSDK","KContainer","KLabel","UIUtils","trans","jsx","_jsx","useDismissGroup","onSuccess","openDismissPopup","Promise","resolve","reject","popup","open","header","title","text","alignment","showCloseButton","body","renderContent","View","padding","justifyContent","alignItems","children","Text","typo","textAlign","actions","buttons","label","kind","onPress","weight","isLightSolid","type","dismissGroup","groupID","toast","theme","error","console"],"sourceRoot":"../../../../src","sources":["hooks/groups/useDismissGroup.tsx"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,OAAOC,SAAS,MAAM,+BAA+B;AACrD,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,OAAO,QAAQ,wBAAqB;AAC7C,SAASC,KAAK,QAAQ,4BAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAK1C,OAAO,SAASC,eAAeA,CAAC;EAAEC;AAAgC,CAAC,EAAE;EACnE,MAAMC,gBAAgB,GAAGV,WAAW,CAAC,MAAM;IACzC,OAAO,IAAIW,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAK;MAC5CT,OAAO,CAACU,KAAK,CAACC,IAAI,CAAC;QACjBC,MAAM,EAAE;UACNC,KAAK,EAAE;YAAEC,IAAI,EAAEb,KAAK,CAAC,6BAA6B;UAAE,CAAC;UACrDc,SAAS,EAAE,QAAQ;UACnBC,eAAe,EAAE;QACnB,CAAC;QACDC,IAAI,EAAE;UACJC,aAAa,EAAEA,CAAA,KAAM;YACnB,oBACEf,IAAA,CAACL,UAAU,CAACqB,IAAI;cAACC,OAAO,EAAE,MAAO;cAACC,cAAc;cAACC,UAAU;cAAAC,QAAA,eACzDpB,IAAA,CAACJ,MAAM,CAACyB,IAAI;gBAACC,IAAI,EAAC,cAAc;gBAACC,SAAS,EAAC,QAAQ;gBAAAH,QAAA,EAChDtB,KAAK,CAAC,4BAA4B;cAAC,CACzB;YAAC,CACC,CAAC;UAEtB;QACF,CAAC;QACD0B,OAAO,EAAE;UACPC,OAAO,EAAE,CACP;YACEC,KAAK,EAAE5B,KAAK,CAAC,iCAAiC,CAAC;YAC/C6B,IAAI,EAAE,OAAO;YACbC,OAAO,EAAEA,CAAA,KAAMtB,MAAM,CAAC,CAAC;YACvBuB,MAAM,EAAE;UACV,CAAC,EACD;YACEH,KAAK,EAAE5B,KAAK,CAAC,+BAA+B,CAAC;YAC7C6B,IAAI,EAAE,QAAQ;YACdC,OAAO,EAAEA,CAAA,KAAMvB,OAAO,CAAC,CAAC;YACxByB,YAAY,EAAE,IAAI;YAClBD,MAAM,EAAE;UACV,CAAC,CACF;UACDE,IAAI,EAAE;QACR;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,YAAY,GAAGvC,WAAW,CAC9B,MAAOwC,OAAgB,IAAK;IAC1B,IAAI,CAACA,OAAO,EAAE;IAEd,IAAI;MACF,MAAM9B,gBAAgB,CAAC,CAAC;IAC1B,CAAC,CAAC,MAAM;MACN;IACF;IAEA,IAAI;MACF,MAAMT,SAAS,CAACsC,YAAY,CAACC,OAAO,CAAC;MACrC/B,SAAS,GAAG,CAAC;MACbL,OAAO,CAACqC,KAAK,CAAC1B,IAAI,CAAC;QACjBE,KAAK,EAAEZ,KAAK,CAAC,6BAA6B,CAAC;QAC3CqC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,qBAAqB,EAAEA,KAAK,CAAC;MAC3CvC,OAAO,CAACqC,KAAK,CAAC1B,IAAI,CAAC;QACjBE,KAAK,EAAEZ,KAAK,CAAC,oBAAoB,CAAC;QAClCqC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAAChC,gBAAgB,EAAED,SAAS,CAC9B,CAAC;EAED,OAAO;IAAE8B;EAAa,CAAC;AACzB","ignoreList":[]}
@@ -7,6 +7,7 @@ import { KeyboardAwareLegendList } from '@legendapp/list/keyboard';
7
7
  import { LegendList } from '@legendapp/list/react-native';
8
8
  import { KContainer, KColors, KSpacingValue, KLabel, KRadiusValue, KImage } from '@droppii/libs';
9
9
  import { precomputeLegendListData } from "../../utils/legendListMessage.js";
10
+ import { getMessageRenderId } from "../../utils/message.js";
10
11
  import { LegendChatMessage } from "./legend/LegendChatMessage.js";
11
12
  import { LegendChatDay } from "./legend/LegendChatDay.js";
12
13
  import { LegendChatLoadEarlier } from "./legend/LegendChatLoadEarlier.js";
@@ -19,18 +20,23 @@ import { ChatEvent } from "../../types/events.js";
19
20
  import { useMessageStore } from "../../store/message.js";
20
21
  import { useChatContext } from "../../context/index.js";
21
22
  import { messageStyles } from "./legend/messageTypes.js";
22
- import { MessageType } from '@droppii/openim-rn-client-sdk';
23
+ import { MessageType, PeerType } from '@droppii/openim-rn-client-sdk';
23
24
  import { useUserStore } from "../../store/index.js";
24
25
  import { ChatMessageAPI } from "../../services/index.js";
25
26
  import { resolveImageDisplayDims } from "../../components/messages/imageMessage/index.js";
26
27
  import { STICKER_SIZE } from "../../components/messages/stickerMessage/index.js";
27
28
  import ChatImageDimens, { CHAT_IMAGE_VIEW_SOURCE } from "../../utils/chatImageDimens.js";
28
29
 
29
- // Row wrapper (`messageRowLeft`/`messageRowRight` in `components/messages/styles.ts`)
30
- // adds only a bottom margin no vertical padding so a fixed-size item's true
31
- // rendered height is `content height + this margin`.
30
+ // Cluster spacing: a wide gap after the message that closes a cluster, a tight
31
+ // one between messages inside it. These override the flat margin on the row
32
+ // wrapper (`messageRowLeft`/`messageRowRight` in `components/messages/styles.ts`),
33
+ // which adds only a bottom margin and no vertical padding — so a fixed-size
34
+ // item's true rendered height stays `content height + this margin`, and
35
+ // getFixedItemSize can keep folding it in.
32
36
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
33
- const ROW_MARGIN_BOTTOM = KSpacingValue['0.25rem'];
37
+ const ROW_MARGIN_CLUSTER_END = KSpacingValue['0.5rem'];
38
+ const ROW_MARGIN_IN_CLUSTER = KSpacingValue['0.25rem'];
39
+ const getRowMarginBottom = position => position === 'last' || position === 'solo' ? ROW_MARGIN_CLUSTER_END : ROW_MARGIN_IN_CLUSTER;
34
40
 
35
41
  // KeyboardAwareLegendList auto scroll when modal opened
36
42
  // TODO: Convert toolbox to absolute view
@@ -57,11 +63,19 @@ export const ChatListLegend = /*#__PURE__*/memo(({
57
63
  const currentUserId = useUserStore(s => s.user?.userID);
58
64
  const windowWidth = useWindowDimensions().width;
59
65
  // Precompute all message data in single pass (O(n))
60
- const messageDataMap = useMemo(() => precomputeLegendListData(messages), [messages]);
61
66
  const {
62
67
  isBotConversation,
63
- conversationFlow
68
+ conversationFlow,
69
+ conversation
64
70
  } = useChatDetailContext();
71
+
72
+ // Avatar and sender name only appear in real group chats — a bot thread is
73
+ // a Group session too, but reads as a single counterpart.
74
+ const isGroupConversation = conversation?.peerType === PeerType.Group && !isBotConversation;
75
+ const messageDataMap = useMemo(() => precomputeLegendListData(messages, {
76
+ isBotConversation,
77
+ currentUserId
78
+ }), [messages, isBotConversation, currentUserId]);
65
79
  const {
66
80
  retryMessage
67
81
  } = useSendMessage();
@@ -114,27 +128,35 @@ export const ChatListLegend = /*#__PURE__*/memo(({
114
128
  const isOutgoing = message.sendID === currentUserId;
115
129
  const isLastMessage = (message.clientMsgID || message.serverMsgID) === lastMessageId;
116
130
  const isLastIncoming = !isOutgoing && isLastMessage;
117
- const messageId = message.clientMsgID || message.serverMsgID || `temp-${message.sendTime || message.createTime}-${index}`;
131
+ const messageId = getMessageRenderId(message, index);
118
132
  const messageData = messageDataMap.get(messageId);
119
133
  if (!messageData) {
120
134
  return null;
121
135
  }
122
136
  const {
123
137
  dayStart,
124
- createdAt
138
+ timeBreak,
139
+ createdAt,
140
+ groupPosition
125
141
  } = messageData;
142
+ const showSenderGutter = isGroupConversation && !isOutgoing;
143
+ const showName = showSenderGutter && (groupPosition === 'first' || groupPosition === 'solo');
144
+ const showAvatar = showSenderGutter && (groupPosition === 'last' || groupPosition === 'solo');
126
145
  let flowInputButtonsNodes = [];
127
146
  if ((isLastMessage && conversationFlow?.havingBotMessage === false || isLastIncoming) && isBotConversation) {
128
147
  flowInputButtonsNodes = getFlowInputButtonsNodes(conversationFlow?.flowCurrentStep);
129
148
  }
130
149
  return /*#__PURE__*/_jsxs(_Fragment, {
131
- children: [dayStart && /*#__PURE__*/_jsx(LegendChatDay, {
132
- createdAt: createdAt
150
+ children: [(dayStart || timeBreak) && /*#__PURE__*/_jsx(LegendChatDay, {
151
+ createdAt: createdAt,
152
+ timeOnly: !dayStart
133
153
  }), /*#__PURE__*/_jsx(KContainer.View, {
134
154
  ref: node => {
135
155
  if (node) rowRefsMap.current.set(messageId, node);else rowRefsMap.current.delete(messageId);
136
156
  },
137
- style: isOutgoing ? messageStyles.messageRowRight : messageStyles.messageRowLeft,
157
+ style: [isOutgoing ? messageStyles.messageRowRight : messageStyles.messageRowLeft, {
158
+ marginBottom: getRowMarginBottom(groupPosition)
159
+ }],
138
160
  collapsable: false,
139
161
  children: /*#__PURE__*/_jsx(LegendChatMessage, {
140
162
  message: message,
@@ -145,7 +167,11 @@ export const ChatListLegend = /*#__PURE__*/memo(({
145
167
  onRetry: retryMessage,
146
168
  onLongPress: onLongPress ? () => handleMessageLongPress(messageId, message) : undefined,
147
169
  customMessageItemFactory: customMessageItemFactory,
148
- isHighlighted: highlightedId === messageId
170
+ isHighlighted: highlightedId === messageId,
171
+ showName: showName,
172
+ showAvatar: showAvatar,
173
+ showSenderGutter: showSenderGutter,
174
+ groupPosition: groupPosition
149
175
  })
150
176
  }), flowInputButtonsNodes && flowInputButtonsNodes.length > 0 && /*#__PURE__*/_jsx(InputButtonFlow, {
151
177
  nodeData: flowInputButtonsNodes,
@@ -163,7 +189,7 @@ export const ChatListLegend = /*#__PURE__*/memo(({
163
189
  })
164
190
  });
165
191
  }
166
- }, [currentUserId, lastMessageId, messageDataMap, isBotConversation, onMediaPress, onPressUrl, onLongPress, handleMessageLongPress, customMessageItemFactory, onResetFlow, onRunFlow, conversationFlow?.flowCurrentStep, conversationFlow?.havingBotMessage, retryMessage, highlightedId]);
192
+ }, [currentUserId, lastMessageId, messageDataMap, isGroupConversation, isBotConversation, onMediaPress, onPressUrl, onLongPress, handleMessageLongPress, customMessageItemFactory, onResetFlow, onRunFlow, conversationFlow?.flowCurrentStep, conversationFlow?.havingBotMessage, retryMessage, highlightedId]);
167
193
 
168
194
  // const maintainScrollConfig = useMemo(
169
195
  // () => ({
@@ -209,8 +235,18 @@ export const ChatListLegend = /*#__PURE__*/memo(({
209
235
  // guessing wrong here is a permanent regression, not just an approximation.
210
236
  const getFixedItemSize = useCallback((item, index) => {
211
237
  const message = item;
212
- const messageId = message.clientMsgID || message.serverMsgID || `temp-${message.sendTime || message.createTime}-${index}`;
213
- if (messageDataMap.get(messageId)?.dayStart) return undefined;
238
+ const messageId = getMessageRenderId(message, index);
239
+ const messageData = messageDataMap.get(messageId);
240
+ // Both separators add chrome above the row that this function does not
241
+ // account for, and a resolved size is never re-measured.
242
+ if (messageData?.dayStart || messageData?.timeBreak) return undefined;
243
+
244
+ // Incoming rows in a group chat carry an avatar column and a sender
245
+ // name whose height this function cannot predict — measure them.
246
+ if (isGroupConversation && message.sendID !== currentUserId) {
247
+ return undefined;
248
+ }
249
+ const rowMargin = getRowMarginBottom(messageData?.groupPosition ?? 'solo');
214
250
 
215
251
  // Resolve the content-type candidate FIRST — for every type other
216
252
  // than these three the result is `undefined` regardless of anything
@@ -220,13 +256,13 @@ export const ChatListLegend = /*#__PURE__*/memo(({
220
256
  let candidateSize;
221
257
  switch (message.contentType) {
222
258
  case MessageType.PictureMessage:
223
- candidateSize = resolveImageDisplayDims(message, windowWidth).height + ROW_MARGIN_BOTTOM;
259
+ candidateSize = resolveImageDisplayDims(message, windowWidth).height + rowMargin;
224
260
  break;
225
261
  case MessageType.VideoMessage:
226
- candidateSize = ChatImageDimens.getDimensions(CHAT_IMAGE_VIEW_SOURCE.MessageListThumbnail).height + ROW_MARGIN_BOTTOM;
262
+ candidateSize = ChatImageDimens.getDimensions(CHAT_IMAGE_VIEW_SOURCE.MessageListThumbnail).height + rowMargin;
227
263
  break;
228
264
  case MessageType.StickerMessage:
229
- candidateSize = STICKER_SIZE + ROW_MARGIN_BOTTOM;
265
+ candidateSize = STICKER_SIZE + rowMargin;
230
266
  break;
231
267
  default:
232
268
  return undefined;
@@ -245,7 +281,21 @@ export const ChatListLegend = /*#__PURE__*/memo(({
245
281
  return undefined;
246
282
  }
247
283
  return candidateSize;
248
- }, [messageDataMap, customMessageItemFactory, currentUserId, lastMessageId, isBotConversation, conversationFlow?.flowCurrentStep, windowWidth]);
284
+ }, [messageDataMap, customMessageItemFactory, currentUserId, isGroupConversation, lastMessageId, isBotConversation, conversationFlow?.flowCurrentStep, windowWidth]);
285
+
286
+ // LegendList memoises each rendered item on [itemKey, item, extraData], so
287
+ // an item whose own object is unchanged will not re-render. Cluster
288
+ // position depends on a message's NEIGHBOURS, which can change while the
289
+ // message itself does not — prepending older history is enough to turn a
290
+ // 'first' into a 'middle'. messageDataMap is memoised on exactly the inputs
291
+ // that can move those boundaries, so including it here is what keeps a
292
+ // stale tail from being left behind.
293
+ const listExtraData = useMemo(() => ({
294
+ messageDataMap,
295
+ flowStepId: conversationFlow?.flowCurrentStep?.id ?? '',
296
+ lastMessageId,
297
+ highlightedId
298
+ }), [messageDataMap, conversationFlow?.flowCurrentStep?.id, lastMessageId, highlightedId]);
249
299
  const handleStartReached = useCallback(() => {
250
300
  if (__DEV__) {
251
301
  console.log('[LegendList] onStartReached triggered', {
@@ -379,7 +429,7 @@ export const ChatListLegend = /*#__PURE__*/memo(({
379
429
  getFixedItemSize: getFixedItemSize,
380
430
  keyExtractor: item => String(item.clientMsgID || item.serverMsgID),
381
431
  recycleItems: false,
382
- extraData: `${conversationFlow?.flowCurrentStep?.id ?? ''}-${lastMessageId ?? ''}-${highlightedId ?? ''}`,
432
+ extraData: listExtraData,
383
433
  alignItemsAtEnd: true,
384
434
  maintainVisibleContentPosition: maintainVisiblePositionConfig,
385
435
  freeze: freeze,