@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.
- package/lib/module/components/TypingDots/TypingDots.js +131 -0
- package/lib/module/components/TypingDots/TypingDots.js.map +1 -0
- package/lib/module/components/TypingDots/index.js +4 -0
- package/lib/module/components/TypingDots/index.js.map +1 -0
- package/lib/module/core/useChatListener.js +26 -2
- package/lib/module/core/useChatListener.js.map +1 -1
- package/lib/module/hooks/groups/useGroupMemberName.js +32 -0
- package/lib/module/hooks/groups/useGroupMemberName.js.map +1 -0
- package/lib/module/hooks/query-keys.js +2 -1
- package/lib/module/hooks/query-keys.js.map +1 -1
- package/lib/module/hooks/useInputState.js +38 -0
- package/lib/module/hooks/useInputState.js.map +1 -0
- package/lib/module/hooks/useInputStateBroadcast.js +53 -0
- package/lib/module/hooks/useInputStateBroadcast.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatComposer.js +17 -4
- package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +2 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatTypingIndicator.js +86 -0
- package/lib/module/screens/chat-detail/ChatTypingIndicator.js.map +1 -0
- package/lib/module/screens/chat-detail/components/ChatMessageInput.js +14 -10
- package/lib/module/screens/chat-detail/components/ChatMessageInput.js.map +1 -1
- package/lib/module/store/index.js +1 -0
- package/lib/module/store/index.js.map +1 -1
- package/lib/module/store/inputState.js +64 -0
- package/lib/module/store/inputState.js.map +1 -0
- package/lib/module/translation/resources/i18n.js +2 -0
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/utils/inputState.js +77 -0
- package/lib/module/utils/inputState.js.map +1 -0
- package/lib/module/utils/message.js +9 -0
- package/lib/module/utils/message.js.map +1 -1
- package/lib/typescript/src/components/TypingDots/TypingDots.d.ts +14 -0
- package/lib/typescript/src/components/TypingDots/TypingDots.d.ts.map +1 -0
- package/lib/typescript/src/components/TypingDots/index.d.ts +3 -0
- package/lib/typescript/src/components/TypingDots/index.d.ts.map +1 -0
- package/lib/typescript/src/core/useChatListener.d.ts.map +1 -1
- package/lib/typescript/src/hooks/groups/useGroupMemberName.d.ts +10 -0
- package/lib/typescript/src/hooks/groups/useGroupMemberName.d.ts.map +1 -0
- package/lib/typescript/src/hooks/query-keys.d.ts +1 -0
- package/lib/typescript/src/hooks/query-keys.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useInputState.d.ts +21 -0
- package/lib/typescript/src/hooks/useInputState.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useInputStateBroadcast.d.ts +14 -0
- package/lib/typescript/src/hooks/useInputStateBroadcast.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatTypingIndicator.d.ts +8 -0
- package/lib/typescript/src/screens/chat-detail/ChatTypingIndicator.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts +3 -1
- package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts.map +1 -1
- package/lib/typescript/src/store/index.d.ts +1 -0
- package/lib/typescript/src/store/index.d.ts.map +1 -1
- package/lib/typescript/src/store/inputState.d.ts +18 -0
- package/lib/typescript/src/store/inputState.d.ts.map +1 -0
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/utils/inputState.d.ts +54 -0
- package/lib/typescript/src/utils/inputState.d.ts.map +1 -0
- package/lib/typescript/src/utils/message.d.ts +8 -0
- package/lib/typescript/src/utils/message.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/TypingDots/TypingDots.tsx +172 -0
- package/src/components/TypingDots/index.ts +2 -0
- package/src/core/useChatListener.ts +35 -1
- package/src/hooks/groups/useGroupMemberName.ts +31 -0
- package/src/hooks/query-keys.ts +2 -0
- package/src/hooks/useInputState.ts +57 -0
- package/src/hooks/useInputStateBroadcast.ts +53 -0
- package/src/screens/chat-detail/ChatComposer.tsx +18 -2
- package/src/screens/chat-detail/ChatListLegend.tsx +2 -0
- package/src/screens/chat-detail/ChatTypingIndicator.tsx +89 -0
- package/src/screens/chat-detail/components/ChatMessageInput.tsx +10 -7
- package/src/store/index.ts +1 -0
- package/src/store/inputState.ts +76 -0
- package/src/translation/resources/i18n.ts +2 -0
- package/src/utils/inputState.ts +104 -0
- 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 @@
|
|
|
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":"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","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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
|
|
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":";;AAAA,OAAO,MAAMA,eAAe,GAAG;EAC7BC,GAAG,EAAE,CAAC,QAAQ,CAAU;EACxBC,WAAW,EAAGC,GAAW,IAAK,CAAC,MAAM,EAAEA,GAAG;AAC5C,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAG;EACnCH,GAAG,EAAE,CAAC,eAAe,CAAU;EAC/BI,KAAK,EAAEA,CAAA,KAAM,CAAC,GAAGD,qBAAqB,CAACH,GAAG,EAAE,MAAM,CAAU;EAC5DK,IAAI,EAAGC,eAAuB,IAC5B,CAAC,GAAGH,qBAAqB,CAACC,KAAK,CAAC,CAAC,EAAEE,eAAe,CAAU;EAC9DC,OAAO,EAAEA,CAAA,KAAM,CAAC,GAAGJ,qBAAqB,CAACH,GAAG,EAAE,QAAQ,CAAU;EAChEQ,MAAM,EAAGC,cAAsB,IAC7B,CAAC,GAAGN,qBAAqB,CAACI,OAAO,CAAC,CAAC,EAAEE,cAAc,CAAU;EAC/DC,YAAY,EAAGC,KAAa,IAAK,CAAC,cAAc,EAAEA,KAAK,CAAU;EACjEC,kBAAkB,EAAGH,cAAsB,IACzC,CAAC,oBAAoB,EAAEA,cAAc,CAAU;EACjDI,IAAI,EAAGJ,cAAsB,IAAK,CAAC,kBAAkB,EAAEA,cAAc,CAAC;EACtEK,YAAY,EAAGL,cAAsB,IAAK,CACxC,0BAA0B,EAC1BA,cAAc,CACf;EACDM,SAAS,EAAGN,cAAsB,IAAK,CACrC,uBAAuB,EACvBA,cAAc,CACf;EACDO,OAAO,EAAGP,cAAsB,IAAK,CAAC,qBAAqB,EAAEA,cAAc,CAAC;EAC5EQ,YAAY,EAAGR,cAAsB,IAAK,CACxC,0BAA0B,EAC1BA,cAAc,CACf;EACDS,aAAa,EAAGP,KAAa,IAAK,CAAC,qBAAqB,EAAEA,KAAK,CAAC;EAChEQ,gBAAgB,EAAGC,QAAgB,IAAK,CAAC,kBAAkB,EAAEA,QAAQ,CAAC;EACtEC,WAAW,EAAGC,OAAgB,IAAK,CAAC,GAAGnB,qBAAqB,CAACH,GAAG,EAAEsB,OAAO,CAAC;EAC1EC,MAAM,EAAGC,MAAe,IAAK,CAAC,QAAQ,EAAEA,MAAM,CAAC;EAC/CC,SAAS,EAAGH,OAAe,IAAK,CAAC,WAAW,EAAEA,OAAO;AACvD,CAAC;AAED,OAAO,MAAMI,cAAc,GAAG;EAC5B1B,GAAG,EAAE,CAAC,OAAO,CAAU;EACvBK,IAAI,EAAGsB,OAAiB,IAAK,CAAC,GAAGD,cAAc,CAAC1B,GAAG,EAAE,GAAG2B,OAAO;AACjE,CAAC;AAID,OAAO,MAAMC,gBAAgB,GAAG;EAC9B5B,GAAG,EAAE,CAAC,UAAU,CAAU;EAC1B6B,UAAU,EAAEA,CAAA,KAAM,CAAC,GAAGD,gBAAgB,CAAC5B,GAAG,EAAE,YAAY,CAAU;EAClE8B,UAAU,EAAGC,UAAkB,IAC7B,CAAC,GAAGH,gBAAgB,CAAC5B,GAAG,EAAE,UAAU,EAAE+B,UAAU,CAAU;EAC5DC,MAAM,EAAEA,CAAA,KAAM,CAAC,GAAGJ,gBAAgB,CAAC5B,GAAG,EAAE,QAAQ;AAClD,CAAC;AAED,OAAO,MAAMiC,uBAAuB,GAAG;EACrCjC,GAAG,EAAE,CAAC,iBAAiB,CAAU;EACjCkC,MAAM,EAAEA,CAACC,MAAc,EAAEC,WAAmB,KAC1C,CAAC,GAAGH,uBAAuB,CAACjC,GAAG,EAAEmC,MAAM,EAAEC,WAAW;AACxD,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAG;EAC9BrC,GAAG,EAAE,CAAC,UAAU,CAAU;EAC1BsC,MAAM,EAAEA,CAACC,KAAa,EAAE9B,cAAuB,KAC7C,CAAC,GAAG4B,gBAAgB,CAACrC,GAAG,EAAE,QAAQ,EAAEuC,KAAK,EAAE9B,cAAc;AAC7D,CAAC;AAED,OAAO,MAAM+B,gBAAgB,GAAG;EAC9BxC,GAAG,EAAE,CAAC,eAAe,CAAU;EAC/BsC,MAAM,EAAEA,CAACG,OAAe,EAAEC,OAAe,KACvC,CAAC,GAAGF,gBAAgB,CAACxC,GAAG,EAAEyC,OAAO,EAAEC,OAAO;AAC9C,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAG;EAC9B3C,GAAG,EAAE,CAAC,UAAU,CAAU;EAC1BsC,MAAM,EAAEA,CAACC,KAAa,EAAEK,IAAa,KACnC,CAAC,GAAGD,gBAAgB,CAAC3C,GAAG,EAAE,QAAQ,EAAEuC,KAAK,EAAEK,IAAI;AACnD,CAAC;AAED,OAAO,MAAMC,cAAc,GAAG;EAC5B7C,GAAG,EAAE,CAAC,QAAQ,CAAU;EACxB8C,MAAM,EAAEA,CAAA,KAAM,CAAC,GAAGD,cAAc,CAAC7C,GAAG,EAAE,QAAQ,CAAU;EACxD+C,YAAY,EAAGL,OAAe,IAC5B,CAAC,GAAGG,cAAc,CAACC,MAAM,CAAC,CAAC,EAAEJ,OAAO,CAAU;EAChDM,IAAI,EAAEA,CAAA,KAAM,CAAC,GAAGH,cAAc,CAAC7C,GAAG,EAAE,MAAM,CAAU;EACpDiD,KAAK,EAAEA,CAAA,KAAM,CAAC,GAAGJ,cAAc,CAAC7C,GAAG,EAAE,OAAO,CAAU;EACtDkD,UAAU,EAAGC,IAAY,IACvB,CAAC,GAAGN,cAAc,CAAC7C,GAAG,EAAE,YAAY,EAAEmD,IAAI,CAAU;EACtDC,MAAM,EAAEA,CAACX,OAAgB,EAAEY,MAAe,KACxC,CAAC,GAAGR,cAAc,CAAC7C,GAAG,EAAE,QAAQ,EAAEyC,OAAO,EAAEY,MAAM;AACrD,CAAC","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
|
-
|
|
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 =
|
|
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',
|