@droppii-org/chat-sdk 0.7.7 → 0.7.9
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/dist/components/conversation/ThreadCard.d.ts +2 -1
- package/dist/components/conversation/ThreadCard.d.ts.map +1 -1
- package/dist/components/conversation/ThreadCard.js +2 -2
- package/dist/components/conversation-detail/ConversationDetailHeader.d.ts +5 -1
- package/dist/components/conversation-detail/ConversationDetailHeader.d.ts.map +1 -1
- package/dist/components/conversation-detail/ConversationDetailHeader.js +3 -3
- package/dist/components/conversation-detail/ConversationMoreOptionPanel.d.ts.map +1 -1
- package/dist/components/conversation-detail/ConversationMoreOptionPanel.js +3 -1
- package/dist/components/conversation-detail/ThreadProfilePanel.d.ts +7 -1
- package/dist/components/conversation-detail/ThreadProfilePanel.d.ts.map +1 -1
- package/dist/components/conversation-detail/ThreadProfilePanel.js +13 -3
- package/dist/components/conversation-detail/profile/PinThreadLimitModal.d.ts +7 -0
- package/dist/components/conversation-detail/profile/PinThreadLimitModal.d.ts.map +1 -0
- package/dist/components/conversation-detail/profile/PinThreadLimitModal.js +14 -0
- package/dist/components/conversation-detail/profile/ThreadProfileActionRows.d.ts +15 -0
- package/dist/components/conversation-detail/profile/ThreadProfileActionRows.d.ts.map +1 -0
- package/dist/components/conversation-detail/profile/ThreadProfileActionRows.js +20 -0
- package/dist/components/conversation-detail/profile/ThreadProfileQuickActions.d.ts +13 -0
- package/dist/components/conversation-detail/profile/ThreadProfileQuickActions.d.ts.map +1 -0
- package/dist/components/conversation-detail/profile/ThreadProfileQuickActions.js +36 -0
- package/dist/components/conversation-detail/thread-search/ThreadSearchContent.d.ts +13 -0
- package/dist/components/conversation-detail/thread-search/ThreadSearchContent.d.ts.map +1 -0
- package/dist/components/conversation-detail/thread-search/ThreadSearchContent.js +70 -0
- package/dist/components/conversation-detail/thread-search/ThreadSearchPanel.d.ts +11 -0
- package/dist/components/conversation-detail/thread-search/ThreadSearchPanel.d.ts.map +1 -0
- package/dist/components/conversation-detail/thread-search/ThreadSearchPanel.js +12 -0
- package/dist/components/conversation-detail/thread-search/ThreadSearchResultItem.d.ts +11 -0
- package/dist/components/conversation-detail/thread-search/ThreadSearchResultItem.d.ts.map +1 -0
- package/dist/components/conversation-detail/thread-search/ThreadSearchResultItem.js +24 -0
- package/dist/components/conversation-detail/thread-search/utils.d.ts +8 -0
- package/dist/components/conversation-detail/thread-search/utils.d.ts.map +1 -0
- package/dist/components/conversation-detail/thread-search/utils.js +17 -0
- package/dist/components/conversation-inbox/ConversationInboxItem.d.ts +3 -1
- package/dist/components/conversation-inbox/ConversationInboxItem.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationInboxItem.js +4 -6
- package/dist/components/conversation-inbox/ConversationInboxList.d.ts +3 -1
- package/dist/components/conversation-inbox/ConversationInboxList.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationInboxList.js +2 -2
- package/dist/components/conversation-inbox/ConversationThreadActions.d.ts +12 -0
- package/dist/components/conversation-inbox/ConversationThreadActions.d.ts.map +1 -0
- package/dist/components/conversation-inbox/ConversationThreadActions.js +58 -0
- package/dist/components/conversation-inbox/index.d.ts +2 -2
- package/dist/components/conversation-inbox/index.d.ts.map +1 -1
- package/dist/components/conversation-inbox/index.js +1 -1
- package/dist/components/group/MemberPermissionPanel.d.ts.map +1 -1
- package/dist/components/group/MemberPermissionPanel.js +12 -23
- package/dist/components/message/toolbox/MessageToolboxMenu.d.ts +7 -0
- package/dist/components/message/toolbox/MessageToolboxMenu.d.ts.map +1 -1
- package/dist/components/message/toolbox/MessageToolboxMenu.js +1 -1
- package/dist/constants/moreOption.d.ts +1 -0
- package/dist/constants/moreOption.d.ts.map +1 -1
- package/dist/hooks/conversation/useBotFlow.d.ts.map +1 -1
- package/dist/hooks/conversation/useBotFlow.js +42 -23
- package/dist/hooks/conversation/useConversationTarget.d.ts +4 -0
- package/dist/hooks/conversation/useConversationTarget.d.ts.map +1 -0
- package/dist/hooks/conversation/useConversationTarget.js +23 -0
- package/dist/hooks/conversation/usePinConversation.d.ts +10 -0
- package/dist/hooks/conversation/usePinConversation.d.ts.map +1 -0
- package/dist/hooks/conversation/usePinConversation.js +52 -0
- package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
- package/dist/hooks/global/useGlobalEvent.js +3 -0
- package/dist/hooks/group/useJoinPublicGroup.d.ts.map +1 -1
- package/dist/hooks/group/useJoinPublicGroup.js +9 -1
- package/dist/hooks/message/holdMessageHighlight.d.ts +6 -0
- package/dist/hooks/message/holdMessageHighlight.d.ts.map +1 -0
- package/dist/hooks/message/holdMessageHighlight.js +22 -0
- package/dist/hooks/message/useMessage.d.ts +1 -0
- package/dist/hooks/message/useMessage.d.ts.map +1 -1
- package/dist/hooks/message/useMessage.js +14 -9
- package/dist/hooks/message/useMessageListScroll.d.ts +3 -1
- package/dist/hooks/message/useMessageListScroll.d.ts.map +1 -1
- package/dist/hooks/message/useMessageListScroll.js +35 -3
- package/dist/hooks/message/useSendMessage.d.ts +1 -1
- package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
- package/dist/hooks/message/useSendMessage.js +358 -285
- package/dist/hooks/search/useSearchThreadMessages.d.ts +222 -0
- package/dist/hooks/search/useSearchThreadMessages.d.ts.map +1 -0
- package/dist/hooks/search/useSearchThreadMessages.js +60 -0
- package/dist/locales/vi/conversation-inbox.json +31 -0
- package/dist/screens/conversation-detail/index.d.ts +5 -1
- package/dist/screens/conversation-detail/index.d.ts.map +1 -1
- package/dist/screens/conversation-detail/index.js +29 -3
- package/dist/screens/conversation-inbox/index.d.ts +6 -0
- package/dist/screens/conversation-inbox/index.d.ts.map +1 -1
- package/dist/screens/conversation-inbox/index.js +3 -3
- package/dist/services/query.d.ts +3 -0
- package/dist/services/query.d.ts.map +1 -1
- package/dist/services/query.js +3 -0
- package/dist/services/routes.d.ts +2 -0
- package/dist/services/routes.d.ts.map +1 -1
- package/dist/services/routes.js +2 -0
- package/dist/store/conversation.d.ts.map +1 -1
- package/dist/store/conversation.js +10 -6
- package/dist/store/type.d.ts +3 -0
- package/dist/store/type.d.ts.map +1 -1
- package/dist/styles/global.css +1 -1
- package/dist/types/conversation.d.ts +8 -0
- package/dist/types/conversation.d.ts.map +1 -1
- package/dist/utils/common.d.ts +7 -0
- package/dist/utils/common.d.ts.map +1 -1
- package/dist/utils/common.js +42 -13
- package/dist/utils/sendQueue.d.ts +2 -0
- package/dist/utils/sendQueue.d.ts.map +1 -0
- package/dist/utils/sendQueue.js +14 -0
- package/package.json +1 -1
- package/dist/components/conversation-inbox/ConversationMuteSwipeAction.d.ts +0 -8
- package/dist/components/conversation-inbox/ConversationMuteSwipeAction.d.ts.map +0 -1
- package/dist/components/conversation-inbox/ConversationMuteSwipeAction.js +0 -31
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEffect, useRef, useState } from "react";
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
2
|
import { ViewType, MessageType, } from "@droppii-org/wasm-client-sdk";
|
|
3
3
|
import { DChatSDK } from "../../constants/sdk";
|
|
4
4
|
import { PAGE_SIZE } from "../../constants";
|
|
@@ -87,6 +87,17 @@ onSearchMessageRevoked) => {
|
|
|
87
87
|
// without this the user sees it stacked. Keyed by conversation + target so
|
|
88
88
|
// jumping to a different revoked message still notifies.
|
|
89
89
|
const toastedRevokedTargetRef = useRef(null);
|
|
90
|
+
// Also used by the scroll guard for a search hit recalled since the results came back.
|
|
91
|
+
const notifyRevokedTarget = useCallback((clientMsgID) => {
|
|
92
|
+
const revokedTargetKey = `${conversationIdRef.current}:${clientMsgID}`;
|
|
93
|
+
if (toastedRevokedTargetRef.current === revokedTargetKey)
|
|
94
|
+
return;
|
|
95
|
+
toastedRevokedTargetRef.current = revokedTargetKey;
|
|
96
|
+
if (onSearchMessageRevoked)
|
|
97
|
+
onSearchMessageRevoked();
|
|
98
|
+
else
|
|
99
|
+
antdMessage.info(t("message_revoked_or_deleted"));
|
|
100
|
+
}, [conversationIdRef, onSearchMessageRevoked, t]);
|
|
90
101
|
const { loading: moreOldLoading, runAsync: getMoreOldMessages } = useRequest(async (loadMore = true) => {
|
|
91
102
|
var _a, _b, _c, _d, _e;
|
|
92
103
|
const reqConversationID = conversationId;
|
|
@@ -208,14 +219,7 @@ onSearchMessageRevoked) => {
|
|
|
208
219
|
// list with a window centred on a tombstone is worse than not moving.
|
|
209
220
|
const targetMessage = currentMessages.find((item) => item.clientMsgID === searchClientMsgID);
|
|
210
221
|
if ((targetMessage === null || targetMessage === void 0 ? void 0 : targetMessage.contentType) === MessageType.RevokeMessage) {
|
|
211
|
-
|
|
212
|
-
if (toastedRevokedTargetRef.current !== revokedTargetKey) {
|
|
213
|
-
toastedRevokedTargetRef.current = revokedTargetKey;
|
|
214
|
-
if (onSearchMessageRevoked)
|
|
215
|
-
onSearchMessageRevoked();
|
|
216
|
-
else
|
|
217
|
-
antdMessage.info(t("message_revoked_or_deleted"));
|
|
218
|
-
}
|
|
222
|
+
notifyRevokedTarget(searchClientMsgID);
|
|
219
223
|
// Deliberately outside the guard: a repeat run still needs to leave
|
|
220
224
|
// the user with a usable list. The fallback is a no-op once the first
|
|
221
225
|
// one has populated it, and skipping it here would strand an empty
|
|
@@ -397,6 +401,7 @@ onSearchMessageRevoked) => {
|
|
|
397
401
|
moreNewLoading,
|
|
398
402
|
getMoreNewMessages,
|
|
399
403
|
refreshLatestMessages,
|
|
404
|
+
notifyRevokedTarget,
|
|
400
405
|
};
|
|
401
406
|
};
|
|
402
407
|
export const pushNewMessage = (message) => emit("PUSH_NEW_MSG", message);
|
|
@@ -19,8 +19,10 @@ interface UseMessageListScrollParams {
|
|
|
19
19
|
getMoreNewMessages: () => void | Promise<unknown>;
|
|
20
20
|
/** Holds mark-as-read back while the first-unread lookup is still pending. */
|
|
21
21
|
markAsReadBlocked?: boolean;
|
|
22
|
+
/** Tells the user a search jump target was recalled (deduped with the search load). */
|
|
23
|
+
notifyRevokedTarget?: (clientMsgID: string) => void;
|
|
22
24
|
}
|
|
23
|
-
export declare const useMessageListScroll: ({ conversationId, userId, isGroupChat, loadState, latestLoadState, moreOldLoading, moreNewLoading, getMoreOldMessages, getMoreNewMessages, markAsReadBlocked, }: UseMessageListScrollParams) => {
|
|
25
|
+
export declare const useMessageListScroll: ({ conversationId, userId, isGroupChat, loadState, latestLoadState, moreOldLoading, moreNewLoading, getMoreOldMessages, getMoreNewMessages, markAsReadBlocked, notifyRevokedTarget, }: UseMessageListScrollParams) => {
|
|
24
26
|
scrollRef: RefObject<HTMLDivElement>;
|
|
25
27
|
handleMarkConversationMessageAsRead: () => void;
|
|
26
28
|
loadMoreOldMessage: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessageListScroll.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessageListScroll.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAkC,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"useMessageListScroll.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessageListScroll.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAkC,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,WAAW,EAAe,MAAM,8BAA8B,CAAC;AAYxE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED,UAAU,0BAA0B;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,oBAAoB,CAAC;IAChC,eAAe,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACxD,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,kBAAkB,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uFAAuF;IACvF,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED,eAAO,MAAM,oBAAoB,GAAI,sLAYlC,0BAA0B;;;;8BAsErB,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;;;mCA0Ce,MAAM;CAyEzD,CAAC"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useCallback, useEffect, useRef } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { MessageType } from "@droppii-org/wasm-client-sdk";
|
|
4
|
+
import { useDebounceFn, useLatest } from "ahooks";
|
|
4
5
|
import { isNumber } from "lodash";
|
|
5
6
|
import { markConversationMessageAsRead } from "../../hooks/conversation/useConversation";
|
|
6
7
|
import { MSG_ITEM_BUBBLE_GROUP_PREFIX, MSG_ITEM_CONTENT_PREFIX, MSG_ITEM_PREFIX, } from "../../constants";
|
|
8
|
+
import useConversationStore from "../../store/conversation";
|
|
9
|
+
import { holdMessageHighlight } from "./holdMessageHighlight";
|
|
7
10
|
export const MESSAGE_LIST_BOTTOM_THRESHOLD = -5;
|
|
8
|
-
export const useMessageListScroll = ({ conversationId, userId, isGroupChat, loadState, latestLoadState, moreOldLoading, moreNewLoading, getMoreOldMessages, getMoreNewMessages, markAsReadBlocked = false, }) => {
|
|
11
|
+
export const useMessageListScroll = ({ conversationId, userId, isGroupChat, loadState, latestLoadState, moreOldLoading, moreNewLoading, getMoreOldMessages, getMoreNewMessages, markAsReadBlocked = false, notifyRevokedTarget, }) => {
|
|
9
12
|
const scrollRef = useRef(null);
|
|
10
13
|
const autoFillAttemptedRef = useRef(false);
|
|
14
|
+
const notifyRevokedTargetRef = useLatest(notifyRevokedTarget);
|
|
11
15
|
useEffect(() => {
|
|
12
16
|
autoFillAttemptedRef.current = false;
|
|
13
17
|
}, [conversationId]);
|
|
@@ -97,7 +101,22 @@ export const useMessageListScroll = ({ conversationId, userId, isGroupChat, load
|
|
|
97
101
|
});
|
|
98
102
|
}, [handleMarkConversationMessageAsRead]);
|
|
99
103
|
const scrollToMessage = useCallback((clientMsgID) => {
|
|
104
|
+
// A search hit recalled since the results came back: say so instead of landing on its placeholder.
|
|
105
|
+
// Checked before the scroll and again before the highlight, since the list reloads in between.
|
|
106
|
+
const dropRevokedSearchTarget = () => {
|
|
107
|
+
var _a, _b, _c, _d;
|
|
108
|
+
const state = useConversationStore.getState();
|
|
109
|
+
const isRevoked = state.heldHighlightClientMsgID === clientMsgID &&
|
|
110
|
+
((_c = (_b = (_a = latestLoadState.current) === null || _a === void 0 ? void 0 : _a.messageList) === null || _b === void 0 ? void 0 : _b.find((message) => message.clientMsgID === clientMsgID)) === null || _c === void 0 ? void 0 : _c.contentType) === MessageType.RevokeMessage;
|
|
111
|
+
if (!isRevoked)
|
|
112
|
+
return false;
|
|
113
|
+
state.setHeldHighlightClientMsgID("");
|
|
114
|
+
(_d = notifyRevokedTargetRef.current) === null || _d === void 0 ? void 0 : _d.call(notifyRevokedTargetRef, clientMsgID);
|
|
115
|
+
return true;
|
|
116
|
+
};
|
|
100
117
|
setTimeout(() => {
|
|
118
|
+
if (dropRevokedSearchTarget())
|
|
119
|
+
return;
|
|
101
120
|
const targetElement = document.getElementById(`${MSG_ITEM_PREFIX}${clientMsgID}`);
|
|
102
121
|
targetElement === null || targetElement === void 0 ? void 0 : targetElement.scrollIntoView({
|
|
103
122
|
behavior: "auto",
|
|
@@ -105,10 +124,23 @@ export const useMessageListScroll = ({ conversationId, userId, isGroupChat, load
|
|
|
105
124
|
});
|
|
106
125
|
setTimeout(() => {
|
|
107
126
|
var _a;
|
|
127
|
+
if (dropRevokedSearchTarget())
|
|
128
|
+
return;
|
|
108
129
|
const targetContentElement = document.getElementById(`${MSG_ITEM_CONTENT_PREFIX}${clientMsgID}`);
|
|
109
130
|
// The border hugs the bubble; the pulse runs on the wrapper that also
|
|
110
131
|
// holds the pin badge, or the badge stays put while the bubble scales.
|
|
111
132
|
const pulseElement = (_a = document.getElementById(`${MSG_ITEM_BUBBLE_GROUP_PREFIX}${clientMsgID}`)) !== null && _a !== void 0 ? _a : targetContentElement;
|
|
133
|
+
const isHeld = useConversationStore.getState().heldHighlightClientMsgID ===
|
|
134
|
+
clientMsgID;
|
|
135
|
+
if (targetContentElement && isHeld) {
|
|
136
|
+
holdMessageHighlight(targetContentElement, () => {
|
|
137
|
+
const state = useConversationStore.getState();
|
|
138
|
+
if (state.heldHighlightClientMsgID === clientMsgID) {
|
|
139
|
+
state.setHeldHighlightClientMsgID("");
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
112
144
|
targetContentElement === null || targetContentElement === void 0 ? void 0 : targetContentElement.classList.add("border-blue-500", "border");
|
|
113
145
|
pulseElement === null || pulseElement === void 0 ? void 0 : pulseElement.classList.add("zoom-in-out-element");
|
|
114
146
|
const onEnd = () => {
|
|
@@ -121,7 +153,7 @@ export const useMessageListScroll = ({ conversationId, userId, isGroupChat, load
|
|
|
121
153
|
});
|
|
122
154
|
}, 500);
|
|
123
155
|
}, 200);
|
|
124
|
-
}, []);
|
|
156
|
+
}, [latestLoadState, notifyRevokedTargetRef]);
|
|
125
157
|
return {
|
|
126
158
|
scrollRef,
|
|
127
159
|
handleMarkConversationMessageAsRead,
|
|
@@ -42,7 +42,7 @@ export declare const useSendMessage: (options?: UseSendMessageOptions) => {
|
|
|
42
42
|
sendStickerMessage: (sticker: StickerItem, sendOptions?: {
|
|
43
43
|
currentSession?: ISessionResponse;
|
|
44
44
|
}) => Promise<boolean>;
|
|
45
|
-
resendMessage: (failedMessage: MessageItem) => Promise<
|
|
45
|
+
resendMessage: (failedMessage: MessageItem) => Promise<boolean>;
|
|
46
46
|
};
|
|
47
47
|
export declare const generateExtendMessageInfo: ({ richText, urlMetadata, currentSession, flow, mentionOffsets, stickerId, }: {
|
|
48
48
|
richText?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,EAIZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAWtB,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAEL,gBAAgB,EAEjB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"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"}
|