@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.
- package/lib/module/components/messages/BubbleTail.js +31 -0
- package/lib/module/components/messages/BubbleTail.js.map +1 -0
- package/lib/module/components/messages/BubbleTailRow.js +46 -0
- package/lib/module/components/messages/BubbleTailRow.js.map +1 -0
- package/lib/module/components/messages/bubbleTail.utils.js +19 -0
- package/lib/module/components/messages/bubbleTail.utils.js.map +1 -0
- package/lib/module/components/messages/fileMessage/index.js +72 -65
- package/lib/module/components/messages/fileMessage/index.js.map +1 -1
- package/lib/module/components/messages/imageMessage/index.js +23 -17
- package/lib/module/components/messages/imageMessage/index.js.map +1 -1
- package/lib/module/components/messages/linkMessage/index.js +11 -23
- package/lib/module/components/messages/linkMessage/index.js.map +1 -1
- package/lib/module/components/messages/mergedMessage/index.js +14 -7
- package/lib/module/components/messages/mergedMessage/index.js.map +1 -1
- package/lib/module/components/messages/quotedMessage/index.js +11 -23
- package/lib/module/components/messages/quotedMessage/index.js.map +1 -1
- package/lib/module/components/messages/revokedMessage/index.js +14 -7
- package/lib/module/components/messages/revokedMessage/index.js.map +1 -1
- package/lib/module/components/messages/stickerMessage/index.js +13 -7
- package/lib/module/components/messages/stickerMessage/index.js.map +1 -1
- package/lib/module/components/messages/textMessage/index.js +11 -26
- package/lib/module/components/messages/textMessage/index.js.map +1 -1
- package/lib/module/components/messages/types.js.map +1 -1
- package/lib/module/components/messages/videoMessage/index.js +16 -8
- package/lib/module/components/messages/videoMessage/index.js.map +1 -1
- package/lib/module/hooks/groups/useDismissGroup.js +2 -1
- package/lib/module/hooks/groups/useDismissGroup.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +71 -21
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/module/screens/chat-detail/legend/LegendChatDay.js +8 -2
- package/lib/module/screens/chat-detail/legend/LegendChatDay.js.map +1 -1
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +38 -13
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
- package/lib/module/utils/legendListMessage.js +86 -12
- package/lib/module/utils/legendListMessage.js.map +1 -1
- package/lib/module/utils/message.js +19 -1
- package/lib/module/utils/message.js.map +1 -1
- package/lib/module/utils/messageUtils.js +6 -0
- package/lib/module/utils/messageUtils.js.map +1 -1
- package/lib/typescript/src/components/messages/BubbleTail.d.ts +13 -0
- package/lib/typescript/src/components/messages/BubbleTail.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/BubbleTailRow.d.ts +25 -0
- package/lib/typescript/src/components/messages/BubbleTailRow.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/bubbleTail.utils.d.ts +11 -0
- package/lib/typescript/src/components/messages/bubbleTail.utils.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/fileMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/messages/fileMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/imageMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/messages/imageMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/linkMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/mergedMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/messages/mergedMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/quotedMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/revokedMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/messages/revokedMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/stickerMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/messages/stickerMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/textMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/types.d.ts +3 -0
- package/lib/typescript/src/components/messages/types.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/videoMessage/index.d.ts +1 -1
- package/lib/typescript/src/components/messages/videoMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/groups/useDismissGroup.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatDay.d.ts +6 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatDay.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +14 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
- package/lib/typescript/src/utils/legendListMessage.d.ts +19 -4
- package/lib/typescript/src/utils/legendListMessage.d.ts.map +1 -1
- package/lib/typescript/src/utils/message.d.ts +17 -0
- package/lib/typescript/src/utils/message.d.ts.map +1 -1
- package/lib/typescript/src/utils/messageUtils.d.ts +1 -0
- package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/messages/BubbleTail.tsx +35 -0
- package/src/components/messages/BubbleTailRow.tsx +64 -0
- package/src/components/messages/bubbleTail.utils.ts +21 -0
- package/src/components/messages/fileMessage/index.tsx +90 -83
- package/src/components/messages/imageMessage/index.tsx +26 -23
- package/src/components/messages/linkMessage/index.tsx +6 -18
- package/src/components/messages/mergedMessage/index.tsx +27 -15
- package/src/components/messages/quotedMessage/index.tsx +7 -19
- package/src/components/messages/revokedMessage/index.tsx +23 -14
- package/src/components/messages/stickerMessage/index.tsx +16 -11
- package/src/components/messages/textMessage/index.tsx +6 -22
- package/src/components/messages/types.ts +3 -0
- package/src/components/messages/videoMessage/index.tsx +13 -10
- package/src/hooks/groups/useDismissGroup.tsx +1 -0
- package/src/screens/chat-detail/ChatListLegend.tsx +97 -28
- package/src/screens/chat-detail/legend/LegendChatDay.tsx +25 -15
- package/src/screens/chat-detail/legend/LegendChatMessage.tsx +62 -12
- package/src/utils/legendListMessage.ts +123 -14
- package/src/utils/message.ts +19 -1
- 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 {
|
|
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
|
|
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
|
-
|
|
21
|
-
|
|
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__*/
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
})
|
|
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","
|
|
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(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
children:
|
|
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","
|
|
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(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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","
|
|
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 {
|
|
9
|
-
import {
|
|
10
|
-
import { jsx as _jsx
|
|
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
|
-
|
|
15
|
-
|
|
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__*/
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
})
|
|
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","
|
|
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":";;
|
|
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 {
|
|
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(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
children:
|
|
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(
|
|
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","
|
|
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":"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","ignoreList":[]}
|
|
@@ -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;
|
|
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
|
-
//
|
|
30
|
-
//
|
|
31
|
-
//
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
213
|
-
|
|
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 +
|
|
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 +
|
|
262
|
+
candidateSize = ChatImageDimens.getDimensions(CHAT_IMAGE_VIEW_SOURCE.MessageListThumbnail).height + rowMargin;
|
|
227
263
|
break;
|
|
228
264
|
case MessageType.StickerMessage:
|
|
229
|
-
candidateSize = STICKER_SIZE +
|
|
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:
|
|
432
|
+
extraData: listExtraData,
|
|
383
433
|
alignItemsAtEnd: true,
|
|
384
434
|
maintainVisibleContentPosition: maintainVisiblePositionConfig,
|
|
385
435
|
freeze: freeze,
|