@droppii-org/chat-sdk 0.1.61 → 0.1.65

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 (31) hide show
  1. package/dist/components/conversation-detail/ConversationMessageList.d.ts.map +1 -1
  2. package/dist/components/conversation-detail/ConversationMessageList.js +7 -9
  3. package/dist/components/conversation-detail/PinLimitModal.d.ts +2 -1
  4. package/dist/components/conversation-detail/PinLimitModal.d.ts.map +1 -1
  5. package/dist/components/conversation-detail/PinLimitModal.js +2 -5
  6. package/dist/components/conversation-detail/PinnedMessageItem.d.ts +11 -0
  7. package/dist/components/conversation-detail/PinnedMessageItem.d.ts.map +1 -0
  8. package/dist/components/conversation-detail/PinnedMessageItem.js +44 -0
  9. package/dist/components/conversation-detail/PinnedMessagesPanel.d.ts +7 -0
  10. package/dist/components/conversation-detail/PinnedMessagesPanel.d.ts.map +1 -0
  11. package/dist/components/conversation-detail/PinnedMessagesPanel.js +51 -0
  12. package/dist/components/message/item/renderMessageContent.d.ts +4 -0
  13. package/dist/components/message/item/renderMessageContent.d.ts.map +1 -0
  14. package/dist/components/message/item/renderMessageContent.js +43 -0
  15. package/dist/constants/index.d.ts +0 -1
  16. package/dist/constants/index.d.ts.map +1 -1
  17. package/dist/constants/index.js +0 -1
  18. package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
  19. package/dist/hooks/global/useGlobalEvent.js +16 -0
  20. package/dist/hooks/message/useMessage.d.ts +1 -1
  21. package/dist/hooks/message/useMessage.d.ts.map +1 -1
  22. package/dist/hooks/message/useMessage.js +19 -8
  23. package/dist/hooks/message/usePinnedMessages.d.ts +1 -0
  24. package/dist/hooks/message/usePinnedMessages.d.ts.map +1 -1
  25. package/dist/hooks/message/usePinnedMessages.js +4 -2
  26. package/dist/store/conversation.d.ts.map +1 -1
  27. package/dist/store/conversation.js +15 -8
  28. package/dist/store/type.d.ts +2 -1
  29. package/dist/store/type.d.ts.map +1 -1
  30. package/dist/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/ConversationMessageList.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAkBzE,MAAM,WAAW,4BAA4B;IAC3C,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,QAAA,MAAM,uBAAuB,GAAI,gBAAgB,4BAA4B,4CAiK5E,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"ConversationMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/ConversationMessageList.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAiBzE,MAAM,WAAW,4BAA4B;IAC3C,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,QAAA,MAAM,uBAAuB,GAAI,gBAAgB,4BAA4B,4CAwK5E,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -15,7 +15,6 @@ import { isGroupChat as resolveIsGroupChat } from "../../utils/conversation";
15
15
  import emitter from "../../utils/events";
16
16
  import MessageItem from "../../components/message/item";
17
17
  import PinLimitModal from "./PinLimitModal";
18
- import { MAX_PINNED_MESSAGES_PER_CONVERSATION } from "../../constants";
19
18
  const ConversationMessageList = ({ bottomSlot }) => {
20
19
  const { t } = useTranslation("conversation-inbox");
21
20
  const { t: tCommon } = useTranslation();
@@ -28,7 +27,7 @@ const ConversationMessageList = ({ bottomSlot }) => {
28
27
  const setSearchClientMsgID = useConversationStore((state) => state.setSearchClientMsgID);
29
28
  const conversationId = selectedConversationId || (conversation === null || conversation === void 0 ? void 0 : conversation.conversationID) || "";
30
29
  const isGroupChat = conversation ? resolveIsGroupChat(conversation) : false;
31
- const messageController = useMessage(conversationId, searchClientMsgID);
30
+ const messageController = useMessage(conversationId, searchClientMsgID, true, true);
32
31
  const { scrollRef, loadMoreOldMessage, handleInfiniteScroll, scrollToBottomIfAtBottom, scrollToMessage, } = useMessageListScroll(Object.assign({ conversationId, userId: (user === null || user === void 0 ? void 0 : user.userID) || authUserID }, messageController));
33
32
  const { loadState, moreOldLoading } = messageController;
34
33
  const isMessageLoading = !conversationId || loadState.initLoading;
@@ -36,9 +35,10 @@ const ConversationMessageList = ({ bottomSlot }) => {
36
35
  const closeToolbox = useCallback(() => setOpenToolboxMessageId(null), []);
37
36
  const { pinMessage, unpinMessage } = usePinMessage();
38
37
  const pinnedTotalCount = useConversationStore((state) => state.pinnedTotalCount);
38
+ const pinnedRemainingCount = useConversationStore((state) => state.pinnedRemainingCount);
39
39
  const [pinLimitModalOpen, setPinLimitModalOpen] = useState(false);
40
40
  const handlePinMessage = useCallback(async (message) => {
41
- if (pinnedTotalCount >= MAX_PINNED_MESSAGES_PER_CONVERSATION) {
41
+ if (pinnedRemainingCount <= 0 && pinnedTotalCount > 0) {
42
42
  setPinLimitModalOpen(true);
43
43
  return;
44
44
  }
@@ -46,18 +46,16 @@ const ConversationMessageList = ({ bottomSlot }) => {
46
46
  await pinMessage(conversationId, message.clientMsgID);
47
47
  toastMessage.success(tCommon("pin_message_success"));
48
48
  }
49
- catch (error) {
50
- console.error("pinMessage failed", error);
49
+ catch (_a) {
51
50
  toastMessage.error(tCommon("pin_message_failed"));
52
51
  }
53
- }, [conversationId, pinMessage, pinnedTotalCount, tCommon]);
52
+ }, [conversationId, pinMessage, pinnedRemainingCount, pinnedTotalCount, tCommon]);
54
53
  const handleUnpinMessage = useCallback(async (message) => {
55
54
  try {
56
55
  await unpinMessage(conversationId, message.clientMsgID);
57
56
  toastMessage.success(tCommon("unpin_message_success"));
58
57
  }
59
- catch (error) {
60
- console.error("unpinMessage failed", error);
58
+ catch (_a) {
61
59
  toastMessage.error(tCommon("unpin_message_failed"));
62
60
  }
63
61
  }, [conversationId, unpinMessage, tCommon]);
@@ -82,6 +80,6 @@ const ConversationMessageList = ({ bottomSlot }) => {
82
80
  target: scrollRef,
83
81
  enable: !!openToolboxMessageId,
84
82
  });
85
- return (_jsxs("div", { "data-testid": "conversation-message-list", className: "relative flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden bg-white", children: [isMessageLoading ? (_jsx("div", { className: "flex flex-1 items-center justify-center py-12", children: _jsx(Spin, {}) })) : (_jsxs(MessageInfiniteScroll, { scrollRef: scrollRef, scrollableTargetId: "scrollableConversationMessagesDiv", loadState: loadState, moreOldLoading: moreOldLoading, onLoadMoreOld: loadMoreOldMessage, onScroll: handleInfiniteScroll, containerClassName: "h-full", empty: _jsx("div", { className: "flex flex-1 items-center justify-center py-12", children: _jsx(Empty, { description: t("empty.no_messages") }) }), children: [bottomSlot, loadState.messageList.map((message, index, array) => (_jsx(MessageItem, { message: message, allMessages: array, isGroupChat: isGroupChat, forceHideTip: index === 0 && !!bottomSlot, contextMenuOpen: openToolboxMessageId === message.clientMsgID, onContextMenuOpenChange: (open) => setOpenToolboxMessageId(open ? message.clientMsgID : null), onQuoteMessage: setQuotedMessage, onRevokeMessage: closeToolbox, onPressQuoteMessage: onPressQuoteMessage, onPinMessage: handlePinMessage, onUnpinMessage: handleUnpinMessage, enableLongPress: true }, message.clientMsgID)))] })), _jsx(PinLimitModal, { open: pinLimitModalOpen, onClose: () => setPinLimitModalOpen(false) })] }));
83
+ return (_jsxs("div", { "data-testid": "conversation-message-list", className: "relative flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden bg-white", children: [isMessageLoading ? (_jsx("div", { className: "flex flex-1 items-center justify-center py-12", children: _jsx(Spin, {}) })) : (_jsxs(MessageInfiniteScroll, { scrollRef: scrollRef, scrollableTargetId: "scrollableConversationMessagesDiv", loadState: loadState, moreOldLoading: moreOldLoading, onLoadMoreOld: loadMoreOldMessage, onScroll: handleInfiniteScroll, containerClassName: "h-full", empty: _jsx("div", { className: "flex flex-1 items-center justify-center py-12", children: _jsx(Empty, { description: t("empty.no_messages") }) }), children: [bottomSlot, loadState.messageList.map((message, index, array) => (_jsx(MessageItem, { message: message, allMessages: array, isGroupChat: isGroupChat, forceHideTip: index === 0 && !!bottomSlot, contextMenuOpen: openToolboxMessageId === message.clientMsgID, onContextMenuOpenChange: (open) => setOpenToolboxMessageId(open ? message.clientMsgID : null), onQuoteMessage: setQuotedMessage, onRevokeMessage: closeToolbox, onPressQuoteMessage: onPressQuoteMessage, onPinMessage: handlePinMessage, onUnpinMessage: handleUnpinMessage, enableLongPress: true }, message.clientMsgID)))] })), _jsx(PinLimitModal, { open: pinLimitModalOpen, max: pinnedTotalCount, onClose: () => setPinLimitModalOpen(false) })] }));
86
84
  };
87
85
  export default ConversationMessageList;
@@ -1,7 +1,8 @@
1
1
  interface PinLimitModalProps {
2
2
  open: boolean;
3
+ max: number;
3
4
  onClose: () => void;
4
5
  }
5
- declare const PinLimitModal: ({ open, onClose }: PinLimitModalProps) => import("react/jsx-runtime").JSX.Element;
6
+ declare const PinLimitModal: ({ open, max, onClose }: PinLimitModalProps) => import("react/jsx-runtime").JSX.Element;
6
7
  export default PinLimitModal;
7
8
  //# sourceMappingURL=PinLimitModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PinLimitModal.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/PinLimitModal.tsx"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,QAAA,MAAM,aAAa,GAAI,mBAAmB,kBAAkB,4CAoC3D,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"PinLimitModal.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/PinLimitModal.tsx"],"names":[],"mappings":"AAGA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,QAAA,MAAM,aAAa,GAAI,wBAAwB,kBAAkB,4CAkChE,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,11 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Modal, Button } from "antd";
3
3
  import { useTranslation } from "react-i18next";
4
- import { MAX_PINNED_MESSAGES_PER_CONVERSATION } from "../../constants";
5
- const PinLimitModal = ({ open, onClose }) => {
4
+ const PinLimitModal = ({ open, max, onClose }) => {
6
5
  const { t } = useTranslation();
7
- return (_jsx(Modal, { open: open, onCancel: onClose, footer: null, centered: true, width: 400, children: _jsxs("div", { className: "flex flex-col gap-2 pt-2", role: "alertdialog", "aria-label": t("pin_limit_modal_title"), children: [_jsx("p", { className: "text-lg font-semibold text-gray-900", children: t("pin_limit_modal_title") }), _jsx("p", { className: "text-base text-gray-600", children: t("pin_limit_modal_description", {
8
- max: MAX_PINNED_MESSAGES_PER_CONVERSATION,
9
- }) }), _jsx(Button, { type: "primary", size: "large", block: true, className: "mt-2 !border-primary-400 !bg-primary-400 !text-white hover:!border-primary-300 hover:!bg-primary-300", onClick: onClose, children: t("pin_limit_modal_confirm") })] }) }));
6
+ return (_jsx(Modal, { open: open, onCancel: onClose, footer: null, centered: true, width: 400, children: _jsxs("div", { className: "flex flex-col gap-2 pt-2", role: "alertdialog", "aria-label": t("pin_limit_modal_title"), children: [_jsx("p", { className: "text-lg font-semibold text-gray-900", children: t("pin_limit_modal_title") }), _jsx("p", { className: "text-base text-gray-600", children: t("pin_limit_modal_description", { max }) }), _jsx(Button, { type: "primary", size: "large", block: true, className: "mt-2 !border-primary-400 !bg-primary-400 !text-white hover:!border-primary-300 hover:!bg-primary-300", onClick: onClose, children: t("pin_limit_modal_confirm") })] }) }));
10
7
  };
11
8
  export default PinLimitModal;
@@ -0,0 +1,11 @@
1
+ import { MessageItem as MessageItemType } from "@openim/wasm-client-sdk";
2
+ interface PinnedMessageItemProps {
3
+ message: MessageItemType;
4
+ contextMenuOpen: boolean;
5
+ onContextMenuOpenChange: (open: boolean) => void;
6
+ onUnpin: (message: MessageItemType) => void;
7
+ onJump: (message: MessageItemType) => void;
8
+ }
9
+ declare const PinnedMessageItem: ({ message, contextMenuOpen, onContextMenuOpenChange, onUnpin, onJump, }: PinnedMessageItemProps) => import("react/jsx-runtime").JSX.Element;
10
+ export default PinnedMessageItem;
11
+ //# sourceMappingURL=PinnedMessageItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PinnedMessageItem.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/PinnedMessageItem.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAczE,UAAU,sBAAsB;IAC9B,OAAO,EAAE,eAAe,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CAC5C;AAED,QAAA,MAAM,iBAAiB,GAAI,yEAMxB,sBAAsB,4CA2FxB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRef } from "react";
4
+ import clsx from "clsx";
5
+ import { Dropdown } from "antd";
6
+ import { useLongPress } from "ahooks";
7
+ import { useTranslation } from "react-i18next";
8
+ import { Icon } from "../../components/icon";
9
+ import MessageBubble from "../../components/message/item/MessageBubble";
10
+ import { renderBubbleContent } from "../../components/message/item/renderMessageContent";
11
+ import { buildMessageToolboxMenuItems, MessageToolboxActionKey, MESSAGE_TOOLBOX_OVERLAY_CLASSNAME, } from "../../components/message/toolbox";
12
+ import useAuthStore from "../../store/auth";
13
+ const LONG_PRESS_DELAY = 500;
14
+ const PinnedMessageItem = ({ message, contextMenuOpen, onContextMenuOpenChange, onUnpin, onJump, }) => {
15
+ const { t } = useTranslation();
16
+ const userID = useAuthStore((state) => state.userID);
17
+ const isMine = (message === null || message === void 0 ? void 0 : message.sendID) === userID;
18
+ const bubbleWrapperRef = useRef(null);
19
+ useLongPress(() => onContextMenuOpenChange(true), bubbleWrapperRef, {
20
+ delay: LONG_PRESS_DELAY,
21
+ });
22
+ const contextMenuItems = buildMessageToolboxMenuItems([
23
+ {
24
+ key: MessageToolboxActionKey.UNPIN,
25
+ label: t("context_menu_unpin"),
26
+ icon: "thumbtack-off-o",
27
+ onClick: () => onUnpin(message),
28
+ },
29
+ {
30
+ key: MessageToolboxActionKey.VIEW_ORIGINAL,
31
+ label: t("context_menu_view_original"),
32
+ icon: "chat-square-o",
33
+ onClick: () => onJump(message),
34
+ },
35
+ ]);
36
+ const bubbleNode = (_jsx(MessageBubble, { isMine: isMine, senderName: message === null || message === void 0 ? void 0 : message.senderNickname, content: renderBubbleContent(message) }));
37
+ const pinnedBadgeNode = (_jsx("span", { "data-testid": "pinned-item-badge", className: clsx("absolute -top-2.5 z-[1] flex h-[22px] w-[26px] items-center justify-center rounded-full border border-white bg-gray-25", isMine ? "left-0" : "right-0"), children: _jsx(Icon, { icon: "thumbtack-b", size: 12, className: "text-primary-400" }) }));
38
+ const unpinButton = (_jsx("button", { type: "button", "data-testid": "pinned-item-unpin", "aria-label": t("context_menu_unpin"), onClick: (event) => {
39
+ event.stopPropagation();
40
+ onUnpin(message);
41
+ }, className: "flex h-7 w-7 shrink-0 items-center justify-center self-center rounded-full bg-gray-25 text-gray-600", children: _jsx(Icon, { icon: "thumbtack-off-o", size: 16 }) }));
42
+ return (_jsxs("div", { className: clsx("flex items-end gap-2 px-3 pb-4", isMine ? "justify-end" : "justify-start"), children: [isMine && unpinButton, _jsx(Dropdown, { menu: { items: contextMenuItems }, trigger: ["contextMenu"], open: contextMenuOpen, onOpenChange: onContextMenuOpenChange, overlayClassName: MESSAGE_TOOLBOX_OVERLAY_CLASSNAME, children: _jsxs("div", { ref: bubbleWrapperRef, className: "relative min-w-0 cursor-pointer", onClick: () => onJump(message), children: [bubbleNode, pinnedBadgeNode] }) }), !isMine && unpinButton] }));
43
+ };
44
+ export default PinnedMessageItem;
@@ -0,0 +1,7 @@
1
+ interface PinnedMessagesPanelProps {
2
+ open: boolean;
3
+ onClose: () => void;
4
+ }
5
+ declare const PinnedMessagesPanel: ({ open, onClose }: PinnedMessagesPanelProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default PinnedMessagesPanel;
7
+ //# sourceMappingURL=PinnedMessagesPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PinnedMessagesPanel.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-detail/PinnedMessagesPanel.tsx"],"names":[],"mappings":"AAYA,UAAU,wBAAwB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,QAAA,MAAM,mBAAmB,GAAI,mBAAmB,wBAAwB,4CAkGvE,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useState } from "react";
4
+ import { Drawer, Button, message as toastMessage } from "antd";
5
+ import { useTranslation } from "react-i18next";
6
+ import { Icon } from "../../components/icon";
7
+ import useConversationStore from "../../store/conversation";
8
+ import { usePinMessage } from "../../hooks/message/usePinMessage";
9
+ import { emit } from "../../utils/events";
10
+ import PinnedMessageItem from "./PinnedMessageItem";
11
+ const PinnedMessagesPanel = ({ open, onClose }) => {
12
+ const { t } = useTranslation();
13
+ const conversation = useConversationStore((state) => state.conversationData);
14
+ const selectedConversationId = useConversationStore((state) => state.selectedConversationId);
15
+ const pinnedMessageList = useConversationStore((state) => state.pinnedMessageList);
16
+ const setSearchClientMsgID = useConversationStore((state) => state.setSearchClientMsgID);
17
+ const conversationId = selectedConversationId || (conversation === null || conversation === void 0 ? void 0 : conversation.conversationID) || "";
18
+ const { unpinMessage } = usePinMessage();
19
+ const [openContextMenuId, setOpenContextMenuId] = useState(null);
20
+ useEffect(() => {
21
+ if (open && pinnedMessageList.length === 0) {
22
+ onClose();
23
+ }
24
+ }, [open, pinnedMessageList.length, onClose]);
25
+ const handleUnpin = async (message) => {
26
+ setOpenContextMenuId(null);
27
+ try {
28
+ await unpinMessage(conversationId, message.clientMsgID);
29
+ }
30
+ catch (error) {
31
+ console.error("unpinMessage failed", error);
32
+ toastMessage.error(t("unpin_message_failed"));
33
+ }
34
+ };
35
+ const handleJump = (message) => {
36
+ setOpenContextMenuId(null);
37
+ onClose();
38
+ setSearchClientMsgID(message.clientMsgID);
39
+ emit("CHAT_LIST_SCROLL_TO_MESSAGE", message.clientMsgID);
40
+ };
41
+ return (_jsx(Drawer, { open: open, onClose: onClose, placement: "bottom", closeIcon: false, height: "90%", styles: {
42
+ body: { padding: 0 },
43
+ mask: { backgroundColor: "rgba(0, 0, 0, 0.8)" },
44
+ content: {
45
+ borderTopLeftRadius: 16,
46
+ borderTopRightRadius: 16,
47
+ overflow: "hidden",
48
+ },
49
+ }, getContainer: false, children: _jsxs("div", { className: "flex h-full flex-col bg-white", children: [_jsxs("div", { className: "flex items-center gap-4 border-b border-gray-25 px-3 py-4", children: [_jsx("span", { className: "flex-1 text-lg font-bold text-gray-900", children: t("pinned_panel_title") }), _jsx(Button, { type: "text", shape: "default", className: "h-6 w-6 p-0 text-gray-900", onClick: onClose, "aria-label": t("pinned_panel_title"), children: _jsx(Icon, { icon: "close-b", size: 24 }) })] }), _jsxs("div", { className: "flex flex-1 flex-col gap-3 overflow-y-auto py-3", children: [_jsx("p", { className: "px-3 text-sm leading-[160%] text-gray-600", children: t("pinned_panel_hint") }), pinnedMessageList.map((message) => (_jsx(PinnedMessageItem, { message: message, contextMenuOpen: openContextMenuId === message.clientMsgID, onContextMenuOpenChange: (isOpen) => setOpenContextMenuId(isOpen ? message.clientMsgID : null), onUnpin: handleUnpin, onJump: handleJump }, message.clientMsgID)))] })] }) }));
50
+ };
51
+ export default PinnedMessagesPanel;
@@ -0,0 +1,4 @@
1
+ import { MessageItem as MessageItemType } from "@openim/wasm-client-sdk";
2
+ export declare const renderMessageByType: (message: MessageItemType) => import("react/jsx-runtime").JSX.Element;
3
+ export declare const renderBubbleContent: (message: MessageItemType, onPressQuoteMessage?: (clientMsgID: string) => void) => import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=renderMessageContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderMessageContent.d.ts","sourceRoot":"","sources":["../../../../src/components/message/item/renderMessageContent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,eAAe,EAAe,MAAM,yBAAyB,CAAC;AAWtF,eAAO,MAAM,mBAAmB,GAAI,SAAS,eAAe,4CAuB3D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,SAAS,eAAe,EACxB,sBAAsB,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,4CAwBpD,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { MessageType } from "@openim/wasm-client-sdk";
3
+ import TextMessageItem from "./TextMessage";
4
+ import ImageMessageItem from "./ImageMessage";
5
+ import FileMessageItem from "./FileMessage";
6
+ import VideoMessageItem from "./VideoMessage";
7
+ import MergeImageMessageItem from "./MergeImageMessage";
8
+ import UrlTextMessageItem from "./UrlTextMessage";
9
+ import RevokeMessageItem from "./RevokeMessage";
10
+ import QuoteMessageItem from "./QuoteMessage";
11
+ import SystemLogMessageItem from "./SystemLogMessage";
12
+ export const renderMessageByType = (message) => {
13
+ switch (message === null || message === void 0 ? void 0 : message.contentType) {
14
+ case MessageType.TextMessage:
15
+ case MessageType.QuoteMessage:
16
+ return _jsx(TextMessageItem, { message: message });
17
+ case MessageType.PictureMessage:
18
+ return _jsx(ImageMessageItem, { message: message });
19
+ case MessageType.FileMessage:
20
+ return _jsx(FileMessageItem, { message: message });
21
+ case MessageType.VideoMessage:
22
+ return _jsx(VideoMessageItem, { message: message });
23
+ case MessageType.MergeMessage:
24
+ return _jsx(MergeImageMessageItem, { message: message });
25
+ case MessageType.UrlTextMessage:
26
+ return _jsx(UrlTextMessageItem, { message: message });
27
+ case MessageType.LogTextMessage:
28
+ return _jsx(SystemLogMessageItem, { message: message });
29
+ case MessageType.RevokeMessage:
30
+ return _jsx(RevokeMessageItem, {});
31
+ default:
32
+ return _jsx(TextMessageItem, { message: message });
33
+ }
34
+ };
35
+ export const renderBubbleContent = (message, onPressQuoteMessage) => {
36
+ if (message === null || message === void 0 ? void 0 : message.quoteElem) {
37
+ return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx(QuoteMessageItem, { message: message, onPressQuoteMessage: onPressQuoteMessage }), renderMessageByType(message)] }));
38
+ }
39
+ if ((message === null || message === void 0 ? void 0 : message.contentType) === MessageType.MergeMessage) {
40
+ return (_jsxs(_Fragment, { children: [_jsx(MergeImageMessageItem, { message: message }), (message === null || message === void 0 ? void 0 : message.textElem) && _jsx(TextMessageItem, { message: message })] }));
41
+ }
42
+ return renderMessageByType(message);
43
+ };
@@ -7,5 +7,4 @@ export declare const PAGE_SIZE: {
7
7
  };
8
8
  export declare const MSG_ITEM_PREFIX = "msg-item-";
9
9
  export declare const MSG_ITEM_CONTENT_PREFIX = "msg-item-content-";
10
- export declare const MAX_PINNED_MESSAGES_PER_CONVERSATION = 5;
11
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,qFAC2D,CAAC;AAErF,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AAEX,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAE3D,eAAO,MAAM,oCAAoC,IAAI,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,qFAC2D,CAAC;AAErF,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AAEX,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,uBAAuB,sBAAsB,CAAC"}
@@ -7,4 +7,3 @@ export const PAGE_SIZE = {
7
7
  };
8
8
  export const MSG_ITEM_PREFIX = "msg-item-";
9
9
  export const MSG_ITEM_CONTENT_PREFIX = "msg-item-content-";
10
- export const MAX_PINNED_MESSAGES_PER_CONVERSATION = 5;
@@ -1 +1 @@
1
- {"version":3,"file":"useGlobalEvent.d.ts","sourceRoot":"","sources":["../../../src/hooks/global/useGlobalEvent.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,cAAc,YA+T1B,CAAC"}
1
+ {"version":3,"file":"useGlobalEvent.d.ts","sourceRoot":"","sources":["../../../src/hooks/global/useGlobalEvent.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,cAAc,YAkV1B,CAAC"}
@@ -3,6 +3,7 @@ import { DChatSDK } from "../../constants/sdk";
3
3
  import { CbEvents, MessageType, SessionType, } from "@openim/wasm-client-sdk";
4
4
  import { BusinessNotificationType, ConnectStatus, CustomType, SyncStatus, } from "../../types/chat";
5
5
  import { pushNewMessage, updateOneMessage } from "../../hooks/message/useMessage";
6
+ import { fetchPinnedMessages } from "../../hooks/message/usePinnedMessages";
6
7
  import { useChatContext } from "../../context/ChatContext";
7
8
  import useConversationStore from "../../store/conversation";
8
9
  import useAuthStore from "../../store/auth";
@@ -49,6 +50,19 @@ export const useGlobalEvent = () => {
49
50
  },
50
51
  });
51
52
  };
53
+ const messagePinnedHandler = ({ data }) => {
54
+ updateOneMessage({
55
+ clientMsgID: data.clientMsgID,
56
+ isPinned: data.isPinned,
57
+ pinnedByUserID: data.operatorUserID,
58
+ pinnedTime: data.pinnedTime,
59
+ });
60
+ const { selectedConversationId, conversationData } = useConversationStore.getState();
61
+ const currentConversationId = selectedConversationId || (conversationData === null || conversationData === void 0 ? void 0 : conversationData.conversationID);
62
+ if (currentConversationId === data.conversationID) {
63
+ void fetchPinnedMessages(data.conversationID);
64
+ }
65
+ };
52
66
  const inCurrentConversation = (newServerMsg) => {
53
67
  const selectedSourceId = useConversationStore.getState().selectedSourceId;
54
68
  switch (newServerMsg.sessionType) {
@@ -203,6 +217,7 @@ export const useGlobalEvent = () => {
203
217
  // message
204
218
  DChatSDK.on(CbEvents.OnRecvNewMessages, newMessageHandler);
205
219
  DChatSDK.on(CbEvents.OnNewRecvMessageRevoked, revokedMessageHandler);
220
+ DChatSDK.on(CbEvents.OnRecvMessagePinned, messagePinnedHandler);
206
221
  // conversation
207
222
  DChatSDK.on(CbEvents.OnConversationChanged, conversationChangeHandler);
208
223
  DChatSDK.on(CbEvents.OnNewConversation, newConversationHandler);
@@ -226,6 +241,7 @@ export const useGlobalEvent = () => {
226
241
  DChatSDK.off(CbEvents.OnSyncServerFailed, syncFailedHandler);
227
242
  // message
228
243
  DChatSDK.off(CbEvents.OnRecvNewMessages, newMessageHandler);
244
+ DChatSDK.off(CbEvents.OnRecvMessagePinned, messagePinnedHandler);
229
245
  // conversation
230
246
  DChatSDK.off(CbEvents.OnConversationChanged, conversationChangeHandler);
231
247
  DChatSDK.off(CbEvents.OnNewConversation, newConversationHandler);
@@ -1,6 +1,6 @@
1
1
  import { MessageItem, MessageType } from "@openim/wasm-client-sdk";
2
2
  export declare const visibleTypeMessage: MessageType[];
3
- export declare const useMessage: (conversationId?: string, searchClientMsgID?: string, enabled?: boolean) => {
3
+ export declare const useMessage: (conversationId?: string, searchClientMsgID?: string, enabled?: boolean, useAppHistory?: boolean) => {
4
4
  loadState: {
5
5
  initLoading: boolean;
6
6
  hasMoreOld: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,WAAW,EAEZ,MAAM,yBAAyB,CAAC;AAUjC,eAAO,MAAM,kBAAkB,eAgB9B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,iBAAiB,MAAM,EACvB,oBAAoB,MAAM,EAC1B,iBAAc;;;;;qBAeO,WAAW,EAAE;;;;;;qBAAb,WAAW,EAAE;;;;;;CA0QnC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,SACpB,CAAC;AAChC,eAAO,MAAM,gBAAgB,GAAI,SAAS,WAAW,SACpB,CAAC;AAClC,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,SACf,CAAC;AAEtC,eAAO,MAAM,kBAAkB,GAC7B,aAAa,WAAW,EAAE,EAC1B,SAAS,WAAW,EACpB,WAAW,MAAM,GAAG,MAAM,KACzB,WAAW,GAAG,SAkBhB,CAAC"}
1
+ {"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,WAAW,EAEZ,MAAM,yBAAyB,CAAC;AAUjC,eAAO,MAAM,kBAAkB,eAgB9B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,iBAAiB,MAAM,EACvB,oBAAoB,MAAM,EAC1B,iBAAc,EACd,uBAAqB;;;;;qBAeA,WAAW,EAAE;;;;;;qBAAb,WAAW,EAAE;;;;;;CA4RnC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,SACpB,CAAC;AAChC,eAAO,MAAM,gBAAgB,GAAI,SAAS,WAAW,SACpB,CAAC;AAClC,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,SACf,CAAC;AAEtC,eAAO,MAAM,kBAAkB,GAC7B,aAAa,WAAW,EAAE,EAC1B,SAAS,WAAW,EACpB,WAAW,MAAM,GAAG,MAAM,KACzB,WAAW,GAAG,SAkBhB,CAAC"}
@@ -25,7 +25,7 @@ export const visibleTypeMessage = [
25
25
  MessageType.RevokeMessage,
26
26
  MessageType.LogTextMessage,
27
27
  ];
28
- export const useMessage = (conversationId, searchClientMsgID, enabled = true) => {
28
+ export const useMessage = (conversationId, searchClientMsgID, enabled = true, useAppHistory = false) => {
29
29
  const { connectStatus, syncStatus } = useChatContext();
30
30
  const userID = useAuthStore((state) => state.userID);
31
31
  const canLoad = enabled &&
@@ -54,7 +54,9 @@ export const useMessage = (conversationId, searchClientMsgID, enabled = true) =>
54
54
  viewType: ViewType.History,
55
55
  };
56
56
  try {
57
- const { data } = await DChatSDK.getAdvancedHistoryMessageList(params);
57
+ const { data } = useAppHistory
58
+ ? await DChatSDK.getAdvancedHistoryMessageListApp(params)
59
+ : await DChatSDK.getAdvancedHistoryMessageList(params);
58
60
  if (conversationIdRef.current !== reqConversationID)
59
61
  return;
60
62
  setTimeout(() => {
@@ -82,14 +84,17 @@ export const useMessage = (conversationId, searchClientMsgID, enabled = true) =>
82
84
  var _a, _b;
83
85
  const reqConversationID = conversationId;
84
86
  try {
85
- const { data } = await DChatSDK.getAdvancedHistoryMessageListReverse({
87
+ const reverseParams = {
86
88
  count: PAGE_SIZE.large,
87
89
  startClientMsgID: loadMore
88
90
  ? ((_b = (_a = latestLoadState.current) === null || _a === void 0 ? void 0 : _a.messageList[0]) === null || _b === void 0 ? void 0 : _b.clientMsgID) || ""
89
91
  : "",
90
92
  conversationID: conversationId !== null && conversationId !== void 0 ? conversationId : "",
91
93
  viewType: ViewType.Search,
92
- });
94
+ };
95
+ const { data } = useAppHistory
96
+ ? await DChatSDK.getAdvancedHistoryMessageListReverseApp(reverseParams)
97
+ : await DChatSDK.getAdvancedHistoryMessageListReverse(reverseParams);
93
98
  if (conversationIdRef.current !== reqConversationID)
94
99
  return;
95
100
  setTimeout(() => {
@@ -118,18 +123,24 @@ export const useMessage = (conversationId, searchClientMsgID, enabled = true) =>
118
123
  if (!searchClientMsgID || !conversationId)
119
124
  return;
120
125
  const reqConversationID = conversationId;
121
- const { data: dataPrev } = await DChatSDK.getAdvancedHistoryMessageList({
126
+ const searchPrevParams = {
122
127
  count: PAGE_SIZE.small,
123
128
  startClientMsgID: searchClientMsgID,
124
129
  conversationID: conversationId !== null && conversationId !== void 0 ? conversationId : "",
125
130
  viewType: ViewType.History,
126
- });
127
- const { data: dataNext } = await DChatSDK.getAdvancedHistoryMessageListReverse({
131
+ };
132
+ const searchNextParams = {
128
133
  count: PAGE_SIZE.small,
129
134
  startClientMsgID: searchClientMsgID,
130
135
  conversationID: conversationId !== null && conversationId !== void 0 ? conversationId : "",
131
136
  viewType: ViewType.Search,
132
- });
137
+ };
138
+ const { data: dataPrev } = useAppHistory
139
+ ? await DChatSDK.getAdvancedHistoryMessageListApp(searchPrevParams)
140
+ : await DChatSDK.getAdvancedHistoryMessageList(searchPrevParams);
141
+ const { data: dataNext } = useAppHistory
142
+ ? await DChatSDK.getAdvancedHistoryMessageListReverseApp(searchNextParams)
143
+ : await DChatSDK.getAdvancedHistoryMessageListReverse(searchNextParams);
133
144
  const { data: dataCurrent } = await DChatSDK.findMessageList([
134
145
  {
135
146
  conversationID: conversationId !== null && conversationId !== void 0 ? conversationId : "",
@@ -2,5 +2,6 @@ export declare const fetchPinnedMessages: (conversationID: string) => Promise<vo
2
2
  export declare const usePinnedMessages: (conversationID: string) => {
3
3
  pinnedMessageList: import("@openim/wasm-client-sdk").MessageItem[];
4
4
  pinnedTotalCount: number;
5
+ pinnedRemainingCount: number;
5
6
  };
6
7
  //# sourceMappingURL=usePinnedMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePinnedMessages.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/usePinnedMessages.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,GAAU,gBAAgB,MAAM,kBAmB/D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,gBAAgB,MAAM;;;CAiBvD,CAAC"}
1
+ {"version":3,"file":"usePinnedMessages.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/usePinnedMessages.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,GAAU,gBAAgB,MAAM,kBAoB/D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,gBAAgB,MAAM;;;;CAqBvD,CAAC"}
@@ -3,7 +3,7 @@ import { DChatSDK } from "../../constants/sdk";
3
3
  import { PAGE_SIZE } from "../../constants";
4
4
  import useConversationStore from "../../store/conversation";
5
5
  export const fetchPinnedMessages = async (conversationID) => {
6
- var _a;
6
+ var _a, _b;
7
7
  const { setPinnedMessageData } = useConversationStore.getState();
8
8
  try {
9
9
  const { data } = await DChatSDK.getPinnedMessageList({
@@ -12,7 +12,7 @@ export const fetchPinnedMessages = async (conversationID) => {
12
12
  pageSize: PAGE_SIZE.small,
13
13
  });
14
14
  const sortedMessageList = [...(data.messageList || [])].sort((first, second) => (second.pinnedTime || 0) - (first.pinnedTime || 0));
15
- setPinnedMessageData(sortedMessageList, data.totalCount || 0, (_a = data.isEnd) !== null && _a !== void 0 ? _a : true);
15
+ setPinnedMessageData(sortedMessageList, data.totalCount || 0, (_a = data.remainingPinCount) !== null && _a !== void 0 ? _a : 0, (_b = data.isEnd) !== null && _b !== void 0 ? _b : true);
16
16
  }
17
17
  catch (error) {
18
18
  console.error("fetchPinnedMessages failed", error);
@@ -21,6 +21,7 @@ export const fetchPinnedMessages = async (conversationID) => {
21
21
  export const usePinnedMessages = (conversationID) => {
22
22
  const pinnedMessageList = useConversationStore((state) => state.pinnedMessageList);
23
23
  const pinnedTotalCount = useConversationStore((state) => state.pinnedTotalCount);
24
+ const pinnedRemainingCount = useConversationStore((state) => state.pinnedRemainingCount);
24
25
  useEffect(() => {
25
26
  if (!conversationID)
26
27
  return;
@@ -29,5 +30,6 @@ export const usePinnedMessages = (conversationID) => {
29
30
  return {
30
31
  pinnedMessageList,
31
32
  pinnedTotalCount,
33
+ pinnedRemainingCount,
32
34
  };
33
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/store/conversation.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAM3C,QAAA,MAAM,oBAAoB,gFA0NvB,CAAC;AAEJ,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/store/conversation.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAM3C,QAAA,MAAM,oBAAoB,gFAoOvB,CAAC;AAEJ,eAAe,oBAAoB,CAAC"}
@@ -17,13 +17,17 @@ const useConversationStore = create((set, get) => ({
17
17
  });
18
18
  },
19
19
  selectedConversationId: "",
20
- setSelectedConversationId: (threadId) => set({
21
- selectedConversationId: threadId,
22
- quotedMessage: null,
23
- pinnedMessageList: [],
24
- pinnedTotalCount: 0,
25
- pinnedListIsEnd: false,
26
- }),
20
+ setSelectedConversationId: (threadId) => {
21
+ const isSameConversation = get().selectedConversationId === threadId;
22
+ set(Object.assign({ selectedConversationId: threadId, quotedMessage: null }, (isSameConversation
23
+ ? {}
24
+ : {
25
+ pinnedMessageList: [],
26
+ pinnedTotalCount: 0,
27
+ pinnedRemainingCount: 0,
28
+ pinnedListIsEnd: false,
29
+ })));
30
+ },
27
31
  selectedSourceId: "",
28
32
  // conversation
29
33
  conversationList: [],
@@ -163,6 +167,7 @@ const useConversationStore = create((set, get) => ({
163
167
  quotedMessage: null,
164
168
  pinnedMessageList: [],
165
169
  pinnedTotalCount: 0,
170
+ pinnedRemainingCount: 0,
166
171
  pinnedListIsEnd: false,
167
172
  });
168
173
  },
@@ -183,11 +188,13 @@ const useConversationStore = create((set, get) => ({
183
188
  //pinned message
184
189
  pinnedMessageList: [],
185
190
  pinnedTotalCount: 0,
191
+ pinnedRemainingCount: 0,
186
192
  pinnedListIsEnd: false,
187
- setPinnedMessageData: (messageList, totalCount, isEnd) => {
193
+ setPinnedMessageData: (messageList, totalCount, remainingCount, isEnd) => {
188
194
  set({
189
195
  pinnedMessageList: messageList,
190
196
  pinnedTotalCount: totalCount,
197
+ pinnedRemainingCount: remainingCount,
191
198
  pinnedListIsEnd: isEnd,
192
199
  });
193
200
  },
@@ -66,8 +66,9 @@ export interface ConversationStore {
66
66
  setQuotedMessage: (message: MessageItem | null) => void;
67
67
  pinnedMessageList: MessageItem[];
68
68
  pinnedTotalCount: number;
69
+ pinnedRemainingCount: number;
69
70
  pinnedListIsEnd: boolean;
70
- setPinnedMessageData: (messageList: MessageItem[], totalCount: number, isEnd: boolean) => void;
71
+ setPinnedMessageData: (messageList: MessageItem[], totalCount: number, remainingCount: number, isEnd: boolean) => void;
71
72
  }
72
73
  export interface IPersonalInfo {
73
74
  fullName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/store/type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/store/type.ts"],"names":[],"mappings":"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"}