@droppii-org/chat-mobile 0.2.104 → 0.2.106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/lib/module/components/TypingDots/TypingDots.js +131 -0
  2. package/lib/module/components/TypingDots/TypingDots.js.map +1 -0
  3. package/lib/module/components/TypingDots/index.js +4 -0
  4. package/lib/module/components/TypingDots/index.js.map +1 -0
  5. package/lib/module/core/useChatListener.js +26 -2
  6. package/lib/module/core/useChatListener.js.map +1 -1
  7. package/lib/module/hooks/groups/useGroupMemberName.js +32 -0
  8. package/lib/module/hooks/groups/useGroupMemberName.js.map +1 -0
  9. package/lib/module/hooks/query-keys.js +2 -1
  10. package/lib/module/hooks/query-keys.js.map +1 -1
  11. package/lib/module/hooks/useInputState.js +38 -0
  12. package/lib/module/hooks/useInputState.js.map +1 -0
  13. package/lib/module/hooks/useInputStateBroadcast.js +53 -0
  14. package/lib/module/hooks/useInputStateBroadcast.js.map +1 -0
  15. package/lib/module/screens/chat-detail/ChatComposer.js +17 -4
  16. package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
  17. package/lib/module/screens/chat-detail/ChatListLegend.js +2 -1
  18. package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
  19. package/lib/module/screens/chat-detail/ChatTypingIndicator.js +86 -0
  20. package/lib/module/screens/chat-detail/ChatTypingIndicator.js.map +1 -0
  21. package/lib/module/screens/chat-detail/components/ChatMessageInput.js +14 -10
  22. package/lib/module/screens/chat-detail/components/ChatMessageInput.js.map +1 -1
  23. package/lib/module/store/index.js +1 -0
  24. package/lib/module/store/index.js.map +1 -1
  25. package/lib/module/store/inputState.js +64 -0
  26. package/lib/module/store/inputState.js.map +1 -0
  27. package/lib/module/translation/resources/i18n.js +2 -0
  28. package/lib/module/translation/resources/i18n.js.map +1 -1
  29. package/lib/module/utils/inputState.js +77 -0
  30. package/lib/module/utils/inputState.js.map +1 -0
  31. package/lib/module/utils/message.js +9 -0
  32. package/lib/module/utils/message.js.map +1 -1
  33. package/lib/typescript/src/components/TypingDots/TypingDots.d.ts +14 -0
  34. package/lib/typescript/src/components/TypingDots/TypingDots.d.ts.map +1 -0
  35. package/lib/typescript/src/components/TypingDots/index.d.ts +3 -0
  36. package/lib/typescript/src/components/TypingDots/index.d.ts.map +1 -0
  37. package/lib/typescript/src/core/useChatListener.d.ts.map +1 -1
  38. package/lib/typescript/src/hooks/groups/useGroupMemberName.d.ts +10 -0
  39. package/lib/typescript/src/hooks/groups/useGroupMemberName.d.ts.map +1 -0
  40. package/lib/typescript/src/hooks/query-keys.d.ts +1 -0
  41. package/lib/typescript/src/hooks/query-keys.d.ts.map +1 -1
  42. package/lib/typescript/src/hooks/useInputState.d.ts +21 -0
  43. package/lib/typescript/src/hooks/useInputState.d.ts.map +1 -0
  44. package/lib/typescript/src/hooks/useInputStateBroadcast.d.ts +14 -0
  45. package/lib/typescript/src/hooks/useInputStateBroadcast.d.ts.map +1 -0
  46. package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
  47. package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
  48. package/lib/typescript/src/screens/chat-detail/ChatTypingIndicator.d.ts +8 -0
  49. package/lib/typescript/src/screens/chat-detail/ChatTypingIndicator.d.ts.map +1 -0
  50. package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts +3 -1
  51. package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts.map +1 -1
  52. package/lib/typescript/src/store/index.d.ts +1 -0
  53. package/lib/typescript/src/store/index.d.ts.map +1 -1
  54. package/lib/typescript/src/store/inputState.d.ts +18 -0
  55. package/lib/typescript/src/store/inputState.d.ts.map +1 -0
  56. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  57. package/lib/typescript/src/utils/inputState.d.ts +54 -0
  58. package/lib/typescript/src/utils/inputState.d.ts.map +1 -0
  59. package/lib/typescript/src/utils/message.d.ts +8 -0
  60. package/lib/typescript/src/utils/message.d.ts.map +1 -1
  61. package/package.json +2 -2
  62. package/src/components/TypingDots/TypingDots.tsx +172 -0
  63. package/src/components/TypingDots/index.ts +2 -0
  64. package/src/core/useChatListener.ts +35 -1
  65. package/src/hooks/groups/useGroupMemberName.ts +31 -0
  66. package/src/hooks/query-keys.ts +2 -0
  67. package/src/hooks/useInputState.ts +57 -0
  68. package/src/hooks/useInputStateBroadcast.ts +53 -0
  69. package/src/screens/chat-detail/ChatComposer.tsx +18 -2
  70. package/src/screens/chat-detail/ChatListLegend.tsx +2 -0
  71. package/src/screens/chat-detail/ChatTypingIndicator.tsx +89 -0
  72. package/src/screens/chat-detail/components/ChatMessageInput.tsx +10 -7
  73. package/src/store/index.ts +1 -0
  74. package/src/store/inputState.ts +76 -0
  75. package/src/translation/resources/i18n.ts +2 -0
  76. package/src/utils/inputState.ts +104 -0
  77. package/src/utils/message.ts +15 -0
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ import { memo, useEffect } from 'react';
4
+ import Animated, { Easing, useAnimatedProps, useReducedMotion, useSharedValue, withDelay, withRepeat, withSequence, withSpring, withTiming } from 'react-native-reanimated';
5
+ import Svg, { G, Rect } from 'react-native-svg';
6
+
7
+ /**
8
+ * The three bouncing dots from `assets/images/typing_indicator.svg`.
9
+ *
10
+ * SVGR cannot carry this one over: the motion lives in a `<style>` block of
11
+ * `@keyframes`, which it drops ("elements not supported by react-native-svg"),
12
+ * leaving `style={{ animation: ... }}` props pointing at rules that no longer
13
+ * exist. react-native-svg has no CSS animation engine either, so the keyframes
14
+ * are re-expressed here as reanimated timelines instead.
15
+ */
16
+ import { jsx as _jsx } from "react/jsx-runtime";
17
+ const VIEW_WIDTH = 48;
18
+ const VIEW_HEIGHT = 20;
19
+ const DOT_SIZE = 8;
20
+ /** x of each dot in the source — `translate(6 6)`, `(20 6)`, `(34 6)`. */
21
+ const DOT_X = [6, 20, 34];
22
+ const DOT_Y = 6;
23
+ /** The `translateY(-6px)` keyframe. */
24
+ const LIFT = 6;
25
+ const CYCLE_MS = 3150;
26
+ /** 7.14% of the cycle — the gap between one dot bouncing and the next. */
27
+ const BOUNCE_MS = CYCLE_MS / 14;
28
+ /** 14.29% of the cycle — one step of the opacity wave. */
29
+ const FADE_STEP_MS = CYCLE_MS / 7;
30
+ const FADE_STEPS = 7;
31
+ const HOLD_SHORT_MS = 900; // 14.29% → 42.86%
32
+ const HOLD_LONG_MS = 1350; // 57.14% → 100%
33
+
34
+ /** The three alpha levels the wave cycles through. */
35
+ const ALPHAS = [0.2, 0.35, 0.5];
36
+
37
+ /** The source's own colour, used when the caller does not pass one. */
38
+ const DEFAULT_FILL = '#1A1D22';
39
+ const RISE = {
40
+ duration: BOUNCE_MS,
41
+ easing: Easing.out(Easing.ease)
42
+ };
43
+
44
+ /**
45
+ * The fall, not the rise, carries the character here: the source's `linear()`
46
+ * curve peaks at 1.364, so a dot dips 36.4% past its resting line before
47
+ * settling. A spring's first overshoot is exp(-piZ / sqrt(1 - Z^2)), which
48
+ * lands on 36.4% at a damping ratio of ~0.306 — 0.5 would reach only 16%,
49
+ * visibly flatter than drawn.
50
+ *
51
+ * `duration` matters as much as the ratio: a default spring settles whenever it
52
+ * settles, which would break the fixed-length cycle the two tracks share.
53
+ */
54
+ const FALL = {
55
+ duration: BOUNCE_MS,
56
+ dampingRatio: 0.306
57
+ };
58
+ const AnimatedRect = Animated.createAnimatedComponent(Rect);
59
+ const Dot = /*#__PURE__*/memo(({
60
+ index
61
+ }) => {
62
+ const reducedMotion = useReducedMotion();
63
+ const lift = useSharedValue(0);
64
+ const alpha = useSharedValue(ALPHAS[index % ALPHAS.length]);
65
+ useEffect(() => {
66
+ if (reducedMotion) return;
67
+
68
+ // Two bounces per cycle. A dot's turn comes one BOUNCE_MS after the one
69
+ // before it, and that delay applies only to the first pass — every
70
+ // iteration runs exactly CYCLE_MS, so the offset holds instead of drifting.
71
+ lift.value = withDelay(index * BOUNCE_MS, withRepeat(withSequence(withTiming(-LIFT, RISE), withSpring(0, FALL), withTiming(0, {
72
+ duration: HOLD_SHORT_MS
73
+ }), withTiming(-LIFT, RISE), withSpring(0, FALL), withTiming(0, {
74
+ duration: HOLD_LONG_MS
75
+ })), -1));
76
+
77
+ // The opacity wave needs no delay: each dot enters the cycle at a different
78
+ // alpha instead, which is how the source staggers it.
79
+ alpha.value = withRepeat(withSequence(...Array.from({
80
+ length: FADE_STEPS
81
+ }, (_, step) => withTiming(ALPHAS[(index + step + 1) % ALPHAS.length], {
82
+ duration: FADE_STEP_MS,
83
+ easing: Easing.inOut(Easing.ease)
84
+ }))), -1);
85
+ }, [index, lift, alpha, reducedMotion]);
86
+
87
+ // Driven as SVG attributes rather than a style transform: react-native-svg
88
+ // maps these straight onto the native node, keeping the work off the JS
89
+ // thread. `y` also replaces the source's stacked translateY pair.
90
+ const animatedProps = useAnimatedProps(() => ({
91
+ y: DOT_Y + lift.value,
92
+ fillOpacity: alpha.value
93
+ }));
94
+ return /*#__PURE__*/_jsx(AnimatedRect, {
95
+ x: DOT_X[index],
96
+ width: DOT_SIZE,
97
+ height: DOT_SIZE
98
+ // The file says rx="50"; SVG clamps that to half the width. Stating the
99
+ // clamped value keeps the circle from depending on that behaviour.
100
+ ,
101
+ rx: DOT_SIZE / 2,
102
+ animatedProps: animatedProps
103
+ });
104
+ });
105
+ Dot.displayName = 'TypingDots.Dot';
106
+ export const TypingDots = /*#__PURE__*/memo(({
107
+ fill = DEFAULT_FILL,
108
+ width = VIEW_WIDTH,
109
+ height = VIEW_HEIGHT,
110
+ ...props
111
+ }) =>
112
+ /*#__PURE__*/
113
+ // No `overflow="visible"` despite the source setting it: a dot runs from
114
+ // y=0 at the top of its bounce to y=16.23 at the bottom of the overshoot,
115
+ // so nothing leaves the 48x20 box. Leaning on overflow would be the fragile
116
+ // choice — react-native-svg does not honour it consistently on Android.
117
+ _jsx(Svg, {
118
+ width: width,
119
+ height: height,
120
+ viewBox: `0 0 ${VIEW_WIDTH} ${VIEW_HEIGHT}`,
121
+ fill: "none",
122
+ ...props,
123
+ children: /*#__PURE__*/_jsx(G, {
124
+ fill: fill,
125
+ children: DOT_X.map((_, index) => /*#__PURE__*/_jsx(Dot, {
126
+ index: index
127
+ }, index))
128
+ })
129
+ }));
130
+ TypingDots.displayName = 'TypingDots';
131
+ //# sourceMappingURL=TypingDots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useEffect","Animated","Easing","useAnimatedProps","useReducedMotion","useSharedValue","withDelay","withRepeat","withSequence","withSpring","withTiming","Svg","G","Rect","jsx","_jsx","VIEW_WIDTH","VIEW_HEIGHT","DOT_SIZE","DOT_X","DOT_Y","LIFT","CYCLE_MS","BOUNCE_MS","FADE_STEP_MS","FADE_STEPS","HOLD_SHORT_MS","HOLD_LONG_MS","ALPHAS","DEFAULT_FILL","RISE","duration","easing","out","ease","FALL","dampingRatio","AnimatedRect","createAnimatedComponent","Dot","index","reducedMotion","lift","alpha","length","value","Array","from","_","step","inOut","animatedProps","y","fillOpacity","x","width","height","rx","displayName","TypingDots","fill","props","viewBox","children","map"],"sourceRoot":"../../../../src","sources":["components/TypingDots/TypingDots.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { TypingDots } from "./TypingDots.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TypingDots"],"sourceRoot":"../../../../src","sources":["components/TypingDots/index.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,iBAAc","ignoreList":[]}
@@ -11,7 +11,8 @@ import { useChatContext } from "../context/index.js";
11
11
  import isEmpty from 'lodash/isEmpty';
12
12
  import { markMessageRevoked, useMessageStore } from "../store/message.js";
13
13
  import { syncPinnedMessagesOnEvent } from "../hooks/message/usePinMessage.js";
14
- import { belongsToConversation } from "../utils/message.js";
14
+ import { belongsToConversation, conversationIdsOfMessage } from "../utils/message.js";
15
+ import { useInputStateStore } from "../store/inputState.js";
15
16
  import { getConversationID } from "../utils/conversation.js";
16
17
  import { clearSelfExitedGroup } from "../utils/groupExit.js";
17
18
  import { DeviceEventEmitter } from 'react-native';
@@ -241,8 +242,29 @@ export const useChatListener = () => {
241
242
  }
242
243
  syncPinnedMessagesOnEvent(messagePinned.conversationID);
243
244
  }, [updateOneMessage]);
245
+ const onInputStatusChanged = useCallback(status => {
246
+ // Never reflect the viewer's own composing back at them.
247
+ if (!status?.userID || status.userID === currentUserId) return;
248
+
249
+ // Stored for every conversation, not just the open one: the thread list
250
+ // shows typing for threads the user is not currently inside, and the
251
+ // store is keyed by conversation so each reader takes only its own.
252
+ useInputStateStore.getState().applyInputStatus(status);
253
+ }, [currentUserId]);
244
254
  const onRecvNewMessages = useCallback(messages => {
245
255
  // console.log('[Listener] OnRecvNewMessages', messages);
256
+ // A sender whose message just arrived has stopped composing. Runs over
257
+ // every message and above the guards below, because typing is tracked for
258
+ // all conversations rather than only the open one — and those guards bail
259
+ // outright while the user is sitting on the inbox.
260
+ const {
261
+ removeTyper
262
+ } = useInputStateStore.getState();
263
+ for (const message of messages) {
264
+ const senderId = message.sendID;
265
+ if (!senderId) continue;
266
+ conversationIdsOfMessage(message).forEach(id => removeTyper(id, senderId));
267
+ }
246
268
  const conversationId = useConversationStore.getState().currentConversationId;
247
269
  const targetUserId = useConversationStore.getState().currentUserId;
248
270
  if (!conversationId && !targetUserId) return;
@@ -273,6 +295,7 @@ export const useChatListener = () => {
273
295
  OpenIMSDK.on(OpenIMEvent.OnNewRecvMessageRevoked, onMessageRevoked);
274
296
  OpenIMSDK.on(OpenIMEvent.OnRecvMessagePinned, onMessagePinned);
275
297
  OpenIMSDK.on(OpenIMEvent.OnRecvNewMessages, onRecvNewMessages);
298
+ OpenIMSDK.on(OpenIMEvent.OnInputStatusChanged, onInputStatusChanged);
276
299
  OpenIMSDK.on(OpenIMEvent.OnRecvOfflineNewMessages, onRecvOfflineNewMessages);
277
300
  return () => {
278
301
  // Conversation
@@ -292,10 +315,11 @@ export const useChatListener = () => {
292
315
  // Message status
293
316
  OpenIMSDK.off(OpenIMEvent.SendMessageProgress, onSendMessageProgress);
294
317
  OpenIMSDK.off(OpenIMEvent.OnRecvNewMessages, onRecvNewMessages);
318
+ OpenIMSDK.off(OpenIMEvent.OnInputStatusChanged, onInputStatusChanged);
295
319
  OpenIMSDK.off(OpenIMEvent.OnNewRecvMessageRevoked, onMessageRevoked);
296
320
  OpenIMSDK.off(OpenIMEvent.OnRecvMessagePinned, onMessagePinned);
297
321
  OpenIMSDK.off(OpenIMEvent.OnRecvOfflineNewMessages, onRecvOfflineNewMessages);
298
322
  };
299
- }, [onConversationChanged, onGroupInfoChanged, onGroupMemberAdded, onGroupMemberDeleted, onMessagePinned, onMessageRevoked, onNewConversation, onSendMessageProgress, onRecvNewMessages, onRecvOfflineNewMessages, OnGroupMemberInfoChanged, onJoinedGroupDeleted, onGroupDismissed, onJoinedGroupAdded, onGroupApplicationAdded]);
323
+ }, [onConversationChanged, onGroupInfoChanged, onGroupMemberAdded, onGroupMemberDeleted, onMessagePinned, onMessageRevoked, onNewConversation, onSendMessageProgress, onRecvNewMessages, onInputStatusChanged, onRecvOfflineNewMessages, OnGroupMemberInfoChanged, onJoinedGroupDeleted, onGroupDismissed, onJoinedGroupAdded, onGroupApplicationAdded]);
300
324
  };
301
325
  //# sourceMappingURL=useChatListener.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["OpenIMSDK","MessageReceiveOptType","MessageType","OpenIMEvent","PeerType","SessionType","useQueryClient","useCallback","useEffect","useConversationStore","ToastFlashMessage","useUserStore","getLastMessageText","GROUP_NOTIFICATION_TYPES","useChatContext","isEmpty","markMessageRevoked","useMessageStore","syncPinnedMessagesOnEvent","belongsToConversation","getConversationID","clearSelfExitedGroup","DeviceEventEmitter","ChatEvent","conversationQueryKeys","groupQueryKeys","useChatListener","updateOneMessage","state","currentUserId","s","user","userID","onPressFlashMessage","isShowFLashMessage","queryClient","onSendMessageProgress","progress","_progress","message","onConversationChanged","conversations","oldMap","getState","map","visibleConversations","conversation","latestMsg","JSON","parse","isNoiseMessage","isInternal","contentType","LogTextMessage","peerType","Bot","includes","push","recvMsgOpt","NotNotify","conversationID","latestMsgSendTime","lastMessageText","hideSenderPrefixForDirectChat","show","key","title","showName","body","avatarUrl","faceURL","ellipsizeMiddle","FileMessage","onPress","hide","updateConversations","onNewConversation","onGroupInfoChanged","group","setQueryData","groupInfo","groupID","onGroupMemberAdded","member","invalidateQueries","queryKey","removeGroupConversation","groupName","reason","console","log","Group","isCurrentConversation","currentConversationId","deleteConversationAndDeleteAllMsg","catch","error","hideConversation","removeQueries","joinedGroup","public","exact","emit","GroupRemoved","onGroupMemberDeleted","undefined","onJoinedGroupDeleted","onGroupDismissed","OnGroupMemberInfoChanged","getCurrentConversation","GroupPermissionUpdated","nickname","roleLevel","permissions","ex","markGroupJoined","updateConversation","isNotInGroup","lists","setQueriesData","old","pages","page","groups","g","isJoined","onJoinedGroupAdded","onGroupApplicationAdded","application","onMessageRevoked","revokedInfo","clientMsgID","onMessagePinned","messagePinned","isPinned","pinnedByUserID","operatorUserID","pinnedTime","onRecvNewMessages","messages","conversationId","targetUserId","relevant","filter","length","forEach","msg","pushNewMessage","onRecvOfflineNewMessages","_messages","on","OnConversationChanged","OnNewConversation","OnGroupInfoChanged","OnGroupMemberAdded","OnGroupMemberDeleted","OnJoinedGroupDeleted","OnGroupDismissed","OnJoinedGroupAdded","OnGroupApplicationAdded","SendMessageProgress","OnNewRecvMessageRevoked","OnRecvMessagePinned","OnRecvNewMessages","OnRecvOfflineNewMessages","off"],"sourceRoot":"../../../src","sources":["core/useChatListener.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["OpenIMSDK","MessageReceiveOptType","MessageType","OpenIMEvent","PeerType","SessionType","useQueryClient","useCallback","useEffect","useConversationStore","ToastFlashMessage","useUserStore","getLastMessageText","GROUP_NOTIFICATION_TYPES","useChatContext","isEmpty","markMessageRevoked","useMessageStore","syncPinnedMessagesOnEvent","belongsToConversation","conversationIdsOfMessage","useInputStateStore","getConversationID","clearSelfExitedGroup","DeviceEventEmitter","ChatEvent","conversationQueryKeys","groupQueryKeys","useChatListener","updateOneMessage","state","currentUserId","s","user","userID","onPressFlashMessage","isShowFLashMessage","queryClient","onSendMessageProgress","progress","_progress","message","onConversationChanged","conversations","oldMap","getState","map","visibleConversations","conversation","latestMsg","JSON","parse","isNoiseMessage","isInternal","contentType","LogTextMessage","peerType","Bot","includes","push","recvMsgOpt","NotNotify","conversationID","latestMsgSendTime","lastMessageText","hideSenderPrefixForDirectChat","show","key","title","showName","body","avatarUrl","faceURL","ellipsizeMiddle","FileMessage","onPress","hide","updateConversations","onNewConversation","onGroupInfoChanged","group","setQueryData","groupInfo","groupID","onGroupMemberAdded","member","invalidateQueries","queryKey","removeGroupConversation","groupName","reason","console","log","Group","isCurrentConversation","currentConversationId","deleteConversationAndDeleteAllMsg","catch","error","hideConversation","removeQueries","joinedGroup","public","exact","emit","GroupRemoved","onGroupMemberDeleted","undefined","onJoinedGroupDeleted","onGroupDismissed","OnGroupMemberInfoChanged","getCurrentConversation","GroupPermissionUpdated","nickname","roleLevel","permissions","ex","markGroupJoined","updateConversation","isNotInGroup","lists","setQueriesData","old","pages","page","groups","g","isJoined","onJoinedGroupAdded","onGroupApplicationAdded","application","onMessageRevoked","revokedInfo","clientMsgID","onMessagePinned","messagePinned","isPinned","pinnedByUserID","operatorUserID","pinnedTime","onInputStatusChanged","status","applyInputStatus","onRecvNewMessages","messages","removeTyper","senderId","sendID","forEach","id","conversationId","targetUserId","relevant","filter","length","msg","pushNewMessage","onRecvOfflineNewMessages","_messages","on","OnConversationChanged","OnNewConversation","OnGroupInfoChanged","OnGroupMemberAdded","OnGroupMemberDeleted","OnJoinedGroupDeleted","OnGroupDismissed","OnJoinedGroupAdded","OnGroupApplicationAdded","SendMessageProgress","OnNewRecvMessageRevoked","OnRecvMessagePinned","OnRecvNewMessages","OnInputStatusChanged","OnRecvOfflineNewMessages","off"],"sourceRoot":"../../../src","sources":["core/useChatListener.ts"],"mappings":";;AAAA,OAAOA,SAAS,IACdC,qBAAqB,EACrBC,WAAW,EACXC,WAAW,EACXC,QAAQ,EACRC,WAAW,QASN,+BAA+B;AACtC,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,WAAW,EAAEC,SAAS,QAAQ,OAAO;AAC9C,SAASC,oBAAoB,QAAQ,0BAAuB;AAC5D,SAASC,iBAAiB,QAAQ,+BAA4B;AAC9D,SAASC,YAAY,QAAQ,kBAAe;AAC5C,SACEC,kBAAkB,EAClBC,wBAAwB,QACnB,0BAAuB;AAC9B,SAASC,cAAc,QAAQ,qBAAY;AAC3C,OAAOC,OAAO,MAAM,gBAAgB;AACpC,SAASC,kBAAkB,EAAEC,eAAe,QAAQ,qBAAkB;AACtE,SAASC,yBAAyB,QAAQ,mCAAgC;AAC1E,SACEC,qBAAqB,EACrBC,wBAAwB,QACnB,qBAAkB;AACzB,SAASC,kBAAkB,QAAQ,wBAAqB;AACxD,SAASC,iBAAiB,QAAQ,0BAAuB;AACzD,SAASC,oBAAoB,QAAQ,uBAAoB;AACzD,SAASC,kBAAkB,QAAQ,cAAc;AACjD,SAASC,SAAS,QAAQ,oBAAiB;AAC3C,SAASC,qBAAqB,EAAEC,cAAc,QAAQ,wBAAqB;AAE3E,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAMC,gBAAgB,GAAGZ,eAAe,CAAEa,KAAK,IAAKA,KAAK,CAACD,gBAAgB,CAAC;EAC3E,MAAME,aAAa,GAAGpB,YAAY,CAAEqB,CAAC,IAAKA,CAAC,CAACC,IAAI,EAAEC,MAAM,CAAC;EACzD,MAAMC,mBAAmB,GAAGrB,cAAc,CAAC,CAAC,EAAEqB,mBAAmB;EACjE,MAAMC,kBAAkB,GAAGtB,cAAc,CAAC,CAAC,EAAEsB,kBAAkB;EAC/D,MAAMC,WAAW,GAAG/B,cAAc,CAAC,CAAC;EAEpC,MAAMgC,qBAAqB,GAAG/B,WAAW,CACvC,CAAC;IACCgC,QAAQ,EAAEC,SAAS;IACnBC;EAIF,CAAC,KAAK;IACJ;IACA;IACA;IACA;IACA;IACAZ,gBAAgB,CAACY,OAAO,CAAC;EAC3B,CAAC,EACD,CAACZ,gBAAgB,CACnB,CAAC;EAED,MAAMa,qBAAqB,GAAGnC,WAAW,CACtCoC,aAAiC,IAAK;IACrC;;IAEA;IACA,MAAMC,MAAM,GAAGnC,oBAAoB,CAACoC,QAAQ,CAAC,CAAC,CAACC,GAAG;IAClD,MAAMC,oBAAwC,GAAG,EAAE;IAEnD,KAAK,MAAMC,YAAY,IAAIL,aAAa,EAAE;MACxC,MAAMM,SAA6B,GAAGD,YAAY,CAACC,SAAS,GACxDC,IAAI,CAACC,KAAK,CAACH,YAAY,CAACC,SAAS,CAAC,GAClC,IAAI;MACR;;MAEA;MACA;MACA;MACA,MAAMG,cAAc,GAClB,CAAC,CAACH,SAAS,EAAEI,UAAU,IACvBJ,SAAS,EAAEK,WAAW,KAAKpD,WAAW,CAACqD,cAAc,IACpDP,YAAY,EAAEQ,QAAQ,KAAKpD,QAAQ,CAACqD,GAAG,IACtC,CAAC,CAACR,SAAS,IACXpC,wBAAwB,CAAC6C,QAAQ,CAACT,SAAS,EAAEK,WAAW,CAAE;MAC9D,IAAIF,cAAc,EAAE;MAEpBL,oBAAoB,CAACY,IAAI,CAACX,YAAY,CAAC;MAEvC,IACEZ,kBAAkB,IAClB,CAACrB,OAAO,CAACiC,YAAY,CAACC,SAAS,CAAC,IAChCD,YAAY,CAACY,UAAU,KAAK3D,qBAAqB,CAAC4D,SAAS,IAC3DZ,SAAS,IACTL,MAAM,CAACI,YAAY,CAACc,cAAc,CAAC,EAAEC,iBAAiB,KACpDf,YAAY,CAACe,iBAAiB,EAChC;QACA,MAAMC,eAAe,GAAGpD,kBAAkB,CAAC;UACzC6B,OAAO,EAAEQ,SAAS;UAClBlB,aAAa;UACbiB,YAAY;UACZiB,6BAA6B,EAAE;QACjC,CAAC,CAAC;QACFvD,iBAAiB,CAACwD,IAAI,CAAC;UACrBC,GAAG,EAAEnB,YAAY,CAACc,cAAc;UAChCM,KAAK,EAAEpB,YAAY,CAACqB,QAAQ,IAAI,aAAa;UAC7CC,IAAI,EAAEN,eAAe;UACrBO,SAAS,EAAEvB,YAAY,EAAEwB,OAAO;UAChCC,eAAe,EAAExB,SAAS,CAACK,WAAW,KAAKpD,WAAW,CAACwE,WAAW;UAClEC,OAAO,EAAEA,CAAA,KAAM;YACbjE,iBAAiB,CAACkE,IAAI,CAAC5B,YAAY,CAACc,cAAc,CAAC;YACnD3B,mBAAmB,GAAGa,YAAY,CAAC;UACrC;QACF,CAAC,CAAC;MACJ;IACF;IAEAvC,oBAAoB,CAACoC,QAAQ,CAAC,CAAC,CAACgC,mBAAmB,CAAC9B,oBAAoB,CAAC;EAC3E,CAAC,EACD,CAAChB,aAAa,EAAEK,kBAAkB,EAAED,mBAAmB,CACzD,CAAC;EAED,MAAM2C,iBAAiB,GAAGvE,WAAW,CAAEoC,aAAiC,IAAK;IAC3E;IACAlC,oBAAoB,CAACoC,QAAQ,CAAC,CAAC,CAACgC,mBAAmB,CAAClC,aAAa,CAAC;EACpE,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMoC,kBAAkB,GAAGxE,WAAW,CACnCyE,KAAgB,IAAK;IACpB;IACA;IACA;IACA;IACA3C,WAAW,CAAC4C,YAAY,CACtBvD,qBAAqB,CAACwD,SAAS,CAACF,KAAK,CAACG,OAAO,CAAC,EAC9CH,KACF,CAAC;EACH,CAAC,EACD,CAAC3C,WAAW,CACd,CAAC;EAED,MAAM+C,kBAAkB,GAAG7E,WAAW,CACnC8E,MAAuB,IAAK;IAC3B;IACA;IACA;IACA;IACA;IACAhD,WAAW,CAACiD,iBAAiB,CAAC;MAC5BC,QAAQ,EAAE7D,qBAAqB,CAACwD,SAAS,CAACG,MAAM,CAACF,OAAO;IAC1D,CAAC,CAAC;EACJ,CAAC,EACD,CAAC9C,WAAW,CACd,CAAC;EAED,MAAMmD,uBAAuB,GAAGjF,WAAW,CACzC,CACE4E,OAAe,EACfM,SAA6B,EAC7BC,MAAuC,KACpC;IACHC,OAAO,CAACC,GAAG,CAAC,oCAAoC,EAAE;MAAET,OAAO;MAAEO;IAAO,CAAC,CAAC;IAEtE,MAAM5B,cAAc,GAAGxC,iBAAiB,CAACjB,WAAW,CAACwF,KAAK,EAAEV,OAAO,CAAC;IACpE;IACA,MAAMW,qBAAqB,GACzBrF,oBAAoB,CAACoC,QAAQ,CAAC,CAAC,CAACkD,qBAAqB,KACrDjC,cAAc;IAEhBrD,oBAAoB,CAACoC,QAAQ,CAAC,CAAC,CAAC2C,uBAAuB,CAACL,OAAO,CAAC;IAEhE,IAAIO,MAAM,KAAK,WAAW,EAAE;MAC1B;MACA;MACA1F,SAAS,CAACgG,iCAAiC,CAAClC,cAAc,CAAC,CAACmC,KAAK,CAC9DC,KAAK,IAAK;QACTP,OAAO,CAACO,KAAK,CACX,gDAAgD,EAChDpC,cAAc,EACdoC,KACF,CAAC;MACH,CACF,CAAC;IACH,CAAC,MAAM,IAAIR,MAAM,KAAK,QAAQ,IAAIA,MAAM,KAAK,MAAM,EAAE;MACnDC,OAAO,CAACC,GAAG,CACT,kEAAkE,EAClE;QACET,OAAO;QACPrB;MACF,CACF,CAAC;MACD;MACA;MACA;MACA9D,SAAS,CAACmG,gBAAgB,CAACrC,cAAc,CAAC,CAACmC,KAAK,CAAEC,KAAK,IAAK;QAC1DP,OAAO,CAACO,KAAK,CACX,8CAA8C,EAC9CpC,cAAc,EACdoC,KACF,CAAC;MACH,CAAC,CAAC;IACJ;IAEA7D,WAAW,CAAC+D,aAAa,CAAC;MACxBb,QAAQ,EAAE7D,qBAAqB,CAACwD,SAAS,CAACC,OAAO;IACnD,CAAC,CAAC;IACF9C,WAAW,CAACiD,iBAAiB,CAAC;MAC5BC,QAAQ,EAAE7D,qBAAqB,CAAC2E,WAAW,CAAClB,OAAO;IACrD,CAAC,CAAC;IACF9C,WAAW,CAACiD,iBAAiB,CAAC;MAC5BC,QAAQ,EAAE5D,cAAc,CAAC2E,MAAM,CAAC,CAAC;MACjCC,KAAK,EAAE;IACT,CAAC,CAAC;;IAEF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA,IAAIT,qBAAqB,EAAE;MACzBtE,kBAAkB,CAACgF,IAAI,CAAC/E,SAAS,CAACgF,YAAY,EAAE;QAC9CtB,OAAO;QACPO;MACF,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACrD,WAAW,CACd,CAAC;EAED,MAAMqE,oBAAoB,GAAGnG,WAAW,CACrC8E,MAAuB,IAAK;IAC3BM,OAAO,CAACC,GAAG,CAAC,iCAAiC,EAAEP,MAAM,CAAC;IACtDhD,WAAW,CAACiD,iBAAiB,CAAC;MAC5BC,QAAQ,EAAE7D,qBAAqB,CAACwD,SAAS,CAACG,MAAM,CAACF,OAAO;IAC1D,CAAC,CAAC;;IAEF;IACA;IACA,IAAIE,MAAM,CAACnD,MAAM,KAAKH,aAAa,EAAE;MACnCyD,uBAAuB,CAACH,MAAM,CAACF,OAAO,EAAEwB,SAAS,EAAE,QAAQ,CAAC;IAC9D;EACF,CAAC,EACD,CAACtE,WAAW,EAAEN,aAAa,EAAEyD,uBAAuB,CACtD,CAAC;EAED,MAAMoB,oBAAoB,GAAGrG,WAAW,CACrCyE,KAAgB,IAAK;IACpBW,OAAO,CAACC,GAAG,CAAC,iCAAiC,EAAEZ,KAAK,CAAC;IACrDQ,uBAAuB,CAACR,KAAK,CAACG,OAAO,EAAEH,KAAK,CAACS,SAAS,EAAE,MAAM,CAAC;EACjE,CAAC,EACD,CAACD,uBAAuB,CAC1B,CAAC;EAED,MAAMqB,gBAAgB,GAAGtG,WAAW,CACjCyE,KAAgB,IAAK;IACpBW,OAAO,CAACC,GAAG,CAAC,6BAA6B,EAAE;MACzCT,OAAO,EAAEH,KAAK,CAACG,OAAO;MACtBM,SAAS,EAAET,KAAK,CAACS;IACnB,CAAC,CAAC;IACFD,uBAAuB,CAACR,KAAK,CAACG,OAAO,EAAEH,KAAK,CAACS,SAAS,EAAE,WAAW,CAAC;EACtE,CAAC,EACD,CAACD,uBAAuB,CAC1B,CAAC;EAED,MAAMsB,wBAAwB,GAAGvG,WAAW,CACzC8E,MAAuB,IAAK;IAC3BM,OAAO,CAACC,GAAG,CAAC,qCAAqC,EAAEP,MAAM,CAAC;IAC1D,MAAMrC,YAAY,GAAGvC,oBAAoB,CACtCoC,QAAQ,CAAC,CAAC,CACVkE,sBAAsB,CAAC,CAAC;IAC3B,IACE1B,MAAM,EAAEF,OAAO,KAAKnC,YAAY,EAAEmC,OAAO,IACzCE,MAAM,EAAEnD,MAAM,KAAKH,aAAa,EAChC;MACAP,kBAAkB,CAACgF,IAAI,CAAC/E,SAAS,CAACuF,sBAAsB,EAAE;QACxDC,QAAQ,EAAE5B,MAAM,CAAC4B,QAAQ;QACzBzC,OAAO,EAAEa,MAAM,CAACb,OAAO;QACvB0C,SAAS,EAAE7B,MAAM,CAAC6B,SAAS;QAC3BC,WAAW,EAAE9B,MAAM,CAAC8B,WAAW;QAC/BC,EAAE,EAAE/B,MAAM,CAAC+B;MACb,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACrF,aAAa,CAChB,CAAC;EAED,MAAMsF,eAAe,GAAG9G,WAAW,CAChC4E,OAAe,IAAK;IACnB;IACA5D,oBAAoB,CAAC4D,OAAO,CAAC;;IAE7B;IACA;IACA;IACA;IACA;IACA1E,oBAAoB,CACjBoC,QAAQ,CAAC,CAAC,CACVyE,kBAAkB,CAAChG,iBAAiB,CAACjB,WAAW,CAACwF,KAAK,EAAEV,OAAO,CAAC,EAAE;MACjEoC,YAAY,EAAE;IAChB,CAAC,CAAC;IAEJlF,WAAW,CAACiD,iBAAiB,CAAC;MAC5BC,QAAQ,EAAE7D,qBAAqB,CAAC2E,WAAW,CAAClB,OAAO;IACrD,CAAC,CAAC;IACF9C,WAAW,CAACiD,iBAAiB,CAAC;MAC5BC,QAAQ,EAAE7D,qBAAqB,CAAC8F,KAAK,CAAC;IACxC,CAAC,CAAC;IAEFnF,WAAW,CAACoF,cAAc,CAMvB;MAAElC,QAAQ,EAAE5D,cAAc,CAAC2E,MAAM,CAAC,CAAC;MAAEC,KAAK,EAAE;IAAM,CAAC,EAAGmB,GAAG,IAAK;MAC/D,IAAI,CAACA,GAAG,EAAE,OAAOA,GAAG;MACpB,OAAO;QACL,GAAGA,GAAG;QACNC,KAAK,EAAED,GAAG,CAACC,KAAK,CAAC7E,GAAG,CAAE8E,IAAI,KAAM;UAC9B,GAAGA,IAAI;UACPC,MAAM,EAAED,IAAI,CAACC,MAAM,CAAC/E,GAAG,CAAEgF,CAAC,IACxBA,CAAC,CAAC3C,OAAO,KAAKA,OAAO,GAAG;YAAE,GAAG2C,CAAC;YAAEC,QAAQ,EAAE;UAAK,CAAC,GAAGD,CACrD;QACF,CAAC,CAAC;MACJ,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,EACD,CAACzF,WAAW,CACd,CAAC;EAED,MAAM2F,kBAAkB,GAAGzH,WAAW,CACnCyE,KAAgB,IAAK;IACpBqC,eAAe,CAACrC,KAAK,CAACG,OAAO,CAAC;EAChC,CAAC,EACD,CAACkC,eAAe,CAClB,CAAC;EAED,MAAMY,uBAAuB,GAAG1H,WAAW,CACxC2H,WAAiC,IAAK;IACrCb,eAAe,CAACa,WAAW,CAAC/C,OAAO,CAAC;EACtC,CAAC,EACD,CAACkC,eAAe,CAClB,CAAC;EAED,MAAMc,gBAAgB,GAAG5H,WAAW,CAAE6H,WAAwB,IAAK;IACjEpH,kBAAkB,CAACoH,WAAW,CAACC,WAAW,CAAC;EAC7C,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,eAAe,GAAG/H,WAAW,CAChCgI,aAA4B,IAAK;IAChC,MAAMxC,qBAAqB,GACzBtF,oBAAoB,CAACoC,QAAQ,CAAC,CAAC,CAACkD,qBAAqB;IACvD,IAAIwC,aAAa,CAACzE,cAAc,KAAKiC,qBAAqB,EAAE;MAC1DlE,gBAAgB,CAAC;QACfwG,WAAW,EAAEE,aAAa,CAACF,WAAW;QACtCG,QAAQ,EAAED,aAAa,CAACC,QAAQ;QAChCC,cAAc,EAAEF,aAAa,CAACC,QAAQ,GAClCD,aAAa,CAACG,cAAc,GAC5B/B,SAAS;QACbgC,UAAU,EAAEJ,aAAa,CAACC,QAAQ,GAC9BD,aAAa,CAACI,UAAU,GACxBhC;MACN,CAAC,CAAC;IACJ;IACAzF,yBAAyB,CAACqH,aAAa,CAACzE,cAAc,CAAC;EACzD,CAAC,EACD,CAACjC,gBAAgB,CACnB,CAAC;EAED,MAAM+G,oBAAoB,GAAGrI,WAAW,CACrCsI,MAA+B,IAAK;IACnC;IACA,IAAI,CAACA,MAAM,EAAE3G,MAAM,IAAI2G,MAAM,CAAC3G,MAAM,KAAKH,aAAa,EAAE;;IAExD;IACA;IACA;IACAV,kBAAkB,CAACwB,QAAQ,CAAC,CAAC,CAACiG,gBAAgB,CAACD,MAAM,CAAC;EACxD,CAAC,EACD,CAAC9G,aAAa,CAChB,CAAC;EAED,MAAMgH,iBAAiB,GAAGxI,WAAW,CAAEyI,QAAuB,IAAK;IACjE;IACA;IACA;IACA;IACA;IACA,MAAM;MAAEC;IAAY,CAAC,GAAG5H,kBAAkB,CAACwB,QAAQ,CAAC,CAAC;IACrD,KAAK,MAAMJ,OAAO,IAAIuG,QAAQ,EAAE;MAC9B,MAAME,QAAQ,GAAGzG,OAAO,CAAC0G,MAAM;MAC/B,IAAI,CAACD,QAAQ,EAAE;MACf9H,wBAAwB,CAACqB,OAAO,CAAC,CAAC2G,OAAO,CAAEC,EAAE,IAC3CJ,WAAW,CAACI,EAAE,EAAEH,QAAQ,CAC1B,CAAC;IACH;IAEA,MAAMI,cAAc,GAClB7I,oBAAoB,CAACoC,QAAQ,CAAC,CAAC,CAACkD,qBAAqB;IACvD,MAAMwD,YAAY,GAAG9I,oBAAoB,CAACoC,QAAQ,CAAC,CAAC,CAACd,aAAa;IAClE,IAAI,CAACuH,cAAc,IAAI,CAACC,YAAY,EAAE;IACtC,MAAMC,QAAQ,GAAGR,QAAQ,CAACS,MAAM,CAC7BhH,OAAO,IACNtB,qBAAqB,CAACsB,OAAO,EAAE6G,cAAc,EAAEC,YAAY,CAAC,IAC5D,CAAC9G,OAAO,CAACY,UACb,CAAC;IAED,IAAI,CAACmG,QAAQ,CAACE,MAAM,EAAE;IAEtBF,QAAQ,CAACJ,OAAO,CAAEO,GAAG,IAAK1I,eAAe,CAAC4B,QAAQ,CAAC,CAAC,CAAC+G,cAAc,CAACD,GAAG,CAAC,CAAC;EAC3E,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,wBAAwB,GAAGtJ,WAAW,CAAEuJ,SAAwB,IAAK;IACzE;EAAA,CACD,EAAE,EAAE,CAAC;EAENtJ,SAAS,CAAC,MAAM;IACd;IACAR,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAAC6J,qBAAqB,EAAEtH,qBAAqB,CAAC;IACtE1C,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAAC8J,iBAAiB,EAAEnF,iBAAiB,CAAC;;IAE9D;IACA9E,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAAC+J,kBAAkB,EAAEnF,kBAAkB,CAAC;IAChE/E,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAACgK,kBAAkB,EAAE/E,kBAAkB,CAAC;IAChEpF,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAACiK,oBAAoB,EAAE1D,oBAAoB,CAAC;IACpE1G,SAAS,CAAC+J,EAAE,CACV5J,WAAW,CAAC2G,wBAAwB,EACpCA,wBACF,CAAC;IACD9G,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAACkK,oBAAoB,EAAEzD,oBAAoB,CAAC;IACpE5G,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAACmK,gBAAgB,EAAEzD,gBAAgB,CAAC;IAC5D7G,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAACoK,kBAAkB,EAAEvC,kBAAkB,CAAC;IAChEhI,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAACqK,uBAAuB,EAAEvC,uBAAuB,CAAC;;IAE1E;IACAjI,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAACsK,mBAAmB,EAAEnI,qBAAqB,CAAC;IACpEtC,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAACuK,uBAAuB,EAAEvC,gBAAgB,CAAC;IACnEnI,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAACwK,mBAAmB,EAAErC,eAAe,CAAC;IAC9DtI,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAACyK,iBAAiB,EAAE7B,iBAAiB,CAAC;IAC9D/I,SAAS,CAAC+J,EAAE,CAAC5J,WAAW,CAAC0K,oBAAoB,EAAEjC,oBAAoB,CAAC;IACpE5I,SAAS,CAAC+J,EAAE,CACV5J,WAAW,CAAC2K,wBAAwB,EACpCjB,wBACF,CAAC;IAED,OAAO,MAAM;MACX;MACA7J,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAAC6J,qBAAqB,EAAEtH,qBAAqB,CAAC;MACvE1C,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAAC8J,iBAAiB,EAAEnF,iBAAiB,CAAC;;MAE/D;MACA9E,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAAC+J,kBAAkB,EAAEnF,kBAAkB,CAAC;MACjE/E,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAACgK,kBAAkB,EAAE/E,kBAAkB,CAAC;MACjEpF,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAACiK,oBAAoB,EAAE1D,oBAAoB,CAAC;MACrE1G,SAAS,CAAC+K,GAAG,CACX5K,WAAW,CAAC2G,wBAAwB,EACpCA,wBACF,CAAC;MACD9G,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAACkK,oBAAoB,EAAEzD,oBAAoB,CAAC;MACrE5G,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAACmK,gBAAgB,EAAEzD,gBAAgB,CAAC;MAC7D7G,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAACoK,kBAAkB,EAAEvC,kBAAkB,CAAC;MACjEhI,SAAS,CAAC+K,GAAG,CACX5K,WAAW,CAACqK,uBAAuB,EACnCvC,uBACF,CAAC;;MAED;MACAjI,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAACsK,mBAAmB,EAAEnI,qBAAqB,CAAC;MACrEtC,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAACyK,iBAAiB,EAAE7B,iBAAiB,CAAC;MAC/D/I,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAAC0K,oBAAoB,EAAEjC,oBAAoB,CAAC;MACrE5I,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAACuK,uBAAuB,EAAEvC,gBAAgB,CAAC;MACpEnI,SAAS,CAAC+K,GAAG,CAAC5K,WAAW,CAACwK,mBAAmB,EAAErC,eAAe,CAAC;MAC/DtI,SAAS,CAAC+K,GAAG,CACX5K,WAAW,CAAC2K,wBAAwB,EACpCjB,wBACF,CAAC;IACH,CAAC;EACH,CAAC,EAAE,CACDnH,qBAAqB,EACrBqC,kBAAkB,EAClBK,kBAAkB,EAClBsB,oBAAoB,EACpB4B,eAAe,EACfH,gBAAgB,EAChBrD,iBAAiB,EACjBxC,qBAAqB,EACrByG,iBAAiB,EACjBH,oBAAoB,EACpBiB,wBAAwB,EACxB/C,wBAAwB,EACxBF,oBAAoB,EACpBC,gBAAgB,EAChBmB,kBAAkB,EAClBC,uBAAuB,CACxB,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ import { useQuery } from '@tanstack/react-query';
4
+ import OpenIMSDK from '@droppii/openim-rn-client-sdk';
5
+ import { groupQueryKeys } from "../query-keys.js";
6
+
7
+ /**
8
+ * Display name of one group member.
9
+ *
10
+ * Fetches a single member rather than the whole roster: the only place this is
11
+ * needed is the typing sentence, which names at most one person — beyond that
12
+ * the copy collapses to "Nhiều người". Cached by react-query so a dot flickering
13
+ * on and off does not re-hit the SDK.
14
+ */
15
+ export const useGroupMemberName = (groupID, userID) => {
16
+ const {
17
+ data
18
+ } = useQuery({
19
+ queryKey: groupQueryKeys.member(groupID, userID),
20
+ enabled: !!groupID && !!userID,
21
+ staleTime: 5 * 60_000,
22
+ queryFn: async () => {
23
+ const members = await OpenIMSDK.getSpecifiedGroupMembersInfo({
24
+ groupID: groupID,
25
+ userIDList: [userID]
26
+ });
27
+ return members?.[0]?.nickname ?? null;
28
+ }
29
+ });
30
+ return data ?? undefined;
31
+ };
32
+ //# sourceMappingURL=useGroupMemberName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useQuery","OpenIMSDK","groupQueryKeys","useGroupMemberName","groupID","userID","data","queryKey","member","enabled","staleTime","queryFn","members","getSpecifiedGroupMembersInfo","userIDList","nickname","undefined"],"sourceRoot":"../../../../src","sources":["hooks/groups/useGroupMemberName.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,OAAOC,SAAS,MAAM,+BAA+B;AACrD,SAASC,cAAc,QAAQ,kBAAe;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAGA,CAChCC,OAAgB,EAChBC,MAAe,KACQ;EACvB,MAAM;IAAEC;EAAK,CAAC,GAAGN,QAAQ,CAAC;IACxBO,QAAQ,EAAEL,cAAc,CAACM,MAAM,CAACJ,OAAO,EAAEC,MAAM,CAAC;IAChDI,OAAO,EAAE,CAAC,CAACL,OAAO,IAAI,CAAC,CAACC,MAAM;IAC9BK,SAAS,EAAE,CAAC,GAAG,MAAM;IACrBC,OAAO,EAAE,MAAAA,CAAA,KAAY;MACnB,MAAMC,OAAO,GAAG,MAAMX,SAAS,CAACY,4BAA4B,CAAC;QAC3DT,OAAO,EAAEA,OAAQ;QACjBU,UAAU,EAAE,CAACT,MAAM;MACrB,CAAC,CAAC;MACF,OAAOO,OAAO,GAAG,CAAC,CAAC,EAAEG,QAAQ,IAAI,IAAI;IACvC;EACF,CAAC,CAAC;EAEF,OAAOT,IAAI,IAAIU,SAAS;AAC1B,CAAC","ignoreList":[]}
@@ -55,6 +55,7 @@ export const groupQueryKeys = {
55
55
  publicSearch: keyword => [...groupQueryKeys.public(), keyword],
56
56
  join: () => [...groupQueryKeys.all, 'join'],
57
57
  leave: () => [...groupQueryKeys.all, 'leave'],
58
- inviteInfo: code => [...groupQueryKeys.all, 'inviteInfo', code]
58
+ inviteInfo: code => [...groupQueryKeys.all, 'inviteInfo', code],
59
+ member: (groupID, userID) => [...groupQueryKeys.all, 'member', groupID, userID]
59
60
  };
60
61
  //# sourceMappingURL=query-keys.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["commonQueryKeys","all","urlMetadata","url","conversationQueryKeys","lists","list","applicationType","details","detail","conversationId","getStatusBot","botId","conversationTarget","flow","flowMainMenu","resetFlow","runFlow","closeSession","detailByBotId","detailBySourceId","sourceId","joinedGroup","groupId","create","userId","groupInfo","usersQueryKeys","userIds","stickerQueryKeys","categories","byCategory","categoryId","recent","resourceCenterQueryKeys","byType","recvID","contentType","messageQueryKeys","search","query","mentionQueryKeys","groupID","keyword","contactQueryKeys","type","groupQueryKeys","public","publicSearch","join","leave","inviteInfo","code"],"sourceRoot":"../../../src","sources":["hooks/query-keys.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["commonQueryKeys","all","urlMetadata","url","conversationQueryKeys","lists","list","applicationType","details","detail","conversationId","getStatusBot","botId","conversationTarget","flow","flowMainMenu","resetFlow","runFlow","closeSession","detailByBotId","detailBySourceId","sourceId","joinedGroup","groupId","create","userId","groupInfo","usersQueryKeys","userIds","stickerQueryKeys","categories","byCategory","categoryId","recent","resourceCenterQueryKeys","byType","recvID","contentType","messageQueryKeys","search","query","mentionQueryKeys","groupID","keyword","contactQueryKeys","type","groupQueryKeys","public","publicSearch","join","leave","inviteInfo","code","member","userID"],"sourceRoot":"../../../src","sources":["hooks/query-keys.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useMemo, useState } from 'react';
4
+ import { useInputStateStore } from "../store/index.js";
5
+ import { getActiveTypers, getNextExpiryAt } from "../utils/inputState.js";
6
+ /**
7
+ * Typing state for one conversation.
8
+ *
9
+ * Expiry is read from each record's timestamp rather than tracked with a timer
10
+ * per user, and the hook schedules a single wake-up at the moment the next
11
+ * typer falls out of the window. So with A typing at t=0 and B at t=2s the
12
+ * sentence moves from A, to both, to B alone at t=3s, and disappears at t=5s —
13
+ * without polling between those points.
14
+ */
15
+ export const useInputState = conversationID => {
16
+ const state = useInputStateStore(store => conversationID ? store.byConversation[conversationID] : undefined);
17
+ // Bumped by the expiry timer below. Records go stale on a clock rather than
18
+ // on a store write, so something has to ask the question again.
19
+ const [tick, setTick] = useState(0);
20
+ const typers = useMemo(
21
+ // `tick` is not read here — it is a dep so that the expiry timer below can
22
+ // force a recount. Records fall out of the window on a clock, so `state`
23
+ // alone would leave an expired typer on screen until the next store write.
24
+ () => getActiveTypers(state, Date.now()),
25
+ // eslint-disable-next-line react-hooks/exhaustive-deps
26
+ [state, tick]);
27
+ useEffect(() => {
28
+ const expiresAt = getNextExpiryAt(state, Date.now());
29
+ if (expiresAt === null) return;
30
+ const timer = setTimeout(() => setTick(value => value + 1), Math.max(0, expiresAt - Date.now()));
31
+ return () => clearTimeout(timer);
32
+ }, [state, typers]);
33
+ return {
34
+ isTyping: typers.length > 0,
35
+ typers
36
+ };
37
+ };
38
+ //# sourceMappingURL=useInputState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useMemo","useState","useInputStateStore","getActiveTypers","getNextExpiryAt","useInputState","conversationID","state","store","byConversation","undefined","tick","setTick","typers","Date","now","expiresAt","timer","setTimeout","value","Math","max","clearTimeout","isTyping","length"],"sourceRoot":"../../../src","sources":["hooks/useInputState.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AACpD,SAASC,kBAAkB,QAAQ,mBAAU;AAC7C,SACEC,eAAe,EACfC,eAAe,QAEV,wBAAqB;AAY5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAIC,cAAuB,IAAuB;EAC1E,MAAMC,KAAK,GAAGL,kBAAkB,CAAEM,KAAK,IACrCF,cAAc,GAAGE,KAAK,CAACC,cAAc,CAACH,cAAc,CAAC,GAAGI,SAC1D,CAAC;EACD;EACA;EACA,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGX,QAAQ,CAAC,CAAC,CAAC;EAEnC,MAAMY,MAAM,GAAGb,OAAO;EACpB;EACA;EACA;EACA,MAAMG,eAAe,CAACI,KAAK,EAAEO,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;EACxC;EACA,CAACR,KAAK,EAAEI,IAAI,CACd,CAAC;EAEDZ,SAAS,CAAC,MAAM;IACd,MAAMiB,SAAS,GAAGZ,eAAe,CAACG,KAAK,EAAEO,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;IACpD,IAAIC,SAAS,KAAK,IAAI,EAAE;IAExB,MAAMC,KAAK,GAAGC,UAAU,CACtB,MAAMN,OAAO,CAAEO,KAAK,IAAKA,KAAK,GAAG,CAAC,CAAC,EACnCC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEL,SAAS,GAAGF,IAAI,CAACC,GAAG,CAAC,CAAC,CACpC,CAAC;IACD,OAAO,MAAMO,YAAY,CAACL,KAAK,CAAC;EAClC,CAAC,EAAE,CAACV,KAAK,EAAEM,MAAM,CAAC,CAAC;EAEnB,OAAO;IAAEU,QAAQ,EAAEV,MAAM,CAACW,MAAM,GAAG,CAAC;IAAEX;EAAO,CAAC;AAChD,CAAC","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef } from 'react';
4
+ import OpenIMSDK from '@droppii/openim-rn-client-sdk';
5
+
6
+ /**
7
+ * Broadcasts this device's composing state for a conversation.
8
+ *
9
+ * The SDK throttles the outgoing frames itself, so `notifyTyping` is safe to
10
+ * call on every keystroke — no debounce here would only duplicate that. What
11
+ * this hook does own is the start/stop rule: an empty draft counts as stopping,
12
+ * not as typing, and leaving the screen has to stop too or the peer is left
13
+ * watching an indicator for a composer nobody is in front of.
14
+ */
15
+ export const useInputStateBroadcast = conversationID => {
16
+ // Mirrors what we last told the SDK, so a cleared draft or a blur does not
17
+ // fire a stop frame for a conversation we never announced typing in.
18
+ const isTypingRef = useRef(false);
19
+ const send = useCallback(focus => {
20
+ if (!conversationID) return;
21
+ // Only a repeated *stop* is redundant. A repeated start is the heartbeat
22
+ // that keeps the peer's TTL window open — suppressing it would let the
23
+ // indicator expire while the person is still typing.
24
+ if (!focus && !isTypingRef.current) return;
25
+ isTypingRef.current = focus;
26
+ OpenIMSDK.changeInputStates({
27
+ conversationID,
28
+ focus
29
+ }).catch(() => {
30
+ // Typing state is cosmetic — a failed frame must not surface to the
31
+ // person typing, and the peer's own 3s window cleans up after it.
32
+ isTypingRef.current = !focus;
33
+ });
34
+ }, [conversationID]);
35
+
36
+ /** Any draft change: text present means typing, empty means stopped. */
37
+ const notifyTyping = useCallback(text => send(!!text && text.trim().length > 0), [send]);
38
+
39
+ /** Explicit stop — message sent, input blurred, screen left. */
40
+ const notifyStoppedTyping = useCallback(() => send(false), [send]);
41
+
42
+ // Switching conversations, or unmounting, stops the previous one.
43
+ useEffect(() => {
44
+ return () => {
45
+ notifyStoppedTyping();
46
+ };
47
+ }, [notifyStoppedTyping]);
48
+ return {
49
+ notifyTyping,
50
+ notifyStoppedTyping
51
+ };
52
+ };
53
+ //# sourceMappingURL=useInputStateBroadcast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","OpenIMSDK","useInputStateBroadcast","conversationID","isTypingRef","send","focus","current","changeInputStates","catch","notifyTyping","text","trim","length","notifyStoppedTyping"],"sourceRoot":"../../../src","sources":["hooks/useInputStateBroadcast.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACtD,OAAOC,SAAS,MAAM,+BAA+B;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAIC,cAAuB,IAAK;EACjE;EACA;EACA,MAAMC,WAAW,GAAGJ,MAAM,CAAC,KAAK,CAAC;EAEjC,MAAMK,IAAI,GAAGP,WAAW,CACrBQ,KAAc,IAAK;IAClB,IAAI,CAACH,cAAc,EAAE;IACrB;IACA;IACA;IACA,IAAI,CAACG,KAAK,IAAI,CAACF,WAAW,CAACG,OAAO,EAAE;IAEpCH,WAAW,CAACG,OAAO,GAAGD,KAAK;IAC3BL,SAAS,CAACO,iBAAiB,CAAC;MAAEL,cAAc;MAAEG;IAAM,CAAC,CAAC,CAACG,KAAK,CAAC,MAAM;MACjE;MACA;MACAL,WAAW,CAACG,OAAO,GAAG,CAACD,KAAK;IAC9B,CAAC,CAAC;EACJ,CAAC,EACD,CAACH,cAAc,CACjB,CAAC;;EAED;EACA,MAAMO,YAAY,GAAGZ,WAAW,CAC7Ba,IAAa,IAAKN,IAAI,CAAC,CAAC,CAACM,IAAI,IAAIA,IAAI,CAACC,IAAI,CAAC,CAAC,CAACC,MAAM,GAAG,CAAC,CAAC,EACzD,CAACR,IAAI,CACP,CAAC;;EAED;EACA,MAAMS,mBAAmB,GAAGhB,WAAW,CAAC,MAAMO,IAAI,CAAC,KAAK,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;;EAElE;EACAN,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXe,mBAAmB,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACA,mBAAmB,CAAC,CAAC;EAEzB,OAAO;IAAEJ,YAAY;IAAEI;EAAoB,CAAC;AAC9C,CAAC","ignoreList":[]}
@@ -29,6 +29,7 @@ import { DEFAULT_BUTTON_ID, isContextButton } from "../../utils/flows.js";
29
29
  import { DFlowState } from "../../types/chat.js";
30
30
  import { useAttachmentMapping } from "./hooks/useAttachmentMapping.js";
31
31
  import { useChatCompose } from "../../hooks/useChatCompose.js";
32
+ import { useInputStateBroadcast } from "../../hooks/useInputStateBroadcast.js";
32
33
  import { ChatCurrentQuotedMessage } from "./ChatCurrentQuotedMessage.js";
33
34
  import { useSendMessage } from "../../hooks/message/useSendMessage.js";
34
35
  import { openBotMenuSheet } from "./BotMenuSheet.js";
@@ -75,6 +76,10 @@ export const ChatComposer = /*#__PURE__*/memo(({
75
76
  sendMessage
76
77
  } = useSendMessage();
77
78
  const compose = useChatCompose();
79
+ const {
80
+ notifyTyping,
81
+ notifyStoppedTyping
82
+ } = useInputStateBroadcast(conversation?.conversationID);
78
83
  const {
79
84
  allowed: isSendMessageAllowed,
80
85
  reason: sendDeniedReason
@@ -177,6 +182,9 @@ export const ChatComposer = /*#__PURE__*/memo(({
177
182
  // "ghost" mention anchored past the end of an empty string). See
178
183
  // useMentionComposer.clear()'s doc comment.
179
184
  mentionComposer.clear();
185
+ // Stop before awaiting the send: the peer should lose the indicator as
186
+ // the message goes out, not once it round-trips.
187
+ notifyStoppedTyping();
180
188
  try {
181
189
  await compose.send(mentionsToSend);
182
190
  } catch (error) {
@@ -193,7 +201,7 @@ export const ChatComposer = /*#__PURE__*/memo(({
193
201
  // stable-per-value / [] deps), not the whole mentionComposer object —
194
202
  // same reasoning as handleToggleAttachment above.
195
203
  // eslint-disable-next-line react-hooks/exhaustive-deps
196
- }, [compose, isSendMessageAllowed, sendDeniedReason, mentionComposer.mentions, mentionComposer.clear, inputRef]);
204
+ }, [compose, isSendMessageAllowed, sendDeniedReason, mentionComposer.mentions, mentionComposer.clear, notifyStoppedTyping, inputRef]);
197
205
  const handleInputFocus = useCallback(() => {
198
206
  setIsInputFocused(true);
199
207
  if (isAttachmentOpen) {
@@ -243,12 +251,16 @@ export const ChatComposer = /*#__PURE__*/memo(({
243
251
  }, [activePanelType, isKeyboardVisible, mentionComposer.closeMentionPanel, closeAttachment, openWithHeight, setActivePanelType]);
244
252
  const handleInputBlur = useCallback(() => {
245
253
  setIsInputFocused(false);
246
- }, [setIsInputFocused]);
254
+ notifyStoppedTyping();
255
+ }, [setIsInputFocused, notifyStoppedTyping]);
247
256
 
248
257
  // Routes through mentionComposer instead of compose.setText directly —
249
258
  // it owns the atomic-delete/reconcile pipeline and calls compose.setText
250
259
  // itself once the corrected text is known (see useMentionComposer).
251
- const handleChangeText = mentionComposer.handleChangeText;
260
+ const handleChangeText = useCallback(text => {
261
+ notifyTyping(text);
262
+ mentionComposer.handleChangeText(text);
263
+ }, [notifyTyping, mentionComposer]);
252
264
  const handleInputContentSizeChange = useCallback(event => {
253
265
  const {
254
266
  height
@@ -524,7 +536,8 @@ export const ChatComposer = /*#__PURE__*/memo(({
524
536
  isMultilineInput: isMultilineInput,
525
537
  inputRef: inputRef,
526
538
  onEmojiPress: handleToggleSticker,
527
- onSuggestPress: hasBotMenuOptions ? handleOpenBotMenu : undefined
539
+ onSuggestPress: hasBotMenuOptions ? handleOpenBotMenu : undefined,
540
+ activePanelType: activePanelType
528
541
  }), /*#__PURE__*/_jsx(KContainer.Touchable, {
529
542
  onPress: compose.isUploading ? undefined : handleSend,
530
543
  pointerEvents: compose.isUploading ? 'none' : 'auto',