@droppii-org/chat-mobile 0.2.32 → 0.2.33
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/core/useChatListener.js +16 -1
- package/lib/module/core/useChatListener.js.map +1 -1
- package/lib/module/hooks/message/usePinMessage.js +133 -0
- package/lib/module/hooks/message/usePinMessage.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatDetail.js +13 -1
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
- package/lib/module/screens/chat-detail/PinnedMessageBar.js +158 -0
- package/lib/module/screens/chat-detail/PinnedMessageBar.js.map +1 -0
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +47 -10
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxMenu.js +16 -0
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxMenu.js.map +1 -1
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxOverlay.js +15 -1
- package/lib/module/screens/chat-detail/messageToolbox/MessageToolboxOverlay.js.map +1 -1
- package/lib/module/screens/chat-detail/messageToolbox/messageToolbox.utils.js +16 -1
- package/lib/module/screens/chat-detail/messageToolbox/messageToolbox.utils.js.map +1 -1
- package/lib/module/store/pinnedMessage.js +34 -0
- package/lib/module/store/pinnedMessage.js.map +1 -0
- package/lib/module/translation/resources/i18n.js +12 -0
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/types/chat.js.map +1 -1
- package/lib/module/utils/messageUtils.js +76 -0
- package/lib/module/utils/messageUtils.js.map +1 -1
- package/lib/typescript/src/core/useChatListener.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/usePinMessage.d.ts +9 -0
- package/lib/typescript/src/hooks/message/usePinMessage.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/PinnedMessageBar.d.ts +8 -0
- package/lib/typescript/src/screens/chat-detail/PinnedMessageBar.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxMenu.d.ts +5 -1
- package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxMenu.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.d.ts +2 -0
- package/lib/typescript/src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/messageToolbox/messageToolbox.utils.d.ts +4 -0
- package/lib/typescript/src/screens/chat-detail/messageToolbox/messageToolbox.utils.d.ts.map +1 -1
- package/lib/typescript/src/store/pinnedMessage.d.ts +11 -0
- package/lib/typescript/src/store/pinnedMessage.d.ts.map +1 -0
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/types/chat.d.ts +4 -1
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/utils/messageUtils.d.ts +8 -0
- package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/core/useChatListener.ts +26 -0
- package/src/hooks/message/usePinMessage.ts +153 -0
- package/src/screens/chat-detail/ChatDetail.tsx +12 -0
- package/src/screens/chat-detail/PinnedMessageBar.tsx +177 -0
- package/src/screens/chat-detail/legend/LegendChatMessage.tsx +47 -10
- package/src/screens/chat-detail/messageToolbox/MessageToolboxMenu.tsx +24 -0
- package/src/screens/chat-detail/messageToolbox/MessageToolboxOverlay.tsx +142 -116
- package/src/screens/chat-detail/messageToolbox/messageToolbox.utils.ts +31 -0
- package/src/store/pinnedMessage.ts +38 -0
- package/src/translation/resources/i18n.ts +13 -0
- package/src/types/chat.ts +4 -1
- package/src/utils/messageUtils.ts +90 -0
|
@@ -9,6 +9,7 @@ import { getLastMessageText } from "../utils/messageUtils.js";
|
|
|
9
9
|
import { useChatContext } from "../context/index.js";
|
|
10
10
|
import isEmpty from 'lodash/isEmpty';
|
|
11
11
|
import { markMessageRevoked, useMessageStore } from "../store/message.js";
|
|
12
|
+
import { syncPinnedMessagesOnEvent } from "../hooks/message/usePinMessage.js";
|
|
12
13
|
export const useChatListener = () => {
|
|
13
14
|
const updateOneMessage = useMessageStore(state => state.updateOneMessage);
|
|
14
15
|
const currentUserId = useUserStore(s => s.user?.userID);
|
|
@@ -66,6 +67,18 @@ export const useChatListener = () => {
|
|
|
66
67
|
const onMessageRevoked = useCallback(revokedInfo => {
|
|
67
68
|
markMessageRevoked(revokedInfo.clientMsgID);
|
|
68
69
|
}, []);
|
|
70
|
+
const onMessagePinned = useCallback(messagePinned => {
|
|
71
|
+
const currentConversationId = useConversationStore.getState().currentConversationId;
|
|
72
|
+
if (messagePinned.conversationID === currentConversationId) {
|
|
73
|
+
updateOneMessage({
|
|
74
|
+
clientMsgID: messagePinned.clientMsgID,
|
|
75
|
+
isPinned: messagePinned.isPinned,
|
|
76
|
+
pinnedByUserID: messagePinned.isPinned ? messagePinned.operatorUserID : undefined,
|
|
77
|
+
pinnedTime: messagePinned.isPinned ? messagePinned.pinnedTime : undefined
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
syncPinnedMessagesOnEvent(messagePinned.conversationID);
|
|
81
|
+
}, [updateOneMessage]);
|
|
69
82
|
useEffect(() => {
|
|
70
83
|
// Conversation
|
|
71
84
|
OpenIMSDK.on(OpenIMEvent.OnConversationChanged, onConversationChanged);
|
|
@@ -79,6 +92,7 @@ export const useChatListener = () => {
|
|
|
79
92
|
// Message status
|
|
80
93
|
OpenIMSDK.on(OpenIMEvent.SendMessageProgress, onSendMessageProgress);
|
|
81
94
|
OpenIMSDK.on(OpenIMEvent.OnNewRecvMessageRevoked, onMessageRevoked);
|
|
95
|
+
OpenIMSDK.on(OpenIMEvent.OnRecvMessagePinned, onMessagePinned);
|
|
82
96
|
return () => {
|
|
83
97
|
// Conversation
|
|
84
98
|
OpenIMSDK.off(OpenIMEvent.OnConversationChanged, onConversationChanged);
|
|
@@ -92,7 +106,8 @@ export const useChatListener = () => {
|
|
|
92
106
|
OpenIMSDK.off(OpenIMEvent.SendMessageProgress, onSendMessageProgress);
|
|
93
107
|
// OpenIMSDK.off(OpenIMEvent.OnRecvNewMessages, onRecvNewMessages);
|
|
94
108
|
OpenIMSDK.off(OpenIMEvent.OnNewRecvMessageRevoked, onMessageRevoked);
|
|
109
|
+
OpenIMSDK.off(OpenIMEvent.OnRecvMessagePinned, onMessagePinned);
|
|
95
110
|
};
|
|
96
|
-
}, [onConversationChanged, onGroupMemberAdded, onGroupMemberDeleted, onMessageRevoked, onNewConversation, onSendMessageProgress]);
|
|
111
|
+
}, [onConversationChanged, onGroupMemberAdded, onGroupMemberDeleted, onMessagePinned, onMessageRevoked, onNewConversation, onSendMessageProgress]);
|
|
97
112
|
};
|
|
98
113
|
//# sourceMappingURL=useChatListener.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OpenIMSDK","MessageReceiveOptType","OpenIMEvent","useCallback","useEffect","useConversationStore","ToastFlashMessage","useUserStore","getLastMessageText","useChatContext","isEmpty","markMessageRevoked","useMessageStore","useChatListener","updateOneMessage","state","currentUserId","s","user","userID","onPressFlashMessage","isShowFLashMessage","onSendMessageProgress","progress","message","console","log","clientMsgID","status","onConversationChanged","conversations","getState","updateConversations","conversation","recvMsgOpt","NotNotify","latestMsg","JSON","parse","lastMessageText","show","key","conversationID","title","showName","body","onPress","hide","onNewConversation","onGroupMemberAdded","member","groupID","onGroupMemberDeleted","onMessageRevoked","revokedInfo","on","OnConversationChanged","OnNewConversation","OnGroupMemberAdded","OnGroupMemberDeleted","SendMessageProgress","OnNewRecvMessageRevoked","off"],"sourceRoot":"../../../src","sources":["core/useChatListener.ts"],"mappings":";;AAAA,OAAOA,SAAS,IACdC,qBAAqB,EACrBC,WAAW,
|
|
1
|
+
{"version":3,"names":["OpenIMSDK","MessageReceiveOptType","OpenIMEvent","useCallback","useEffect","useConversationStore","ToastFlashMessage","useUserStore","getLastMessageText","useChatContext","isEmpty","markMessageRevoked","useMessageStore","syncPinnedMessagesOnEvent","useChatListener","updateOneMessage","state","currentUserId","s","user","userID","onPressFlashMessage","isShowFLashMessage","onSendMessageProgress","progress","message","console","log","clientMsgID","status","onConversationChanged","conversations","getState","updateConversations","conversation","recvMsgOpt","NotNotify","latestMsg","JSON","parse","lastMessageText","show","key","conversationID","title","showName","body","onPress","hide","onNewConversation","onGroupMemberAdded","member","groupID","onGroupMemberDeleted","onMessageRevoked","revokedInfo","onMessagePinned","messagePinned","currentConversationId","isPinned","pinnedByUserID","operatorUserID","undefined","pinnedTime","on","OnConversationChanged","OnNewConversation","OnGroupMemberAdded","OnGroupMemberDeleted","SendMessageProgress","OnNewRecvMessageRevoked","OnRecvMessagePinned","off"],"sourceRoot":"../../../src","sources":["core/useChatListener.ts"],"mappings":";;AAAA,OAAOA,SAAS,IACdC,qBAAqB,EACrBC,WAAW,QAMN,+BAA+B;AACtC,SAASC,WAAW,EAAEC,SAAS,QAAQ,OAAO;AAC9C,SAASC,oBAAoB,QAAQ,0BAAuB;AAC5D,SAASC,iBAAiB,QAAQ,+BAA4B;AAC9D,SAASC,YAAY,QAAQ,kBAAe;AAC5C,SAASC,kBAAkB,QAAQ,0BAAuB;AAC1D,SAASC,cAAc,QAAQ,qBAAY;AAC3C,OAAOC,OAAO,MAAM,gBAAgB;AACpC,SAASC,kBAAkB,EAAEC,eAAe,QAAQ,qBAAkB;AACtE,SAASC,yBAAyB,QAAQ,mCAAgC;AAE1E,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMC,gBAAgB,GAAGH,eAAe,CAAEI,KAAK,IAAKA,KAAK,CAACD,gBAAgB,CAAC;EAC3E,MAAME,aAAa,GAAGV,YAAY,CAAEW,CAAC,IAAKA,CAAC,CAACC,IAAI,EAAEC,MAAM,CAAC;EACzD,MAAMC,mBAAmB,GAAGZ,cAAc,CAAC,CAAC,EAAEY,mBAAmB;EACjE,MAAMC,kBAAkB,GAAGb,cAAc,CAAC,CAAC,EAAEa,kBAAkB;EAE/D,MAAMC,qBAAqB,GAAGpB,WAAW,CACvC,CAAC;IAAEqB,QAAQ;IAAEC;EAAoD,CAAC,KAAK;IACrEC,OAAO,CAACC,GAAG,CAAC,gCAAgC,EAAE;MAC5CC,WAAW,EAAEH,OAAO,CAACG,WAAW;MAChCC,MAAM,EAAEJ,OAAO,CAACI,MAAM;MACtBL;IACF,CAAC,CAAC;IACFT,gBAAgB,CAACU,OAAO,CAAC;EAC3B,CAAC,EACD,CAACV,gBAAgB,CACnB,CAAC;EAED,MAAMe,qBAAqB,GAAG3B,WAAW,CACtC4B,aAAiC,IAAK;IACrC;IACA1B,oBAAoB,CAAC2B,QAAQ,CAAC,CAAC,CAACC,mBAAmB,CAACF,aAAa,CAAC;IAClE,IAAIT,kBAAkB,EAAE;MACtB,KAAK,MAAMY,YAAY,IAAIH,aAAa,EAAE;QACxC,IACEG,YAAY,CAACC,UAAU,KAAKlC,qBAAqB,CAACmC,SAAS,IAC3D,CAAC1B,OAAO,CAACwB,YAAY,EAAEG,SAAS,CAAC,EACjC;UACA;QACF;QACA,MAAMA,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACL,YAAY,CAACG,SAAS,IAAI,IAAI,CAAC;QAC5D,MAAMG,eAAe,GAAGhC,kBAAkB,CACxC6B,SAAS,EACTpB,aAAa,EACbiB,YACF,CAAC;QACD5B,iBAAiB,CAACmC,IAAI,CAAC;UACrBC,GAAG,EAAER,YAAY,CAACS,cAAc;UAChCC,KAAK,EAAEV,YAAY,CAACW,QAAQ,IAAI,aAAa;UAC7CC,IAAI,EAAEN,eAAe;UACrBO,OAAO,EAAEA,CAAA,KAAM;YACbzC,iBAAiB,CAAC0C,IAAI,CAACd,YAAY,CAACS,cAAc,CAAC;YACnDtB,mBAAmB,GAAGa,YAAY,CAAC;UACrC;QACF,CAAC,CAAC;MACJ;IACF;EACF,CAAC,EACD,CAACjB,aAAa,EAAEK,kBAAkB,EAAED,mBAAmB,CACzD,CAAC;EAED,MAAM4B,iBAAiB,GAAG9C,WAAW,CAAE4B,aAAiC,IAAK;IAC3EL,OAAO,CAACC,GAAG,CAAC,8BAA8B,EAAEI,aAAa,CAAC;IAC1D1B,oBAAoB,CAAC2B,QAAQ,CAAC,CAAC,CAACC,mBAAmB,CAACF,aAAa,CAAC;EACpE,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMmB,kBAAkB,GAAG/C,WAAW,CAAEgD,MAAuB,IAAK;IAClEzB,OAAO,CAACC,GAAG,CAAC,+BAA+B,EAAE;MAC3CP,MAAM,EAAE+B,MAAM,CAAC/B,MAAM;MACrBgC,OAAO,EAAED,MAAM,CAACC;IAClB,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,oBAAoB,GAAGlD,WAAW,CAAEgD,MAAuB,IAAK;IACpEzB,OAAO,CAACC,GAAG,CAAC,iCAAiC,EAAE;MAC7CP,MAAM,EAAE+B,MAAM,CAAC/B,MAAM;MACrBgC,OAAO,EAAED,MAAM,CAACC;IAClB,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,gBAAgB,GAAGnD,WAAW,CAAEoD,WAAwB,IAAK;IACjE5C,kBAAkB,CAAC4C,WAAW,CAAC3B,WAAW,CAAC;EAC7C,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM4B,eAAe,GAAGrD,WAAW,CAChCsD,aAA4B,IAAK;IAChC,MAAMC,qBAAqB,GACzBrD,oBAAoB,CAAC2B,QAAQ,CAAC,CAAC,CAAC0B,qBAAqB;IACvD,IAAID,aAAa,CAACd,cAAc,KAAKe,qBAAqB,EAAE;MAC1D3C,gBAAgB,CAAC;QACfa,WAAW,EAAE6B,aAAa,CAAC7B,WAAW;QACtC+B,QAAQ,EAAEF,aAAa,CAACE,QAAQ;QAChCC,cAAc,EAAEH,aAAa,CAACE,QAAQ,GAClCF,aAAa,CAACI,cAAc,GAC5BC,SAAS;QACbC,UAAU,EAAEN,aAAa,CAACE,QAAQ,GAC9BF,aAAa,CAACM,UAAU,GACxBD;MACN,CAAC,CAAC;IACJ;IACAjD,yBAAyB,CAAC4C,aAAa,CAACd,cAAc,CAAC;EACzD,CAAC,EACD,CAAC5B,gBAAgB,CACnB,CAAC;EAEDX,SAAS,CAAC,MAAM;IACd;IACAJ,SAAS,CAACgE,EAAE,CAAC9D,WAAW,CAAC+D,qBAAqB,EAAEnC,qBAAqB,CAAC;IACtE9B,SAAS,CAACgE,EAAE,CAAC9D,WAAW,CAACgE,iBAAiB,EAAEjB,iBAAiB,CAAC;IAC9D;;IAEA;IACAjD,SAAS,CAACgE,EAAE,CAAC9D,WAAW,CAACiE,kBAAkB,EAAEjB,kBAAkB,CAAC;IAChElD,SAAS,CAACgE,EAAE,CAAC9D,WAAW,CAACkE,oBAAoB,EAAEf,oBAAoB,CAAC;;IAEpE;IACArD,SAAS,CAACgE,EAAE,CAAC9D,WAAW,CAACmE,mBAAmB,EAAE9C,qBAAqB,CAAC;IACpEvB,SAAS,CAACgE,EAAE,CAAC9D,WAAW,CAACoE,uBAAuB,EAAEhB,gBAAgB,CAAC;IACnEtD,SAAS,CAACgE,EAAE,CAAC9D,WAAW,CAACqE,mBAAmB,EAAEf,eAAe,CAAC;IAE9D,OAAO,MAAM;MACX;MACAxD,SAAS,CAACwE,GAAG,CAACtE,WAAW,CAAC+D,qBAAqB,EAAEnC,qBAAqB,CAAC;MACvE9B,SAAS,CAACwE,GAAG,CAACtE,WAAW,CAACgE,iBAAiB,EAAEjB,iBAAiB,CAAC;;MAE/D;MACAjD,SAAS,CAACwE,GAAG,CAACtE,WAAW,CAACiE,kBAAkB,EAAEjB,kBAAkB,CAAC;MACjElD,SAAS,CAACwE,GAAG,CAACtE,WAAW,CAACkE,oBAAoB,EAAEf,oBAAoB,CAAC;;MAErE;MACArD,SAAS,CAACwE,GAAG,CAACtE,WAAW,CAACmE,mBAAmB,EAAE9C,qBAAqB,CAAC;MACrE;MACAvB,SAAS,CAACwE,GAAG,CAACtE,WAAW,CAACoE,uBAAuB,EAAEhB,gBAAgB,CAAC;MACpEtD,SAAS,CAACwE,GAAG,CAACtE,WAAW,CAACqE,mBAAmB,EAAEf,eAAe,CAAC;IACjE,CAAC;EACH,CAAC,EAAE,CACD1B,qBAAqB,EACrBoB,kBAAkB,EAClBG,oBAAoB,EACpBG,eAAe,EACfF,gBAAgB,EAChBL,iBAAiB,EACjB1B,qBAAqB,CACtB,CAAC;AACJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect } from 'react';
|
|
4
|
+
import OpenIMSDK from '@droppii/openim-rn-client-sdk';
|
|
5
|
+
import { useConversationStore } from "../../store/conversation.js";
|
|
6
|
+
import { useMessageStore } from "../../store/message.js";
|
|
7
|
+
import { usePinnedMessageStore } from "../../store/pinnedMessage.js";
|
|
8
|
+
import { useUserStore } from "../../store/user.js";
|
|
9
|
+
import { UIUtils } from "../../utils/UIUtils.js";
|
|
10
|
+
import { trans } from "../../translation/index.js";
|
|
11
|
+
const MAX_PINNED_MESSAGES = 5;
|
|
12
|
+
export const fetchPinnedMessages = async conversationID => {
|
|
13
|
+
const result = await OpenIMSDK.getPinnedMessageList({
|
|
14
|
+
conversationID,
|
|
15
|
+
offset: 0,
|
|
16
|
+
pageSize: MAX_PINNED_MESSAGES
|
|
17
|
+
});
|
|
18
|
+
const previouslyPinnedIds = new Set(usePinnedMessageStore.getState().messages.map(msg => msg.clientMsgID));
|
|
19
|
+
const pinnedIds = new Set(result.messageList.map(msg => msg.clientMsgID));
|
|
20
|
+
usePinnedMessageStore.getState().setMessages(result.messageList, result.totalCount);
|
|
21
|
+
|
|
22
|
+
// Reconcile the per-message `isPinned` flag (used by the toolbox and the
|
|
23
|
+
// pinned badge) with the authoritative list from the server — messages
|
|
24
|
+
// pinned outside this session (before remount, or from another device)
|
|
25
|
+
// never get this flag set otherwise.
|
|
26
|
+
const {
|
|
27
|
+
updateOneMessage
|
|
28
|
+
} = useMessageStore.getState();
|
|
29
|
+
pinnedIds.forEach(clientMsgID => {
|
|
30
|
+
updateOneMessage({
|
|
31
|
+
clientMsgID,
|
|
32
|
+
isPinned: true
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
previouslyPinnedIds.forEach(clientMsgID => {
|
|
36
|
+
if (!pinnedIds.has(clientMsgID)) {
|
|
37
|
+
updateOneMessage({
|
|
38
|
+
clientMsgID,
|
|
39
|
+
isPinned: false
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
const showPinLimitReachedModal = () => {
|
|
45
|
+
UIUtils.alert.open({
|
|
46
|
+
title: trans('chat:pin_limit_title'),
|
|
47
|
+
message: trans('chat:pin_limit_desc'),
|
|
48
|
+
primaryIndex: 0,
|
|
49
|
+
buttons: [{
|
|
50
|
+
label: trans('chat:pin_limit_primary'),
|
|
51
|
+
kind: 'primary',
|
|
52
|
+
onPress: () => {}
|
|
53
|
+
}]
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
export const usePinMessage = conversationID => {
|
|
57
|
+
const pinnedMessages = usePinnedMessageStore(state => state.messages);
|
|
58
|
+
const addMessage = usePinnedMessageStore(state => state.addMessage);
|
|
59
|
+
const removeMessage = usePinnedMessageStore(state => state.removeMessage);
|
|
60
|
+
const reset = usePinnedMessageStore(state => state.reset);
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
if (!conversationID) return;
|
|
63
|
+
fetchPinnedMessages(conversationID).catch(error => {
|
|
64
|
+
console.error('fetchPinnedMessages', error);
|
|
65
|
+
});
|
|
66
|
+
return () => {
|
|
67
|
+
reset();
|
|
68
|
+
};
|
|
69
|
+
}, [conversationID, reset]);
|
|
70
|
+
const pinMessage = useCallback(async message => {
|
|
71
|
+
if (!conversationID) return;
|
|
72
|
+
if (pinnedMessages.length >= MAX_PINNED_MESSAGES) {
|
|
73
|
+
showPinLimitReachedModal();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
await OpenIMSDK.pinMsg(conversationID, message.clientMsgID);
|
|
78
|
+
addMessage(message);
|
|
79
|
+
useMessageStore.getState().updateOneMessage({
|
|
80
|
+
clientMsgID: message.clientMsgID,
|
|
81
|
+
isPinned: true,
|
|
82
|
+
pinnedByUserID: useUserStore.getState().user?.userID,
|
|
83
|
+
pinnedTime: Date.now()
|
|
84
|
+
});
|
|
85
|
+
UIUtils.toast.open({
|
|
86
|
+
title: trans('chat:pin_message_success'),
|
|
87
|
+
theme: 'success'
|
|
88
|
+
});
|
|
89
|
+
} catch (error) {
|
|
90
|
+
console.error('pinMessage', error);
|
|
91
|
+
UIUtils.toast.open({
|
|
92
|
+
title: trans('chat:generic_error'),
|
|
93
|
+
theme: 'error'
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}, [conversationID, pinnedMessages.length, addMessage]);
|
|
97
|
+
const unpinMessage = useCallback(async message => {
|
|
98
|
+
if (!conversationID) return;
|
|
99
|
+
try {
|
|
100
|
+
await OpenIMSDK.unpinMsg(conversationID, message.clientMsgID);
|
|
101
|
+
removeMessage(message.clientMsgID);
|
|
102
|
+
useMessageStore.getState().updateOneMessage({
|
|
103
|
+
clientMsgID: message.clientMsgID,
|
|
104
|
+
isPinned: false,
|
|
105
|
+
pinnedByUserID: undefined,
|
|
106
|
+
pinnedTime: undefined
|
|
107
|
+
});
|
|
108
|
+
UIUtils.toast.open({
|
|
109
|
+
title: trans('chat:unpin_message_success'),
|
|
110
|
+
theme: 'success'
|
|
111
|
+
});
|
|
112
|
+
} catch (error) {
|
|
113
|
+
console.error('unpinMessage', error);
|
|
114
|
+
UIUtils.toast.open({
|
|
115
|
+
title: trans('chat:generic_error'),
|
|
116
|
+
theme: 'error'
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}, [conversationID, removeMessage]);
|
|
120
|
+
return {
|
|
121
|
+
pinnedMessages,
|
|
122
|
+
pinMessage,
|
|
123
|
+
unpinMessage
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
export const syncPinnedMessagesOnEvent = conversationID => {
|
|
127
|
+
const currentConversationId = useConversationStore.getState().currentConversationId;
|
|
128
|
+
if (conversationID !== currentConversationId) return;
|
|
129
|
+
fetchPinnedMessages(conversationID).catch(error => {
|
|
130
|
+
console.error('syncPinnedMessagesOnEvent', error);
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=usePinMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","OpenIMSDK","useConversationStore","useMessageStore","usePinnedMessageStore","useUserStore","UIUtils","trans","MAX_PINNED_MESSAGES","fetchPinnedMessages","conversationID","result","getPinnedMessageList","offset","pageSize","previouslyPinnedIds","Set","getState","messages","map","msg","clientMsgID","pinnedIds","messageList","setMessages","totalCount","updateOneMessage","forEach","isPinned","has","showPinLimitReachedModal","alert","open","title","message","primaryIndex","buttons","label","kind","onPress","usePinMessage","pinnedMessages","state","addMessage","removeMessage","reset","catch","error","console","pinMessage","length","pinMsg","pinnedByUserID","user","userID","pinnedTime","Date","now","toast","theme","unpinMessage","unpinMsg","undefined","syncPinnedMessagesOnEvent","currentConversationId"],"sourceRoot":"../../../../src","sources":["hooks/message/usePinMessage.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,QAAQ,OAAO;AAC9C,OAAOC,SAAS,MAAM,+BAA+B;AAErD,SAASC,oBAAoB,QAAQ,6BAA0B;AAC/D,SAASC,eAAe,QAAQ,wBAAqB;AACrD,SAASC,qBAAqB,QAAQ,8BAA2B;AACjE,SAASC,YAAY,QAAQ,qBAAkB;AAC/C,SAASC,OAAO,QAAQ,wBAAqB;AAC7C,SAASC,KAAK,QAAQ,4BAAmB;AAEzC,MAAMC,mBAAmB,GAAG,CAAC;AAE7B,OAAO,MAAMC,mBAAmB,GAAG,MAAOC,cAAsB,IAAK;EACnE,MAAMC,MAAM,GAAG,MAAMV,SAAS,CAACW,oBAAoB,CAAC;IAClDF,cAAc;IACdG,MAAM,EAAE,CAAC;IACTC,QAAQ,EAAEN;EACZ,CAAC,CAAC;EAEF,MAAMO,mBAAmB,GAAG,IAAIC,GAAG,CACjCZ,qBAAqB,CAACa,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAACC,GAAG,CAAEC,GAAG,IAAKA,GAAG,CAACC,WAAW,CACxE,CAAC;EACD,MAAMC,SAAS,GAAG,IAAIN,GAAG,CAACL,MAAM,CAACY,WAAW,CAACJ,GAAG,CAAEC,GAAG,IAAKA,GAAG,CAACC,WAAW,CAAC,CAAC;EAE3EjB,qBAAqB,CAClBa,QAAQ,CAAC,CAAC,CACVO,WAAW,CAACb,MAAM,CAACY,WAAW,EAAEZ,MAAM,CAACc,UAAU,CAAC;;EAErD;EACA;EACA;EACA;EACA,MAAM;IAAEC;EAAiB,CAAC,GAAGvB,eAAe,CAACc,QAAQ,CAAC,CAAC;EACvDK,SAAS,CAACK,OAAO,CAAEN,WAAW,IAAK;IACjCK,gBAAgB,CAAC;MAAEL,WAAW;MAAEO,QAAQ,EAAE;IAAK,CAAC,CAAC;EACnD,CAAC,CAAC;EACFb,mBAAmB,CAACY,OAAO,CAAEN,WAAW,IAAK;IAC3C,IAAI,CAACC,SAAS,CAACO,GAAG,CAACR,WAAW,CAAC,EAAE;MAC/BK,gBAAgB,CAAC;QAAEL,WAAW;QAAEO,QAAQ,EAAE;MAAM,CAAC,CAAC;IACpD;EACF,CAAC,CAAC;AACJ,CAAC;AAED,MAAME,wBAAwB,GAAGA,CAAA,KAAM;EACrCxB,OAAO,CAACyB,KAAK,CAACC,IAAI,CAAC;IACjBC,KAAK,EAAE1B,KAAK,CAAC,sBAAsB,CAAC;IACpC2B,OAAO,EAAE3B,KAAK,CAAC,qBAAqB,CAAC;IACrC4B,YAAY,EAAE,CAAC;IACfC,OAAO,EAAE,CACP;MACEC,KAAK,EAAE9B,KAAK,CAAC,wBAAwB,CAAC;MACtC+B,IAAI,EAAE,SAAS;MACfC,OAAO,EAAEA,CAAA,KAAM,CAAC;IAClB,CAAC;EAEL,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMC,aAAa,GAAI9B,cAAuB,IAAK;EACxD,MAAM+B,cAAc,GAAGrC,qBAAqB,CAAEsC,KAAK,IAAKA,KAAK,CAACxB,QAAQ,CAAC;EACvE,MAAMyB,UAAU,GAAGvC,qBAAqB,CAAEsC,KAAK,IAAKA,KAAK,CAACC,UAAU,CAAC;EACrE,MAAMC,aAAa,GAAGxC,qBAAqB,CAAEsC,KAAK,IAAKA,KAAK,CAACE,aAAa,CAAC;EAC3E,MAAMC,KAAK,GAAGzC,qBAAqB,CAAEsC,KAAK,IAAKA,KAAK,CAACG,KAAK,CAAC;EAE3D7C,SAAS,CAAC,MAAM;IACd,IAAI,CAACU,cAAc,EAAE;IAErBD,mBAAmB,CAACC,cAAc,CAAC,CAACoC,KAAK,CAAEC,KAAK,IAAK;MACnDC,OAAO,CAACD,KAAK,CAAC,qBAAqB,EAAEA,KAAK,CAAC;IAC7C,CAAC,CAAC;IAEF,OAAO,MAAM;MACXF,KAAK,CAAC,CAAC;IACT,CAAC;EACH,CAAC,EAAE,CAACnC,cAAc,EAAEmC,KAAK,CAAC,CAAC;EAE3B,MAAMI,UAAU,GAAGlD,WAAW,CAC5B,MAAOmC,OAAoB,IAAK;IAC9B,IAAI,CAACxB,cAAc,EAAE;IAErB,IAAI+B,cAAc,CAACS,MAAM,IAAI1C,mBAAmB,EAAE;MAChDsB,wBAAwB,CAAC,CAAC;MAC1B;IACF;IAEA,IAAI;MACF,MAAM7B,SAAS,CAACkD,MAAM,CAACzC,cAAc,EAAEwB,OAAO,CAACb,WAAW,CAAC;MAC3DsB,UAAU,CAACT,OAAO,CAAC;MACnB/B,eAAe,CAACc,QAAQ,CAAC,CAAC,CAACS,gBAAgB,CAAC;QAC1CL,WAAW,EAAEa,OAAO,CAACb,WAAW;QAChCO,QAAQ,EAAE,IAAI;QACdwB,cAAc,EAAE/C,YAAY,CAACY,QAAQ,CAAC,CAAC,CAACoC,IAAI,EAAEC,MAAM;QACpDC,UAAU,EAAEC,IAAI,CAACC,GAAG,CAAC;MACvB,CAAC,CAAC;MACFnD,OAAO,CAACoD,KAAK,CAAC1B,IAAI,CAAC;QACjBC,KAAK,EAAE1B,KAAK,CAAC,0BAA0B,CAAC;QACxCoD,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOZ,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEA,KAAK,CAAC;MAClCzC,OAAO,CAACoD,KAAK,CAAC1B,IAAI,CAAC;QACjBC,KAAK,EAAE1B,KAAK,CAAC,oBAAoB,CAAC;QAClCoD,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACjD,cAAc,EAAE+B,cAAc,CAACS,MAAM,EAAEP,UAAU,CACpD,CAAC;EAED,MAAMiB,YAAY,GAAG7D,WAAW,CAC9B,MAAOmC,OAAoB,IAAK;IAC9B,IAAI,CAACxB,cAAc,EAAE;IAErB,IAAI;MACF,MAAMT,SAAS,CAAC4D,QAAQ,CAACnD,cAAc,EAAEwB,OAAO,CAACb,WAAW,CAAC;MAC7DuB,aAAa,CAACV,OAAO,CAACb,WAAW,CAAC;MAClClB,eAAe,CAACc,QAAQ,CAAC,CAAC,CAACS,gBAAgB,CAAC;QAC1CL,WAAW,EAAEa,OAAO,CAACb,WAAW;QAChCO,QAAQ,EAAE,KAAK;QACfwB,cAAc,EAAEU,SAAS;QACzBP,UAAU,EAAEO;MACd,CAAC,CAAC;MACFxD,OAAO,CAACoD,KAAK,CAAC1B,IAAI,CAAC;QACjBC,KAAK,EAAE1B,KAAK,CAAC,4BAA4B,CAAC;QAC1CoD,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOZ,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEA,KAAK,CAAC;MACpCzC,OAAO,CAACoD,KAAK,CAAC1B,IAAI,CAAC;QACjBC,KAAK,EAAE1B,KAAK,CAAC,oBAAoB,CAAC;QAClCoD,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACjD,cAAc,EAAEkC,aAAa,CAChC,CAAC;EAED,OAAO;IACLH,cAAc;IACdQ,UAAU;IACVW;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMG,yBAAyB,GAAIrD,cAAsB,IAAK;EACnE,MAAMsD,qBAAqB,GACzB9D,oBAAoB,CAACe,QAAQ,CAAC,CAAC,CAAC+C,qBAAqB;EACvD,IAAItD,cAAc,KAAKsD,qBAAqB,EAAE;EAE9CvD,mBAAmB,CAACC,cAAc,CAAC,CAACoC,KAAK,CAAEC,KAAK,IAAK;IACnDC,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC;EACnD,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
|
|
@@ -7,6 +7,8 @@ import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
|
7
7
|
import { KContainer } from '@droppii/libs';
|
|
8
8
|
import { useNavigation } from '@react-navigation/native';
|
|
9
9
|
import { useChatMessages } from "../../hooks/useChatMessages.js";
|
|
10
|
+
import { usePinMessage } from "../../hooks/message/usePinMessage.js";
|
|
11
|
+
import { PinnedMessageBar } from "./PinnedMessageBar.js";
|
|
10
12
|
import { MediaViewerModal } from "../../components/MediaViewerModal.js";
|
|
11
13
|
import { useConversation, useConversationStore } from "../../store/index.js";
|
|
12
14
|
import ChatDetailHeader from "./ChatDetailHeader.js";
|
|
@@ -63,6 +65,11 @@ const ChatDetail = /*#__PURE__*/memo(({
|
|
|
63
65
|
conversationId,
|
|
64
66
|
enabled
|
|
65
67
|
});
|
|
68
|
+
const {
|
|
69
|
+
pinnedMessages,
|
|
70
|
+
pinMessage,
|
|
71
|
+
unpinMessage
|
|
72
|
+
} = usePinMessage(conversationId);
|
|
66
73
|
useEffect(() => {
|
|
67
74
|
if (conversationId) {
|
|
68
75
|
useConversationStore.getState().setCurrentConversation(conversationId);
|
|
@@ -94,6 +101,9 @@ const ChatDetail = /*#__PURE__*/memo(({
|
|
|
94
101
|
onPressAddMember: onPressAddMember,
|
|
95
102
|
onPressMenu: onPressMenu,
|
|
96
103
|
onPressAvatar: onPressAvatar
|
|
104
|
+
}), /*#__PURE__*/_jsx(PinnedMessageBar, {
|
|
105
|
+
messages: pinnedMessages,
|
|
106
|
+
currentUserId: currentUserId
|
|
97
107
|
}), /*#__PURE__*/_jsxs(KeyboardAvoidingView, {
|
|
98
108
|
style: styles.keyboardAvoiding,
|
|
99
109
|
behavior: "padding",
|
|
@@ -118,7 +128,9 @@ const ChatDetail = /*#__PURE__*/memo(({
|
|
|
118
128
|
}), /*#__PURE__*/_jsx(MessageToolboxOverlay, {
|
|
119
129
|
ref: messageToolboxRef,
|
|
120
130
|
currentUserId: currentUserId,
|
|
121
|
-
customMessageItemFactory: customMessageItemFactory
|
|
131
|
+
customMessageItemFactory: customMessageItemFactory,
|
|
132
|
+
onPinMessage: pinMessage,
|
|
133
|
+
onUnpinMessage: unpinMessage
|
|
122
134
|
})]
|
|
123
135
|
});
|
|
124
136
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","useCallback","useEffect","useMemo","useRef","Platform","StyleSheet","KeyboardAvoidingView","useSafeAreaInsets","KContainer","useNavigation","useChatMessages","MediaViewerModal","useConversation","useConversationStore","ChatDetailHeader","ChatListLegend","ChatComposer","shouldShowAddMember","normalizeUrl","MessageToolboxOverlay","useGetConversationDetail","jsx","_jsx","jsxs","_jsxs","ChatDetail","targetConversationId","targetUserId","targetGroupId","targetBotId","enabled","showAddMember","onBack","onPressSearch","onPressAddMember","onPressMenu","onPressAvatar","onPressUrl","customMessageItemFactory","pannelActions","navigation","mediaViewerRef","messageToolboxRef","conversationId","isLoading","isLoadingConversation","conversation","handleBackDefault","goBack","handleMediaPress","items","index","current","show","messages","currentUserId","onLoadEarlier","isLoadingEarlier","hasMoreEarlier","getState","setCurrentConversation","undefined","resolvedShowAddMember","insets","keyboardVerticalOffset","select","android","bottom","default","handlePressUrl","url","handleMessageLongPress","message","rect","Page","flex","edges","children","style","styles","keyboardAvoiding","behavior","onMediaPress","onLongPress","isEmptyMessage","length","ref","displayName","create"],"sourceRoot":"../../../../src","sources":["screens/chat-detail/ChatDetail.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AACrE,SAASC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AAEnD,SAASC,oBAAoB,QAAQ,kCAAkC;AACvE,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,eAAe,QAAQ,gCAA6B;AAC7D,SACEC,gBAAgB,QAEX,sCAAmC;AAC1C,SAASC,eAAe,EAAEC,oBAAoB,QAAQ,sBAAa;AACnE,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,mBAAmB,QAAQ,+BAA4B;AAEhE,SAASC,YAAY,QAAQ,oBAAiB;AAC9C,SAASC,qBAAqB,QAAQ,2CAAwC;AAG9E,SAASC,wBAAwB,QAAQ,sDAAmD;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE7F,MAAMC,UAAU,
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useEffect","useMemo","useRef","Platform","StyleSheet","KeyboardAvoidingView","useSafeAreaInsets","KContainer","useNavigation","useChatMessages","usePinMessage","PinnedMessageBar","MediaViewerModal","useConversation","useConversationStore","ChatDetailHeader","ChatListLegend","ChatComposer","shouldShowAddMember","normalizeUrl","MessageToolboxOverlay","useGetConversationDetail","jsx","_jsx","jsxs","_jsxs","ChatDetail","targetConversationId","targetUserId","targetGroupId","targetBotId","enabled","showAddMember","onBack","onPressSearch","onPressAddMember","onPressMenu","onPressAvatar","onPressUrl","customMessageItemFactory","pannelActions","navigation","mediaViewerRef","messageToolboxRef","conversationId","isLoading","isLoadingConversation","conversation","handleBackDefault","goBack","handleMediaPress","items","index","current","show","messages","currentUserId","onLoadEarlier","isLoadingEarlier","hasMoreEarlier","pinnedMessages","pinMessage","unpinMessage","getState","setCurrentConversation","undefined","resolvedShowAddMember","insets","keyboardVerticalOffset","select","android","bottom","default","handlePressUrl","url","handleMessageLongPress","message","rect","Page","flex","edges","children","style","styles","keyboardAvoiding","behavior","onMediaPress","onLongPress","isEmptyMessage","length","ref","onPinMessage","onUnpinMessage","displayName","create"],"sourceRoot":"../../../../src","sources":["screens/chat-detail/ChatDetail.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AACrE,SAASC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AAEnD,SAASC,oBAAoB,QAAQ,kCAAkC;AACvE,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,aAAa,QAAQ,0BAA0B;AACxD,SAASC,eAAe,QAAQ,gCAA6B;AAC7D,SAASC,aAAa,QAAQ,sCAAmC;AACjE,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SACEC,gBAAgB,QAEX,sCAAmC;AAC1C,SAASC,eAAe,EAAEC,oBAAoB,QAAQ,sBAAa;AACnE,OAAOC,gBAAgB,MAAM,uBAAoB;AACjD,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,mBAAmB,QAAQ,+BAA4B;AAEhE,SAASC,YAAY,QAAQ,oBAAiB;AAC9C,SAASC,qBAAqB,QAAQ,2CAAwC;AAG9E,SAASC,wBAAwB,QAAQ,sDAAmD;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE7F,MAAMC,UAAU,gBAAG5B,IAAI,CACrB,CAAC;EACC6B,oBAAoB,GAAG,EAAE;EACzBC,YAAY,GAAG,EAAE;EACjBC,aAAa,GAAG,EAAE;EAClBC,WAAW,GAAG,EAAE;EAChBC,OAAO,GAAG,IAAI;EACdC,aAAa;EACbC,MAAM;EACNC,aAAa;EACbC,gBAAgB;EAChBC,WAAW;EACXC,aAAa;EACbC,UAAU;EACVC,wBAAwB;EACxBC;AACe,CAAC,KAAK;EACrB,MAAMC,UAAU,GAAGjC,aAAa,CAAC,CAAC;EAClC,MAAMkC,cAAc,GAAGxC,MAAM,CAAyB,IAAI,CAAC;EAC3D,MAAMyC,iBAAiB,GAAGzC,MAAM,CAAoB,IAAI,CAAC;EAEzD,MAAM;IAAE0C,cAAc;IAAEC,SAAS,EAAEC;EAAsB,CAAC,GACxDzB,wBAAwB,CAAC;IACvBM,oBAAoB;IACpBC,YAAY;IACZC,aAAa;IACbC;EACF,CAAC,CAAC;EAEJ,MAAMiB,YAAY,GAAGlC,eAAe,CAAC+B,cAAc,CAAC;EAEpD,MAAMI,iBAAiB,GAAGjD,WAAW,CAAC,MAAM;IAC1C0C,UAAU,CAACQ,MAAM,CAAC,CAAC;EACrB,CAAC,EAAE,CAACR,UAAU,CAAC,CAAC;EAEhB,MAAMS,gBAAgB,GAAGnD,WAAW,CAClC,CACEoD,KAAoD,EACpDC,KAAc,KACX;IACHV,cAAc,CAACW,OAAO,EAAEC,IAAI,CAACH,KAAK,EAAEC,KAAK,CAAC;EAC5C,CAAC,EACD,EACF,CAAC;EAED,MAAM;IACJG,QAAQ;IACRC,aAAa;IACbC,aAAa;IACbZ,SAAS;IACTa,gBAAgB;IAChBC;EACF,CAAC,GAAGlD,eAAe,CAAC;IAAEmC,cAAc;IAAEb;EAAQ,CAAC,CAAC;EAEhD,MAAM;IAAE6B,cAAc;IAAEC,UAAU;IAAEC;EAAa,CAAC,GAChDpD,aAAa,CAACkC,cAAc,CAAC;EAE/B5C,SAAS,CAAC,MAAM;IACd,IAAI4C,cAAc,EAAE;MAClB9B,oBAAoB,CAACiD,QAAQ,CAAC,CAAC,CAACC,sBAAsB,CAACpB,cAAc,CAAC;IACxE;IACA,OAAO,MAAM;MACX9B,oBAAoB,CAACiD,QAAQ,CAAC,CAAC,CAACC,sBAAsB,CAACC,SAAS,CAAC;IACnE,CAAC;EACH,CAAC,EAAE,CAACrB,cAAc,CAAC,CAAC;EAEpB,MAAMsB,qBAAqB,GACzBlC,aAAa,IAAId,mBAAmB,CAAC6B,YAAY,CAAC;EAEpD,MAAMoB,MAAM,GAAG7D,iBAAiB,CAAC,CAAC;EAElC,MAAM8D,sBAAsB,GAAGnE,OAAO,CACpC,MAAME,QAAQ,CAACkE,MAAM,CAAC;IAAEC,OAAO,EAAEH,MAAM,CAACI,MAAM;IAAEC,OAAO,EAAE;EAAE,CAAC,CAAC,EAC7D,CAACL,MAAM,CAACI,MAAM,CAChB,CAAC;EAED,MAAME,cAAc,GAAG1E,WAAW,CAC/B2E,GAAW,IAAK;IACfpC,UAAU,GAAGnB,YAAY,CAACuD,GAAG,CAAC,CAAC;EACjC,CAAC,EACD,CAACpC,UAAU,CACb,CAAC;EAED,MAAMqC,sBAAsB,GAAG5E,WAAW,CACxC,CAAC6E,OAAqB,EAAEC,IAAkB,KAAK;IAC7ClC,iBAAiB,CAACU,OAAO,EAAEC,IAAI,CAACsB,OAAO,EAAEC,IAAI,CAAC;EAChD,CAAC,EACD,EACF,CAAC;EAED,oBACEpD,KAAA,CAAClB,UAAU,CAACuE,IAAI;IAACC,IAAI;IAACC,KAAK,EAAE,CAAC,QAAQ,CAAE;IAAAC,QAAA,gBACtC1D,IAAA,CAACR,gBAAgB;MACf6B,cAAc,EAAEA,cAAe;MAC/BZ,aAAa,EAAEkC,qBAAsB;MACrCjC,MAAM,EAAEA,MAAM,IAAIe,iBAAkB;MACpCd,aAAa,EAAEA,aAAc;MAC7BC,gBAAgB,EAAEA,gBAAiB;MACnCC,WAAW,EAAEA,WAAY;MACzBC,aAAa,EAAEA;IAAc,CAC9B,CAAC,eAEFd,IAAA,CAACZ,gBAAgB;MACf4C,QAAQ,EAAEK,cAAe;MACzBJ,aAAa,EAAEA;IAAc,CAC9B,CAAC,eAEF/B,KAAA,CAACpB,oBAAoB;MACnB6E,KAAK,EAAEC,MAAM,CAACC,gBAAiB;MAC/BC,QAAQ,EAAC,SAAS;MAClBjB,sBAAsB,EAAEA,sBAAuB;MAAAa,QAAA,gBAE/C1D,IAAA,CAACP,cAAc;QACbuC,QAAQ,EAAEA,QAAS;QACnBC,aAAa,EAAEA,aAAc;QAC7BjB,wBAAwB,EAAEA,wBAAyB;QACnDkB,aAAa,EAAEA,aAAc;QAC7BZ,SAAS,EAAEA,SAAS,IAAIC,qBAAsB;QAC9CY,gBAAgB,EAAEA,gBAAiB;QACnCC,cAAc,EAAEA,cAAe;QAC/B2B,YAAY,EAAEpC,gBAAiB;QAC/BZ,UAAU,EAAEmC,cAAe;QAC3Bc,WAAW,EAAEZ;MAAuB,CACrC,CAAC,eAEFpD,IAAA,CAACN,YAAY;QACXuE,cAAc,EAAEjC,QAAQ,EAAEkC,MAAM,KAAK,CAAE;QACvCjD,aAAa,EAAEA;MAAc,CAC9B,CAAC;IAAA,CACkB,CAAC,eAEvBjB,IAAA,CAACX,gBAAgB;MAAC8E,GAAG,EAAEhD;IAAe,CAAE,CAAC,eACzCnB,IAAA,CAACH,qBAAqB;MACpBsE,GAAG,EAAE/C,iBAAkB;MACvBa,aAAa,EAAEA,aAAc;MAC7BjB,wBAAwB,EAAEA,wBAAyB;MACnDoD,YAAY,EAAE9B,UAAW;MACzB+B,cAAc,EAAE9B;IAAa,CAC9B,CAAC;EAAA,CACa,CAAC;AAEtB,CACF,CAAC;AAEDpC,UAAU,CAACmE,WAAW,GAAG,YAAY;AAErC,MAAMV,MAAM,GAAG/E,UAAU,CAAC0F,MAAM,CAAC;EAC/BV,gBAAgB,EAAE;IAAEL,IAAI,EAAE;EAAE;AAC9B,CAAC,CAAC;AAEF,eAAerD,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useMemo } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KImage, KLabel, KColors, KSpacingValue, KBadge } from '@droppii/libs';
|
|
6
|
+
import { trans } from "../../translation/index.js";
|
|
7
|
+
import { getMessagePreview, getPinnedMessagePreview } from "../../utils/messageUtils.js";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const PinnedMessageThumbnail = /*#__PURE__*/memo(({
|
|
10
|
+
message
|
|
11
|
+
}) => {
|
|
12
|
+
const preview = useMemo(() => getPinnedMessagePreview(message), [message]);
|
|
13
|
+
if (preview.mediaType === 'image' && preview.thumbnailUrl) {
|
|
14
|
+
return /*#__PURE__*/_jsx(KImage.Base, {
|
|
15
|
+
uri: preview.thumbnailUrl,
|
|
16
|
+
style: styles.thumbnail,
|
|
17
|
+
resizeMode: "cover"
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
if (preview.mediaType === 'video') {
|
|
21
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
22
|
+
style: styles.thumbnail,
|
|
23
|
+
children: [preview.thumbnailUrl && /*#__PURE__*/_jsx(KImage.Base, {
|
|
24
|
+
uri: preview.thumbnailUrl,
|
|
25
|
+
style: styles.thumbnail,
|
|
26
|
+
resizeMode: "cover"
|
|
27
|
+
}), /*#__PURE__*/_jsx(KContainer.View, {
|
|
28
|
+
style: styles.videoOverlay,
|
|
29
|
+
center: true,
|
|
30
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
31
|
+
name: "play-circle",
|
|
32
|
+
provider: "MaterialCommunityIcons",
|
|
33
|
+
size: 16,
|
|
34
|
+
color: KColors.white
|
|
35
|
+
})
|
|
36
|
+
})]
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
if (preview.mediaType === 'file' && preview.fileIcon) {
|
|
40
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
41
|
+
marginL: "0.75rem",
|
|
42
|
+
children: /*#__PURE__*/_jsx(KImage.Base, {
|
|
43
|
+
uri: preview.fileIcon,
|
|
44
|
+
style: styles.fileIcon,
|
|
45
|
+
resizeMode: "contain"
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
});
|
|
51
|
+
PinnedMessageThumbnail.displayName = 'PinnedMessageThumbnail';
|
|
52
|
+
export const PinnedMessageBar = /*#__PURE__*/memo(({
|
|
53
|
+
messages,
|
|
54
|
+
currentUserId
|
|
55
|
+
}) => {
|
|
56
|
+
if (messages.length === 0) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const latest = messages[0];
|
|
60
|
+
const sender = latest.sendID === currentUserId ? 'Bạn' : latest.senderNickname || '';
|
|
61
|
+
const remainingCount = messages.length - 1;
|
|
62
|
+
const {
|
|
63
|
+
subtitleKey
|
|
64
|
+
} = getPinnedMessagePreview(latest);
|
|
65
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
66
|
+
style: styles.container,
|
|
67
|
+
children: [/*#__PURE__*/_jsx(PinnedMessageThumbnail, {
|
|
68
|
+
message: latest
|
|
69
|
+
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
70
|
+
row: true,
|
|
71
|
+
alignItems: true,
|
|
72
|
+
flex: true,
|
|
73
|
+
paddingR: "0.75rem",
|
|
74
|
+
children: [/*#__PURE__*/_jsxs(KContainer.View, {
|
|
75
|
+
style: styles.content,
|
|
76
|
+
children: [/*#__PURE__*/_jsx(KLabel.Text, {
|
|
77
|
+
typo: "TextNmMedium",
|
|
78
|
+
numberOfLines: 1,
|
|
79
|
+
children: getMessagePreview(latest)
|
|
80
|
+
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
81
|
+
row: true,
|
|
82
|
+
alignItems: true,
|
|
83
|
+
paddingR: "0.75rem",
|
|
84
|
+
children: [/*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
85
|
+
name: "thumbtack-b",
|
|
86
|
+
size: 12,
|
|
87
|
+
color: KColors.primary.normal
|
|
88
|
+
}), /*#__PURE__*/_jsx(KLabel.Text, {
|
|
89
|
+
typo: "TextSmNormal",
|
|
90
|
+
color: KColors.gray.light,
|
|
91
|
+
numberOfLines: 1,
|
|
92
|
+
marginL: '0.25rem',
|
|
93
|
+
children: trans(subtitleKey, {
|
|
94
|
+
sender
|
|
95
|
+
})
|
|
96
|
+
})]
|
|
97
|
+
})]
|
|
98
|
+
}), remainingCount > 0 && /*#__PURE__*/_jsx(KBadge.BaseV2, {
|
|
99
|
+
badge: `+${remainingCount}`,
|
|
100
|
+
skipConvertBadge: true,
|
|
101
|
+
badgeSize: {
|
|
102
|
+
width: 26,
|
|
103
|
+
height: 20
|
|
104
|
+
},
|
|
105
|
+
wrapperLabelTextStyle: {
|
|
106
|
+
paddingHorizontal: 3
|
|
107
|
+
}
|
|
108
|
+
}), /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
109
|
+
name: "angle-down-o",
|
|
110
|
+
size: 20,
|
|
111
|
+
color: KColors.gray.normal
|
|
112
|
+
})]
|
|
113
|
+
})]
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
PinnedMessageBar.displayName = 'PinnedMessageBar';
|
|
117
|
+
const styles = StyleSheet.create({
|
|
118
|
+
container: {
|
|
119
|
+
flexDirection: 'row',
|
|
120
|
+
alignItems: 'center',
|
|
121
|
+
backgroundColor: KColors.palette.gray.w25
|
|
122
|
+
},
|
|
123
|
+
content: {
|
|
124
|
+
flex: 1,
|
|
125
|
+
paddingRight: KSpacingValue['0.75rem'],
|
|
126
|
+
paddingLeft: KSpacingValue['0.75rem'],
|
|
127
|
+
paddingVertical: KSpacingValue['0.25rem']
|
|
128
|
+
},
|
|
129
|
+
thumbnail: {
|
|
130
|
+
width: 51,
|
|
131
|
+
height: 51,
|
|
132
|
+
overflow: 'hidden',
|
|
133
|
+
backgroundColor: '#000'
|
|
134
|
+
},
|
|
135
|
+
videoOverlay: {
|
|
136
|
+
position: 'absolute',
|
|
137
|
+
top: 0,
|
|
138
|
+
left: 0,
|
|
139
|
+
right: 0,
|
|
140
|
+
bottom: 0,
|
|
141
|
+
backgroundColor: 'rgba(0, 0, 0, 0.25)'
|
|
142
|
+
},
|
|
143
|
+
fileIcon: {
|
|
144
|
+
width: 24,
|
|
145
|
+
height: 24
|
|
146
|
+
},
|
|
147
|
+
badge: {
|
|
148
|
+
minWidth: 32,
|
|
149
|
+
height: 22,
|
|
150
|
+
paddingHorizontal: KSpacingValue['0.25rem'],
|
|
151
|
+
borderRadius: KSpacingValue['1rem'],
|
|
152
|
+
alignItems: 'center',
|
|
153
|
+
justifyContent: 'center',
|
|
154
|
+
backgroundColor: KColors.primary.normal,
|
|
155
|
+
marginRight: KSpacingValue['0.75rem']
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=PinnedMessageBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useMemo","StyleSheet","KContainer","KImage","KLabel","KColors","KSpacingValue","KBadge","trans","getMessagePreview","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","length","latest","sender","sendID","senderNickname","remainingCount","subtitleKey","container","row","alignItems","flex","paddingR","content","Text","typo","numberOfLines","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,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { KContainer } from '@droppii/libs';
|
|
3
|
+
import { KContainer, KImage, KColors } from '@droppii/libs';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
4
5
|
import { memo, useMemo } from 'react';
|
|
5
6
|
import { MessageType } from '@droppii/openim-rn-client-sdk';
|
|
6
7
|
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
@@ -55,19 +56,55 @@ export const LegendChatMessage = /*#__PURE__*/memo(({
|
|
|
55
56
|
message: message,
|
|
56
57
|
isOutgoing: isOutgoing,
|
|
57
58
|
onRetry: onRetry
|
|
58
|
-
}), /*#__PURE__*/
|
|
59
|
-
|
|
60
|
-
children: /*#__PURE__*/_jsx(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
59
|
+
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
60
|
+
style: styles.content,
|
|
61
|
+
children: [/*#__PURE__*/_jsx(LongPressWrapper, {
|
|
62
|
+
onLongPress: onLongPress,
|
|
63
|
+
children: /*#__PURE__*/_jsx(MessageComponent, {
|
|
64
|
+
message: message,
|
|
65
|
+
isOutgoing: isOutgoing,
|
|
66
|
+
createdAtTime: createdAtTime,
|
|
67
|
+
onMediaPress: hasMediaPress ? onMediaPress : undefined,
|
|
68
|
+
onPressUrl: hasUrlPress ? onPressUrl : undefined
|
|
69
|
+
})
|
|
70
|
+
}), message?.isPinned && /*#__PURE__*/_jsx(KContainer.View, {
|
|
71
|
+
style: styles.pinBadge,
|
|
72
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
73
|
+
name: "thumbtack-b",
|
|
74
|
+
size: 12,
|
|
75
|
+
color: KColors.primary.normal
|
|
76
|
+
})
|
|
77
|
+
})]
|
|
67
78
|
})]
|
|
68
79
|
});
|
|
69
80
|
});
|
|
70
81
|
LegendChatMessage.displayName = 'LegendChatMessage';
|
|
82
|
+
const styles = StyleSheet.create({
|
|
83
|
+
content: {
|
|
84
|
+
position: 'relative'
|
|
85
|
+
},
|
|
86
|
+
pinBadge: {
|
|
87
|
+
position: 'absolute',
|
|
88
|
+
top: -8,
|
|
89
|
+
right: -8,
|
|
90
|
+
width: 24,
|
|
91
|
+
height: 20,
|
|
92
|
+
borderRadius: 100,
|
|
93
|
+
alignItems: 'center',
|
|
94
|
+
justifyContent: 'center',
|
|
95
|
+
backgroundColor: KColors.pageBackground,
|
|
96
|
+
shadowColor: KColors.black,
|
|
97
|
+
shadowOffset: {
|
|
98
|
+
width: 0,
|
|
99
|
+
height: 1
|
|
100
|
+
},
|
|
101
|
+
shadowOpacity: 0.15,
|
|
102
|
+
shadowRadius: 2,
|
|
103
|
+
elevation: 3,
|
|
104
|
+
borderWidth: 1,
|
|
105
|
+
borderColor: KColors.white
|
|
106
|
+
}
|
|
107
|
+
});
|
|
71
108
|
const LongPressWrapper = ({
|
|
72
109
|
children,
|
|
73
110
|
onLongPress
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["KContainer","memo","useMemo","MessageType","Gesture","GestureDetector","runOnJS","TextMessage","ImageMessage","VideoMessage","FileMessage","LinkMessage","MergedMessage","RevokedMessage","MessageStatusIndicator","messageStyles","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","LongPressWrapper","undefined","displayName","longPressGesture","LongPress","onStart","gesture"],"sourceRoot":"../../../../../src","sources":["screens/chat-detail/legend/LegendChatMessage.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,eAAe;
|
|
1
|
+
{"version":3,"names":["KContainer","KImage","KColors","StyleSheet","memo","useMemo","MessageType","Gesture","GestureDetector","runOnJS","TextMessage","ImageMessage","VideoMessage","FileMessage","LinkMessage","MergedMessage","RevokedMessage","MessageStatusIndicator","messageStyles","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","longPressGesture","LongPress","onStart","gesture"],"sourceRoot":"../../../../../src","sources":["screens/chat-detail/legend/LegendChatMessage.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,10 +9,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
9
9
|
export const MessageToolboxMenu = /*#__PURE__*/memo(({
|
|
10
10
|
showCopyMessage,
|
|
11
11
|
showCopyMessageLink,
|
|
12
|
+
showPinMessage,
|
|
13
|
+
showUnpinMessage,
|
|
12
14
|
showRetryMessage,
|
|
13
15
|
showRevokeMessage,
|
|
14
16
|
onCopyMessage,
|
|
15
17
|
onCopyMessageLink,
|
|
18
|
+
onPinMessage,
|
|
19
|
+
onUnpinMessage,
|
|
16
20
|
onRetryMessage,
|
|
17
21
|
onRevokeMessage
|
|
18
22
|
}) => {
|
|
@@ -30,6 +34,18 @@ export const MessageToolboxMenu = /*#__PURE__*/memo(({
|
|
|
30
34
|
label: trans('chat:copy_message_link'),
|
|
31
35
|
visible: showCopyMessageLink,
|
|
32
36
|
onPress: onCopyMessageLink
|
|
37
|
+
}), /*#__PURE__*/_jsx(MessageToolboxItem, {
|
|
38
|
+
icon: "thumbtack-o",
|
|
39
|
+
color: KColors.gray.dark,
|
|
40
|
+
label: trans('chat:pin_message'),
|
|
41
|
+
visible: showPinMessage,
|
|
42
|
+
onPress: onPinMessage
|
|
43
|
+
}), /*#__PURE__*/_jsx(MessageToolboxItem, {
|
|
44
|
+
icon: "thumbtack-off-o",
|
|
45
|
+
color: KColors.gray.dark,
|
|
46
|
+
label: trans('chat:unpin_message'),
|
|
47
|
+
visible: showUnpinMessage,
|
|
48
|
+
onPress: onUnpinMessage
|
|
33
49
|
}), /*#__PURE__*/_jsx(MessageToolboxItem, {
|
|
34
50
|
icon: "arrow-reload-o",
|
|
35
51
|
color: KColors.danger.normal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","StyleSheet","KContainer","KColors","KSpacingValue","trans","MessageToolboxItem","jsx","_jsx","jsxs","_jsxs","MessageToolboxMenu","showCopyMessage","showCopyMessageLink","showRetryMessage","showRevokeMessage","onCopyMessage","onCopyMessageLink","onRetryMessage","onRevokeMessage","View","style","styles","card","children","icon","color","gray","dark","label","visible","onPress","danger","normal","displayName","create","minWidth","paddingVertical","borderRadius","backgroundColor","white","shadowColor","black","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","row","flexDirection","alignItems","paddingHorizontal"],"sourceRoot":"../../../../../src","sources":["screens/chat-detail/messageToolbox/MessageToolboxMenu.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,EAAEC,OAAO,EAAEC,aAAa,QAAQ,eAAe;AAClE,SAASC,KAAK,QAAQ,+BAAsB;AAC5C,SAASC,kBAAkB,QAAQ,yBAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;
|
|
1
|
+
{"version":3,"names":["memo","StyleSheet","KContainer","KColors","KSpacingValue","trans","MessageToolboxItem","jsx","_jsx","jsxs","_jsxs","MessageToolboxMenu","showCopyMessage","showCopyMessageLink","showPinMessage","showUnpinMessage","showRetryMessage","showRevokeMessage","onCopyMessage","onCopyMessageLink","onPinMessage","onUnpinMessage","onRetryMessage","onRevokeMessage","View","style","styles","card","children","icon","color","gray","dark","label","visible","onPress","danger","normal","displayName","create","minWidth","paddingVertical","borderRadius","backgroundColor","white","shadowColor","black","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","row","flexDirection","alignItems","paddingHorizontal"],"sourceRoot":"../../../../../src","sources":["screens/chat-detail/messageToolbox/MessageToolboxMenu.tsx"],"mappings":"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","ignoreList":[]}
|