@droppii-org/chat-mobile 0.2.39 → 0.2.40
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/screens/chat-detail/PinnedMessageBar.js +4 -1
- package/lib/module/screens/chat-detail/PinnedMessageBar.js.map +1 -1
- package/lib/module/screens/chat-detail/PinnedMessagesSheet.js +80 -110
- package/lib/module/screens/chat-detail/PinnedMessagesSheet.js.map +1 -1
- package/lib/module/screens/chat-detail/PinnedMessagesSheetBackup.js +179 -0
- package/lib/module/screens/chat-detail/PinnedMessagesSheetBackup.js.map +1 -0
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +18 -6
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
- package/lib/module/translation/resources/i18n.js +3 -2
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/utils/UIUtils.js +4 -2
- package/lib/module/utils/UIUtils.js.map +1 -1
- package/lib/typescript/src/screens/chat-detail/PinnedMessageBar.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/PinnedMessageBar.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/PinnedMessagesSheet.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/PinnedMessagesSheet.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/PinnedMessagesSheetBackup.d.ts +9 -0
- package/lib/typescript/src/screens/chat-detail/PinnedMessagesSheetBackup.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +2 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/types/chat.d.ts +1 -0
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/utils/UIUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/screens/chat-detail/PinnedMessageBar.tsx +17 -8
- package/src/screens/chat-detail/PinnedMessagesSheet.tsx +118 -153
- package/src/screens/chat-detail/PinnedMessagesSheetBackup.tsx +253 -0
- package/src/screens/chat-detail/legend/LegendChatMessage.tsx +26 -13
- package/src/translation/resources/i18n.ts +4 -2
- package/src/types/chat.ts +1 -1
- package/src/utils/UIUtils.ts +3 -1
|
@@ -5,7 +5,9 @@ import { StyleSheet } from 'react-native';
|
|
|
5
5
|
import { KContainer, KImage, KLabel, KColors, KSpacingValue, KBadge } from '@droppii/libs';
|
|
6
6
|
import { trans } from "../../translation/index.js";
|
|
7
7
|
import { getMessagePreviewParts, getPinnedMessagePreview } from "../../utils/messageUtils.js";
|
|
8
|
+
import { MessageType } from '@droppii/openim-rn-client-sdk';
|
|
8
9
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
const HIDDEN_PREVIEW_TEXT_TYPES = new Set([MessageType.PictureMessage, MessageType.VideoMessage, MessageType.MergeMessage]);
|
|
9
11
|
const PinnedMessageThumbnail = /*#__PURE__*/memo(({
|
|
10
12
|
message
|
|
11
13
|
}) => {
|
|
@@ -64,6 +66,7 @@ export const PinnedMessageBar = /*#__PURE__*/memo(({
|
|
|
64
66
|
subtitleKey
|
|
65
67
|
} = getPinnedMessagePreview(latest);
|
|
66
68
|
const messagePreview = getMessagePreviewParts(latest);
|
|
69
|
+
const hidePreviewText = HIDDEN_PREVIEW_TEXT_TYPES.has(latest.contentType);
|
|
67
70
|
return /*#__PURE__*/_jsxs(KContainer.Touchable, {
|
|
68
71
|
activeOpacity: 0.7,
|
|
69
72
|
onPress: onPress,
|
|
@@ -77,7 +80,7 @@ export const PinnedMessageBar = /*#__PURE__*/memo(({
|
|
|
77
80
|
paddingR: "0.75rem",
|
|
78
81
|
children: [/*#__PURE__*/_jsxs(KContainer.View, {
|
|
79
82
|
style: styles.content,
|
|
80
|
-
children: [/*#__PURE__*/_jsx(KLabel.Text, {
|
|
83
|
+
children: [!hidePreviewText && /*#__PURE__*/_jsx(KLabel.Text, {
|
|
81
84
|
typo: "TextNmMedium",
|
|
82
85
|
numberOfLines: 1,
|
|
83
86
|
...messagePreview.textProps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","useMemo","StyleSheet","KContainer","KImage","KLabel","KColors","KSpacingValue","KBadge","trans","getMessagePreviewParts","getPinnedMessagePreview","jsx","_jsx","jsxs","_jsxs","PinnedMessageThumbnail","message","preview","mediaType","thumbnailUrl","Base","uri","style","styles","thumbnail","resizeMode","View","children","videoOverlay","center","VectorIcons","name","provider","size","color","white","fileIcon","marginL","displayName","PinnedMessageBar","messages","currentUserId","onPress","length","latest","sender","sendID","senderNickname","remainingCount","subtitleKey","messagePreview","Touchable","activeOpacity","container","row","alignItems","flex","paddingR","content","Text","typo","numberOfLines","textProps","text","primary","normal","gray","light","BaseV2","badge","skipConvertBadge","badgeSize","width","height","wrapperLabelTextStyle","paddingHorizontal","create","flexDirection","backgroundColor","palette","w25","paddingRight","paddingLeft","paddingVertical","overflow","position","top","left","right","bottom","minWidth","borderRadius","justifyContent","marginRight"],"sourceRoot":"../../../../src","sources":["screens/chat-detail/PinnedMessageBar.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,OAAO,QAAQ,OAAO;AACrC,SAASC,UAAU,QAAQ,cAAc;AACzC,SACEC,UAAU,EACVC,MAAM,EACNC,MAAM,EACNC,OAAO,EACPC,aAAa,EACbC,MAAM,QACD,eAAe;AACtB,SAASC,KAAK,QAAQ,4BAAmB;AACzC,SACEC,sBAAsB,EACtBC,uBAAuB,QAClB,6BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;
|
|
1
|
+
{"version":3,"names":["memo","useMemo","StyleSheet","KContainer","KImage","KLabel","KColors","KSpacingValue","KBadge","trans","getMessagePreviewParts","getPinnedMessagePreview","MessageType","jsx","_jsx","jsxs","_jsxs","HIDDEN_PREVIEW_TEXT_TYPES","Set","PictureMessage","VideoMessage","MergeMessage","PinnedMessageThumbnail","message","preview","mediaType","thumbnailUrl","Base","uri","style","styles","thumbnail","resizeMode","View","children","videoOverlay","center","VectorIcons","name","provider","size","color","white","fileIcon","marginL","displayName","PinnedMessageBar","messages","currentUserId","onPress","length","latest","sender","sendID","senderNickname","remainingCount","subtitleKey","messagePreview","hidePreviewText","has","contentType","Touchable","activeOpacity","container","row","alignItems","flex","paddingR","content","Text","typo","numberOfLines","textProps","text","primary","normal","gray","light","BaseV2","badge","skipConvertBadge","badgeSize","width","height","wrapperLabelTextStyle","paddingHorizontal","create","flexDirection","backgroundColor","palette","w25","paddingRight","paddingLeft","paddingVertical","overflow","position","top","left","right","bottom","minWidth","borderRadius","justifyContent","marginRight"],"sourceRoot":"../../../../src","sources":["screens/chat-detail/PinnedMessageBar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,110 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { memo, useCallback } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import { MessageType } from '@droppii/openim-rn-client-sdk';
|
|
6
|
+
import { KContainer, KLabel, KColors, KImage, KSpacingValue } from '@droppii/libs';
|
|
6
7
|
import { UIUtils } from "../../utils/UIUtils.js";
|
|
7
8
|
import { trans } from "../../translation/index.js";
|
|
8
9
|
import { usePinnedMessageStore } from "../../store/pinnedMessage.js";
|
|
9
10
|
import { LegendChatMessage } from "./legend/LegendChatMessage.js";
|
|
10
|
-
import { formatMessageTime
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
import { formatMessageTime } from "./legend/messageTypes.js";
|
|
12
|
+
|
|
13
|
+
// Text/quote/link bubbles already render their own timestamp for incoming
|
|
14
|
+
// messages (see textMessage, quotedMessage, linkMessage) — skip the external
|
|
15
|
+
// label for those to avoid showing the time twice.
|
|
13
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
-
|
|
15
|
-
// menu) but restricted to the 2 actions relevant to an already-pinned
|
|
16
|
-
// message: unpin and jump to the original message.
|
|
17
|
-
const PinnedMessageToolboxOverlay = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(({
|
|
18
|
-
currentUserId,
|
|
19
|
-
unpinMessage,
|
|
20
|
-
customMessageItemFactory
|
|
21
|
-
}, ref) => {
|
|
22
|
-
const [visible, setVisible] = useState(false);
|
|
23
|
-
const [message, setMessage] = useState(undefined);
|
|
24
|
-
const [rect, setRect] = useState(null);
|
|
25
|
-
const hide = useCallback(() => {
|
|
26
|
-
setVisible(false);
|
|
27
|
-
setMessage(undefined);
|
|
28
|
-
setRect(null);
|
|
29
|
-
}, []);
|
|
30
|
-
const show = useCallback((msg, msgRect) => {
|
|
31
|
-
setMessage(msg);
|
|
32
|
-
setRect(msgRect);
|
|
33
|
-
setVisible(true);
|
|
34
|
-
}, []);
|
|
35
|
-
useImperativeHandle(ref, () => ({
|
|
36
|
-
show,
|
|
37
|
-
hide
|
|
38
|
-
}), [show, hide]);
|
|
39
|
-
const handleUnpinMessage = useCallback(() => {
|
|
40
|
-
if (!message) return;
|
|
41
|
-
hide();
|
|
42
|
-
unpinMessage(message);
|
|
43
|
-
}, [message, hide, unpinMessage]);
|
|
44
|
-
const handleViewOriginalMessage = useCallback(() => {
|
|
45
|
-
if (!message) return;
|
|
46
|
-
hide();
|
|
47
|
-
// TODO: implement navigating to / highlighting the original message
|
|
48
|
-
}, [message, hide]);
|
|
49
|
-
if (!visible || !message || !rect) {
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
const isOutgoing = message.sendID === currentUserId;
|
|
53
|
-
return /*#__PURE__*/_jsxs(Modal, {
|
|
54
|
-
visible: visible,
|
|
55
|
-
transparent: true,
|
|
56
|
-
statusBarTranslucent: true,
|
|
57
|
-
animationType: "fade",
|
|
58
|
-
onRequestClose: hide,
|
|
59
|
-
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
60
|
-
style: styles.backdrop,
|
|
61
|
-
onPress: hide
|
|
62
|
-
}), /*#__PURE__*/_jsx(MessageToolboxWrapper, {
|
|
63
|
-
rect: rect,
|
|
64
|
-
isOutgoing: isOutgoing,
|
|
65
|
-
message: /*#__PURE__*/_jsx(LegendChatMessage, {
|
|
66
|
-
message: message,
|
|
67
|
-
isOutgoing: isOutgoing,
|
|
68
|
-
createdAtTime: message.sendTime || message.createTime,
|
|
69
|
-
customMessageItemFactory: customMessageItemFactory
|
|
70
|
-
}),
|
|
71
|
-
toolbox: /*#__PURE__*/_jsx(MessageToolboxMenu, {
|
|
72
|
-
showUnpinMessage: true,
|
|
73
|
-
showViewOriginalMessage: true,
|
|
74
|
-
onUnpinMessage: handleUnpinMessage,
|
|
75
|
-
onViewOriginalMessage: handleViewOriginalMessage
|
|
76
|
-
})
|
|
77
|
-
})]
|
|
78
|
-
});
|
|
79
|
-
}));
|
|
80
|
-
PinnedMessageToolboxOverlay.displayName = 'PinnedMessageToolboxOverlay';
|
|
81
|
-
const styles = StyleSheet.create({
|
|
82
|
-
backdrop: {
|
|
83
|
-
position: 'absolute',
|
|
84
|
-
top: 0,
|
|
85
|
-
left: 0,
|
|
86
|
-
right: 0,
|
|
87
|
-
bottom: 0,
|
|
88
|
-
backgroundColor: 'rgba(0,0,0,0.75)'
|
|
89
|
-
}
|
|
90
|
-
});
|
|
17
|
+
const SELF_RENDERS_TIME_FOR_INCOMING = new Set([MessageType.TextMessage, MessageType.AtTextMessage, MessageType.QuoteMessage, MessageType.UrlTextMessage]);
|
|
91
18
|
const PinnedMessagesSheetContent = /*#__PURE__*/memo(({
|
|
92
19
|
currentUserId,
|
|
93
20
|
unpinMessage,
|
|
94
21
|
customMessageItemFactory
|
|
95
22
|
}) => {
|
|
96
23
|
const messages = usePinnedMessageStore(state => state.messages);
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
24
|
+
const handleUnpinMessage = useCallback(async message => {
|
|
25
|
+
await unpinMessage(message);
|
|
26
|
+
if (usePinnedMessageStore.getState().messages.length === 0) {
|
|
27
|
+
UIUtils.bottomSheet.dismiss();
|
|
28
|
+
}
|
|
29
|
+
}, [unpinMessage]);
|
|
30
|
+
const handlePressMessage = useCallback(() => {
|
|
31
|
+
UIUtils.bottomSheet.dismiss();
|
|
32
|
+
UIUtils.alert.open({
|
|
33
|
+
title: trans('chat:view_original_message'),
|
|
34
|
+
message: trans('chat:scroll_to_message_todo')
|
|
108
35
|
});
|
|
109
36
|
}, []);
|
|
110
37
|
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
@@ -119,18 +46,34 @@ const PinnedMessagesSheetContent = /*#__PURE__*/memo(({
|
|
|
119
46
|
const isOutgoing = message.sendID === currentUserId;
|
|
120
47
|
const messageId = message.clientMsgID || message.serverMsgID;
|
|
121
48
|
const createdAtTime = message.sendTime || message.createTime;
|
|
122
|
-
const
|
|
49
|
+
const hasInternalTimeLabel = !isOutgoing && SELF_RENDERS_TIME_FOR_INCOMING.has(message.contentType);
|
|
50
|
+
const timeLabel = hasInternalTimeLabel ? '' : formatMessageTime(createdAtTime);
|
|
51
|
+
const unpinButton = /*#__PURE__*/_jsx(KContainer.Touchable, {
|
|
52
|
+
center: true,
|
|
53
|
+
br: "round",
|
|
54
|
+
width: 28,
|
|
55
|
+
height: 28,
|
|
56
|
+
background: KColors.background,
|
|
57
|
+
style: isOutgoing ? styles.unpinButtonLeft : styles.unpinButtonRight,
|
|
58
|
+
onPress: () => handleUnpinMessage(message),
|
|
59
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
60
|
+
name: "thumbtack-off-o",
|
|
61
|
+
provider: "DroppiiNew",
|
|
62
|
+
size: 14,
|
|
63
|
+
color: KColors.gray.dark
|
|
64
|
+
})
|
|
65
|
+
});
|
|
123
66
|
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
67
|
+
style: isOutgoing ? styles.rowRight : styles.rowLeft,
|
|
68
|
+
children: [/*#__PURE__*/_jsxs(KContainer.View, {
|
|
69
|
+
style: [styles.messageRow, isOutgoing ? styles.messageRowRight : styles.messageRowLeft],
|
|
70
|
+
children: [isOutgoing && unpinButton, /*#__PURE__*/_jsx(LegendChatMessage, {
|
|
71
|
+
message: message,
|
|
72
|
+
isOutgoing: isOutgoing,
|
|
73
|
+
createdAtTime: createdAtTime,
|
|
74
|
+
onPress: handlePressMessage,
|
|
75
|
+
customMessageItemFactory: customMessageItemFactory
|
|
76
|
+
}), !isOutgoing && unpinButton]
|
|
134
77
|
}), !!timeLabel && /*#__PURE__*/_jsx(KLabel.Text, {
|
|
135
78
|
typo: "TextXsNormal",
|
|
136
79
|
color: KColors.gray.light,
|
|
@@ -138,15 +81,42 @@ const PinnedMessagesSheetContent = /*#__PURE__*/memo(({
|
|
|
138
81
|
children: timeLabel
|
|
139
82
|
})]
|
|
140
83
|
}, messageId);
|
|
141
|
-
}), /*#__PURE__*/_jsx(PinnedMessageToolboxOverlay, {
|
|
142
|
-
ref: toolboxRef,
|
|
143
|
-
currentUserId: currentUserId,
|
|
144
|
-
unpinMessage: unpinMessage,
|
|
145
|
-
customMessageItemFactory: customMessageItemFactory
|
|
146
84
|
})]
|
|
147
85
|
});
|
|
148
86
|
});
|
|
149
87
|
PinnedMessagesSheetContent.displayName = 'PinnedMessagesSheetContent';
|
|
88
|
+
const UNPIN_BUTTON_GAP = KSpacingValue['0.5rem'];
|
|
89
|
+
const styles = StyleSheet.create({
|
|
90
|
+
rowLeft: {
|
|
91
|
+
width: '100%',
|
|
92
|
+
paddingHorizontal: KSpacingValue['0.75rem'],
|
|
93
|
+
marginBottom: KSpacingValue['0.25rem'],
|
|
94
|
+
alignItems: 'flex-start'
|
|
95
|
+
},
|
|
96
|
+
rowRight: {
|
|
97
|
+
width: '100%',
|
|
98
|
+
paddingHorizontal: KSpacingValue['0.75rem'],
|
|
99
|
+
marginBottom: KSpacingValue['0.25rem'],
|
|
100
|
+
alignItems: 'flex-end'
|
|
101
|
+
},
|
|
102
|
+
messageRow: {
|
|
103
|
+
width: '100%',
|
|
104
|
+
flexDirection: 'row',
|
|
105
|
+
alignItems: 'center'
|
|
106
|
+
},
|
|
107
|
+
messageRowLeft: {
|
|
108
|
+
justifyContent: 'flex-start'
|
|
109
|
+
},
|
|
110
|
+
messageRowRight: {
|
|
111
|
+
justifyContent: 'flex-end'
|
|
112
|
+
},
|
|
113
|
+
unpinButtonLeft: {
|
|
114
|
+
marginRight: UNPIN_BUTTON_GAP
|
|
115
|
+
},
|
|
116
|
+
unpinButtonRight: {
|
|
117
|
+
marginLeft: UNPIN_BUTTON_GAP
|
|
118
|
+
}
|
|
119
|
+
});
|
|
150
120
|
export const openPinnedMessagesSheet = ({
|
|
151
121
|
currentUserId,
|
|
152
122
|
unpinMessage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["memo","useCallback","StyleSheet","MessageType","KContainer","KLabel","KColors","KImage","KSpacingValue","UIUtils","trans","usePinnedMessageStore","LegendChatMessage","formatMessageTime","jsx","_jsx","jsxs","_jsxs","SELF_RENDERS_TIME_FOR_INCOMING","Set","TextMessage","AtTextMessage","QuoteMessage","UrlTextMessage","PinnedMessagesSheetContent","currentUserId","unpinMessage","customMessageItemFactory","messages","state","handleUnpinMessage","message","getState","length","bottomSheet","dismiss","handlePressMessage","alert","open","title","View","paddingV","children","Text","typo","color","gray","normal","paddingH","marginB","map","isOutgoing","sendID","messageId","clientMsgID","serverMsgID","createdAtTime","sendTime","createTime","hasInternalTimeLabel","has","contentType","timeLabel","unpinButton","Touchable","center","br","width","height","background","style","styles","unpinButtonLeft","unpinButtonRight","onPress","VectorIcons","name","provider","size","dark","rowRight","rowLeft","messageRow","messageRowRight","messageRowLeft","light","marginT","displayName","UNPIN_BUTTON_GAP","create","paddingHorizontal","marginBottom","alignItems","flexDirection","justifyContent","marginRight","marginLeft","openPinnedMessagesSheet","header","text","alignment","showCloseButton","touchOutsideToDismiss","body","renderContent"],"sourceRoot":"../../../../src","sources":["screens/chat-detail/PinnedMessagesSheet.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, memo, useCallback, useImperativeHandle, useRef, useState } from 'react';
|
|
4
|
+
import { Modal, Pressable, StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KLabel, KColors } from '@droppii/libs';
|
|
6
|
+
import { UIUtils } from "../../utils/UIUtils.js";
|
|
7
|
+
import { trans } from "../../translation/index.js";
|
|
8
|
+
import { usePinnedMessageStore } from "../../store/pinnedMessage.js";
|
|
9
|
+
import { LegendChatMessage } from "./legend/LegendChatMessage.js";
|
|
10
|
+
import { formatMessageTime, messageStyles } from "./legend/messageTypes.js";
|
|
11
|
+
import { MessageToolboxWrapper } from "./messageToolbox/MessageToolboxWrapper.js";
|
|
12
|
+
import { MessageToolboxMenu } from "./messageToolbox/MessageToolboxMenu.js";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
// Mirrors MessageToolboxOverlay (used for the main chat list's long-press
|
|
15
|
+
// menu) but restricted to the 2 actions relevant to an already-pinned
|
|
16
|
+
// message: unpin and jump to the original message.
|
|
17
|
+
const PinnedMessageToolboxOverlay = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(({
|
|
18
|
+
currentUserId,
|
|
19
|
+
unpinMessage,
|
|
20
|
+
customMessageItemFactory
|
|
21
|
+
}, ref) => {
|
|
22
|
+
const [visible, setVisible] = useState(false);
|
|
23
|
+
const [message, setMessage] = useState(undefined);
|
|
24
|
+
const [rect, setRect] = useState(null);
|
|
25
|
+
const hide = useCallback(() => {
|
|
26
|
+
setVisible(false);
|
|
27
|
+
setMessage(undefined);
|
|
28
|
+
setRect(null);
|
|
29
|
+
}, []);
|
|
30
|
+
const show = useCallback((msg, msgRect) => {
|
|
31
|
+
setMessage(msg);
|
|
32
|
+
setRect(msgRect);
|
|
33
|
+
setVisible(true);
|
|
34
|
+
}, []);
|
|
35
|
+
useImperativeHandle(ref, () => ({
|
|
36
|
+
show,
|
|
37
|
+
hide
|
|
38
|
+
}), [show, hide]);
|
|
39
|
+
const handleUnpinMessage = useCallback(() => {
|
|
40
|
+
if (!message) return;
|
|
41
|
+
hide();
|
|
42
|
+
unpinMessage(message);
|
|
43
|
+
}, [message, hide, unpinMessage]);
|
|
44
|
+
const handleViewOriginalMessage = useCallback(() => {
|
|
45
|
+
if (!message) return;
|
|
46
|
+
hide();
|
|
47
|
+
// TODO: implement navigating to / highlighting the original message
|
|
48
|
+
}, [message, hide]);
|
|
49
|
+
if (!visible || !message || !rect) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const isOutgoing = message.sendID === currentUserId;
|
|
53
|
+
return /*#__PURE__*/_jsxs(Modal, {
|
|
54
|
+
visible: visible,
|
|
55
|
+
transparent: true,
|
|
56
|
+
statusBarTranslucent: true,
|
|
57
|
+
animationType: "fade",
|
|
58
|
+
onRequestClose: hide,
|
|
59
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
60
|
+
style: styles.backdrop,
|
|
61
|
+
onPress: hide
|
|
62
|
+
}), /*#__PURE__*/_jsx(MessageToolboxWrapper, {
|
|
63
|
+
rect: rect,
|
|
64
|
+
isOutgoing: isOutgoing,
|
|
65
|
+
message: /*#__PURE__*/_jsx(LegendChatMessage, {
|
|
66
|
+
message: message,
|
|
67
|
+
isOutgoing: isOutgoing,
|
|
68
|
+
createdAtTime: message.sendTime || message.createTime,
|
|
69
|
+
customMessageItemFactory: customMessageItemFactory
|
|
70
|
+
}),
|
|
71
|
+
toolbox: /*#__PURE__*/_jsx(MessageToolboxMenu, {
|
|
72
|
+
showUnpinMessage: true,
|
|
73
|
+
showViewOriginalMessage: true,
|
|
74
|
+
onUnpinMessage: handleUnpinMessage,
|
|
75
|
+
onViewOriginalMessage: handleViewOriginalMessage
|
|
76
|
+
})
|
|
77
|
+
})]
|
|
78
|
+
});
|
|
79
|
+
}));
|
|
80
|
+
PinnedMessageToolboxOverlay.displayName = 'PinnedMessageToolboxOverlay';
|
|
81
|
+
const styles = StyleSheet.create({
|
|
82
|
+
backdrop: {
|
|
83
|
+
position: 'absolute',
|
|
84
|
+
top: 0,
|
|
85
|
+
left: 0,
|
|
86
|
+
right: 0,
|
|
87
|
+
bottom: 0,
|
|
88
|
+
backgroundColor: 'rgba(0,0,0,0.75)'
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
const PinnedMessagesSheetContent = /*#__PURE__*/memo(({
|
|
92
|
+
currentUserId,
|
|
93
|
+
unpinMessage,
|
|
94
|
+
customMessageItemFactory
|
|
95
|
+
}) => {
|
|
96
|
+
const messages = usePinnedMessageStore(state => state.messages);
|
|
97
|
+
const toolboxRef = useRef(null);
|
|
98
|
+
const rowRefsMap = useRef(new Map());
|
|
99
|
+
const handleUnpinMessage = useCallback(async message => {
|
|
100
|
+
await unpinMessage(message);
|
|
101
|
+
if (usePinnedMessageStore.getState().messages.length === 0) {
|
|
102
|
+
UIUtils.bottomSheet.dismiss();
|
|
103
|
+
}
|
|
104
|
+
}, [unpinMessage]);
|
|
105
|
+
const handleLongPress = useCallback((messageId, message) => {
|
|
106
|
+
const node = rowRefsMap.current.get(messageId);
|
|
107
|
+
node?.measureInWindow((x, y, width, height) => {
|
|
108
|
+
toolboxRef.current?.show(message, {
|
|
109
|
+
x,
|
|
110
|
+
y,
|
|
111
|
+
width,
|
|
112
|
+
height
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}, []);
|
|
116
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
117
|
+
paddingV: "0.5rem",
|
|
118
|
+
children: [/*#__PURE__*/_jsx(KLabel.Text, {
|
|
119
|
+
typo: "TextNmNormal",
|
|
120
|
+
color: KColors.gray.normal,
|
|
121
|
+
paddingH: "0.75rem",
|
|
122
|
+
marginB: "0.75rem",
|
|
123
|
+
children: trans('chat:pinned_messages_hint')
|
|
124
|
+
}), messages.map(message => {
|
|
125
|
+
const isOutgoing = message.sendID === currentUserId;
|
|
126
|
+
const messageId = message.clientMsgID || message.serverMsgID;
|
|
127
|
+
const createdAtTime = message.sendTime || message.createTime;
|
|
128
|
+
const timeLabel = formatMessageTime(createdAtTime);
|
|
129
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
130
|
+
ref: node => {
|
|
131
|
+
if (node) rowRefsMap.current.set(messageId, node);else rowRefsMap.current.delete(messageId);
|
|
132
|
+
},
|
|
133
|
+
style: isOutgoing ? messageStyles.messageRowRight : messageStyles.messageRowLeft,
|
|
134
|
+
children: [/*#__PURE__*/_jsx(LegendChatMessage, {
|
|
135
|
+
message: message,
|
|
136
|
+
isOutgoing: isOutgoing,
|
|
137
|
+
createdAtTime: createdAtTime,
|
|
138
|
+
onLongPress: () => handleLongPress(messageId, message),
|
|
139
|
+
customMessageItemFactory: customMessageItemFactory
|
|
140
|
+
}), !!timeLabel && /*#__PURE__*/_jsx(KLabel.Text, {
|
|
141
|
+
typo: "TextXsNormal",
|
|
142
|
+
color: KColors.gray.light,
|
|
143
|
+
marginT: "0.25rem",
|
|
144
|
+
children: timeLabel
|
|
145
|
+
})]
|
|
146
|
+
}, messageId);
|
|
147
|
+
}), /*#__PURE__*/_jsx(PinnedMessageToolboxOverlay, {
|
|
148
|
+
ref: toolboxRef,
|
|
149
|
+
currentUserId: currentUserId,
|
|
150
|
+
unpinMessage: handleUnpinMessage,
|
|
151
|
+
customMessageItemFactory: customMessageItemFactory
|
|
152
|
+
})]
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
PinnedMessagesSheetContent.displayName = 'PinnedMessagesSheetContent';
|
|
156
|
+
export const openPinnedMessagesSheet = ({
|
|
157
|
+
currentUserId,
|
|
158
|
+
unpinMessage,
|
|
159
|
+
customMessageItemFactory
|
|
160
|
+
}) => {
|
|
161
|
+
UIUtils.bottomSheet.open({
|
|
162
|
+
header: {
|
|
163
|
+
title: {
|
|
164
|
+
text: trans('chat:pinned_messages_title')
|
|
165
|
+
},
|
|
166
|
+
alignment: 'left',
|
|
167
|
+
showCloseButton: true
|
|
168
|
+
},
|
|
169
|
+
touchOutsideToDismiss: true,
|
|
170
|
+
body: {
|
|
171
|
+
renderContent: () => /*#__PURE__*/_jsx(PinnedMessagesSheetContent, {
|
|
172
|
+
currentUserId: currentUserId,
|
|
173
|
+
unpinMessage: unpinMessage,
|
|
174
|
+
customMessageItemFactory: customMessageItemFactory
|
|
175
|
+
})
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=PinnedMessagesSheetBackup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","memo","useCallback","useImperativeHandle","useRef","useState","Modal","Pressable","StyleSheet","KContainer","KLabel","KColors","UIUtils","trans","usePinnedMessageStore","LegendChatMessage","formatMessageTime","messageStyles","MessageToolboxWrapper","MessageToolboxMenu","jsx","_jsx","jsxs","_jsxs","PinnedMessageToolboxOverlay","currentUserId","unpinMessage","customMessageItemFactory","ref","visible","setVisible","message","setMessage","undefined","rect","setRect","hide","show","msg","msgRect","handleUnpinMessage","handleViewOriginalMessage","isOutgoing","sendID","transparent","statusBarTranslucent","animationType","onRequestClose","children","style","styles","backdrop","onPress","createdAtTime","sendTime","createTime","toolbox","showUnpinMessage","showViewOriginalMessage","onUnpinMessage","onViewOriginalMessage","displayName","create","position","top","left","right","bottom","backgroundColor","PinnedMessagesSheetContent","messages","state","toolboxRef","rowRefsMap","Map","getState","length","bottomSheet","dismiss","handleLongPress","messageId","node","current","get","measureInWindow","x","y","width","height","View","paddingV","Text","typo","color","gray","normal","paddingH","marginB","map","clientMsgID","serverMsgID","timeLabel","set","delete","messageRowRight","messageRowLeft","onLongPress","light","marginT","openPinnedMessagesSheet","open","header","title","text","alignment","showCloseButton","touchOutsideToDismiss","body","renderContent"],"sourceRoot":"../../../../src","sources":["screens/chat-detail/PinnedMessagesSheetBackup.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -39,6 +39,7 @@ export const LegendChatMessage = /*#__PURE__*/memo(({
|
|
|
39
39
|
onMediaPress,
|
|
40
40
|
onPressUrl,
|
|
41
41
|
onRetry,
|
|
42
|
+
onPress,
|
|
42
43
|
onLongPress,
|
|
43
44
|
customMessageItemFactory
|
|
44
45
|
}) => {
|
|
@@ -60,6 +61,7 @@ export const LegendChatMessage = /*#__PURE__*/memo(({
|
|
|
60
61
|
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
61
62
|
style: styles.content,
|
|
62
63
|
children: [/*#__PURE__*/_jsx(LongPressWrapper, {
|
|
64
|
+
onPress: onPress,
|
|
63
65
|
onLongPress: onLongPress,
|
|
64
66
|
children: /*#__PURE__*/_jsx(MessageComponent, {
|
|
65
67
|
message: message,
|
|
@@ -103,21 +105,31 @@ const styles = StyleSheet.create({
|
|
|
103
105
|
shadowRadius: 2,
|
|
104
106
|
elevation: 3,
|
|
105
107
|
borderWidth: 1,
|
|
106
|
-
borderColor: KColors.white
|
|
108
|
+
borderColor: KColors.white,
|
|
109
|
+
zIndex: Number.MAX_SAFE_INTEGER
|
|
107
110
|
}
|
|
108
111
|
});
|
|
109
112
|
const LongPressWrapper = ({
|
|
110
113
|
children,
|
|
114
|
+
onPress,
|
|
111
115
|
onLongPress
|
|
112
116
|
}) => {
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
const gesture = useMemo(() => {
|
|
118
|
+
const gestures = [onLongPress && Gesture.LongPress().onStart(() => {
|
|
119
|
+
runOnJS(onLongPress)();
|
|
120
|
+
}), onPress && Gesture.Tap().onStart(() => {
|
|
121
|
+
runOnJS(onPress)();
|
|
122
|
+
})].filter(Boolean);
|
|
123
|
+
if (!gestures.length) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
return gestures.length > 1 ? Gesture.Race(...gestures) : gestures[0];
|
|
127
|
+
}, [onPress, onLongPress]);
|
|
128
|
+
if (!gesture) {
|
|
117
129
|
return children;
|
|
118
130
|
}
|
|
119
131
|
return /*#__PURE__*/_jsx(GestureDetector, {
|
|
120
|
-
gesture:
|
|
132
|
+
gesture: gesture,
|
|
121
133
|
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
122
134
|
children: children
|
|
123
135
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["KContainer","KImage","KColors","StyleSheet","memo","useMemo","MessageType","Gesture","GestureDetector","runOnJS","TextMessage","ImageMessage","VideoMessage","FileMessage","LinkMessage","MergedMessage","RevokedMessage","MessageStatusIndicator","messageStyles","QuotedMessage","jsx","_jsx","jsxs","_jsxs","MERGED_MESSAGE_TYPE","messageComponentMap","AtTextMessage","QuoteMessage","UrlTextMessage","PictureMessage","RevokeMessage","MEDIA_TYPES","LegendChatMessage","message","isOutgoing","createdAtTime","onMediaPress","onPressUrl","onRetry","onLongPress","customMessageItemFactory","customNode","MessageComponent","contentType","hasMediaPress","includes","hasUrlPress","View","style","wrapper","row","alignItems","children","styles","content","LongPressWrapper","undefined","isPinned","pinBadge","VectorIcons","name","size","color","primary","normal","displayName","create","position","top","right","width","height","borderRadius","justifyContent","backgroundColor","pageBackground","shadowColor","black","shadowOffset","shadowOpacity","shadowRadius","elevation","borderWidth","borderColor","white","
|
|
1
|
+
{"version":3,"names":["KContainer","KImage","KColors","StyleSheet","memo","useMemo","MessageType","Gesture","GestureDetector","runOnJS","TextMessage","ImageMessage","VideoMessage","FileMessage","LinkMessage","MergedMessage","RevokedMessage","MessageStatusIndicator","messageStyles","QuotedMessage","jsx","_jsx","jsxs","_jsxs","MERGED_MESSAGE_TYPE","messageComponentMap","AtTextMessage","QuoteMessage","UrlTextMessage","PictureMessage","RevokeMessage","MEDIA_TYPES","LegendChatMessage","message","isOutgoing","createdAtTime","onMediaPress","onPressUrl","onRetry","onPress","onLongPress","customMessageItemFactory","customNode","MessageComponent","contentType","hasMediaPress","includes","hasUrlPress","View","style","wrapper","row","alignItems","children","styles","content","LongPressWrapper","undefined","isPinned","pinBadge","VectorIcons","name","size","color","primary","normal","displayName","create","position","top","right","width","height","borderRadius","justifyContent","backgroundColor","pageBackground","shadowColor","black","shadowOffset","shadowOpacity","shadowRadius","elevation","borderWidth","borderColor","white","zIndex","Number","MAX_SAFE_INTEGER","gesture","gestures","LongPress","onStart","Tap","filter","Boolean","length","Race"],"sourceRoot":"../../../../../src","sources":["screens/chat-detail/legend/LegendChatMessage.tsx"],"mappings":"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","ignoreList":[]}
|