@droppii-org/chat-sdk 0.1.68 → 0.1.70
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/ConversationBySessionItem.d.ts.map +1 -1
- package/dist/components/conversation/ConversationBySessionItem.js +4 -1
- package/dist/components/conversation-inbox/ConversationInboxItem.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationInboxItem.js +1 -1
- package/dist/components/message/item/TextMessage.d.ts.map +1 -1
- package/dist/components/message/item/TextMessage.js +6 -0
- package/dist/components/message/item/index.d.ts.map +1 -1
- package/dist/components/message/item/index.js +8 -2
- package/dist/components/message/item/renderMessageContent.d.ts.map +1 -1
- package/dist/components/message/item/renderMessageContent.js +0 -3
- package/dist/components/message/reply/ReplyQuoteContent.d.ts.map +1 -1
- package/dist/components/message/reply/ReplyQuoteContent.js +5 -2
- package/dist/context/ChatContext.d.ts +1 -1
- package/dist/context/ChatContext.d.ts.map +1 -1
- package/dist/context/ChatContext.js +1 -2
- package/dist/hooks/message/useMessage.d.ts +0 -1
- package/dist/hooks/message/useMessage.d.ts.map +1 -1
- package/dist/hooks/message/useMessage.js +0 -12
- package/dist/hooks/message/useSendMessage.d.ts +2 -9
- package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
- package/dist/hooks/message/useSendMessage.js +9 -52
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/locales/vi/common.json +1 -3
- package/dist/types/chat.d.ts +2 -5
- package/dist/types/chat.d.ts.map +1 -1
- package/dist/types/chat.js +4 -4
- package/dist/utils/common.d.ts +8 -4
- package/dist/utils/common.d.ts.map +1 -1
- package/dist/utils/common.js +33 -32
- package/package.json +126 -127
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationBySessionItem.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/ConversationBySessionItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAShD,UAAU,8BAA8B;IACtC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,QAAA,MAAM,yBAAyB,GAAI,iCAGhC,8BAA8B,
|
|
1
|
+
{"version":3,"file":"ConversationBySessionItem.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/ConversationBySessionItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAShD,UAAU,8BAA8B;IACtC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,QAAA,MAAM,yBAAyB,GAAI,iCAGhC,8BAA8B,mDAiEhC,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
|
|
@@ -35,7 +35,10 @@ const ConversationBySessionItem = ({ sessionItem, latestPreview, }) => {
|
|
|
35
35
|
const latestMsgSendTime = (latestPreview === null || latestPreview === void 0 ? void 0 : latestPreview.latestMsgSendTime) || 0;
|
|
36
36
|
if (!conversation)
|
|
37
37
|
return null;
|
|
38
|
-
return (_jsx(ThreadCard, { onClick: () => handleConversationClick(conversation), isSelected: isSelected, unreadCount: conversation.unreadCount, preview: parseLatestMessage(latestMsg, user === null || user === void 0 ? void 0 : user.userID, t
|
|
38
|
+
return (_jsx(ThreadCard, { onClick: () => handleConversationClick(conversation), isSelected: isSelected, unreadCount: conversation.unreadCount, preview: parseLatestMessage(latestMsg, user === null || user === void 0 ? void 0 : user.userID, t, {
|
|
39
|
+
peerType: conversation.peerType,
|
|
40
|
+
showName: conversation.showName,
|
|
41
|
+
}), time: latestMsgSendTime > 0
|
|
39
42
|
? formatTimestamp(latestMsgSendTime, { hasTime: true })
|
|
40
43
|
: undefined, avatar: _jsx(Avatar, { size: 48, src: avatar, children: ((_a = displayName === null || displayName === void 0 ? void 0 : displayName.charAt) === null || _a === void 0 ? void 0 : _a.call(displayName, 0)) || "A" }), title: _jsx("h3", { className: "truncate text-sm font-semibold text-gray-900", children: displayName }) }));
|
|
41
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationInboxItem.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-inbox/ConversationInboxItem.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAYjE,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/C;AAQD,QAAA,MAAM,qBAAqB,GAAI,mBAAmB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"ConversationInboxItem.d.ts","sourceRoot":"","sources":["../../../src/components/conversation-inbox/ConversationInboxItem.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAYjE,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/C;AAQD,QAAA,MAAM,qBAAqB,GAAI,mBAAmB,0BAA0B,4CA2C3E,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -23,7 +23,7 @@ const ConversationInboxItem = ({ item, onClick }) => {
|
|
|
23
23
|
const displayName = resolveConversationDisplayName(item, t);
|
|
24
24
|
const avatarUrl = useConversationAvatarUrl(item);
|
|
25
25
|
const badgeLabel = resolvePeerBadgeLabel(item.peerType, t);
|
|
26
|
-
const latestMessagePreview = parseLatestMessage(item.latestMsg, currentUserId, tCommon);
|
|
26
|
+
const latestMessagePreview = parseLatestMessage(item.latestMsg, currentUserId, tCommon, { peerType: item.peerType, showName: item.showName });
|
|
27
27
|
const latestMessageTime = formatLatestMessageTime(item.latestMsgSendTime || null);
|
|
28
28
|
const unreadCount = (_a = item.unreadCount) !== null && _a !== void 0 ? _a : 0;
|
|
29
29
|
return (_jsx(ThreadCard, { testId: "conversation-inbox-thread-card", onClick: () => onClick(item), unreadCount: unreadCount, time: latestMessageTime, preview: latestMessagePreview, avatar: _jsx(ConversationPeerAvatar, { peerType: item.peerType, displayName: displayName, avatarUrl: avatarUrl, badgeLabel: badgeLabel }), title: _jsx(ConversationInboxTitle, { peerType: item.peerType, displayName: displayName, hasUnread: unreadCount > 0 }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/message/item/TextMessage.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"TextMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/message/item/TextMessage.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAe,MAAM,yBAAyB,CAAC;AAQnE,UAAU,oBAAoB;IAC5B,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,QAAA,MAAM,eAAe,GAAI,OAAO,oBAAoB,mDAqDnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import clsx from "clsx";
|
|
4
|
+
import { MessageType } from "@openim/wasm-client-sdk";
|
|
5
|
+
import useAuthStore from "../../../store/auth";
|
|
4
6
|
import { htmlHasFormatting, sanitizeHtml, stripHtml } from "../../../utils/common";
|
|
5
7
|
import { extractLinkUrls } from "../../../utils/link";
|
|
6
8
|
import LinkText from "./LinkText";
|
|
@@ -8,6 +10,7 @@ import { MESSAGE_TEXT_CLASS } from "./textStyle";
|
|
|
8
10
|
const TextMessageItem = (props) => {
|
|
9
11
|
var _a, _b, _c, _d;
|
|
10
12
|
const { message } = props;
|
|
13
|
+
const isCrm = useAuthStore((state) => state.isCrm);
|
|
11
14
|
let extendMessageInfo = null;
|
|
12
15
|
try {
|
|
13
16
|
extendMessageInfo = JSON.parse((message === null || message === void 0 ? void 0 : message.ex) || "{}");
|
|
@@ -16,6 +19,9 @@ const TextMessageItem = (props) => {
|
|
|
16
19
|
extendMessageInfo = {};
|
|
17
20
|
console.error("Failed to parse extendMessageInfo", error);
|
|
18
21
|
}
|
|
22
|
+
if ((message === null || message === void 0 ? void 0 : message.contentType) === MessageType.CustomMessage && !isCrm) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
19
25
|
const richHtmlContent = ((_b = (_a = extendMessageInfo === null || extendMessageInfo === void 0 ? void 0 : extendMessageInfo.messageInfo) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.content) || "";
|
|
20
26
|
if (richHtmlContent && htmlHasFormatting(richHtmlContent)) {
|
|
21
27
|
const sanitizedContent = sanitizeHtml(richHtmlContent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/message/item/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,IAAI,eAAe,EAG/B,MAAM,yBAAyB,CAAC;AAiCjC,UAAU,gBAAgB;IACxB,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAeD,QAAA,MAAM,WAAW,GAAI,qMAalB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/message/item/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,IAAI,eAAe,EAG/B,MAAM,yBAAyB,CAAC;AAiCjC,UAAU,gBAAgB;IACxB,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAeD,QAAA,MAAM,WAAW,GAAI,qMAalB,gBAAgB,mDAuRlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { Dropdown, message as toastMessage } from "antd";
|
|
|
6
6
|
import { MessageStatus, MessageType, } from "@openim/wasm-client-sdk";
|
|
7
7
|
import MessageBubble from "./MessageBubble";
|
|
8
8
|
import { renderBubbleContent } from "./renderMessageContent";
|
|
9
|
-
import { getVisibleNeighbor,
|
|
9
|
+
import { getVisibleNeighbor, visibleTypeMessage, } from "../../../hooks/message/useMessage";
|
|
10
10
|
import { MSG_ITEM_CONTENT_PREFIX, MSG_ITEM_PREFIX } from "../../../constants";
|
|
11
11
|
import { formatTimestamp } from "../../../utils/common";
|
|
12
12
|
import useAuthStore from "../../../store/auth";
|
|
@@ -127,7 +127,13 @@ const MessageItem = ({ message, allMessages, isGroupChat = false, forceHideTip =
|
|
|
127
127
|
const showAvatar = showPeerInfo && !isMine && !nextSameUser;
|
|
128
128
|
const showSenderName = showPeerInfo && !isMine && !prevSameUser;
|
|
129
129
|
const showTip = forceHideTip ? false : !nextSameUser;
|
|
130
|
-
if (
|
|
130
|
+
if (!isCrm && isInternalMessage) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
if ((!isCrm &&
|
|
134
|
+
(MessageType.CustomMessage === (message === null || message === void 0 ? void 0 : message.contentType) ||
|
|
135
|
+
isSystemLogMessage)) ||
|
|
136
|
+
!visibleTypeMessage.includes(message === null || message === void 0 ? void 0 : message.contentType)) {
|
|
131
137
|
return null;
|
|
132
138
|
}
|
|
133
139
|
const messageContainerProps = {
|
|
@@ -1 +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;
|
|
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"}
|
|
@@ -9,7 +9,6 @@ import UrlTextMessageItem from "./UrlTextMessage";
|
|
|
9
9
|
import RevokeMessageItem from "./RevokeMessage";
|
|
10
10
|
import QuoteMessageItem from "./QuoteMessage";
|
|
11
11
|
import SystemLogMessageItem from "./SystemLogMessage";
|
|
12
|
-
import CustomMessageItem from "./CustomMessage";
|
|
13
12
|
export const renderMessageByType = (message) => {
|
|
14
13
|
switch (message === null || message === void 0 ? void 0 : message.contentType) {
|
|
15
14
|
case MessageType.TextMessage:
|
|
@@ -29,8 +28,6 @@ export const renderMessageByType = (message) => {
|
|
|
29
28
|
return _jsx(SystemLogMessageItem, { message: message });
|
|
30
29
|
case MessageType.RevokeMessage:
|
|
31
30
|
return _jsx(RevokeMessageItem, {});
|
|
32
|
-
case MessageType.CustomMessage:
|
|
33
|
-
return _jsx(CustomMessageItem, { message: message });
|
|
34
31
|
default:
|
|
35
32
|
return _jsx(TextMessageItem, { message: message });
|
|
36
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReplyQuoteContent.d.ts","sourceRoot":"","sources":["../../../../src/components/message/reply/ReplyQuoteContent.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AASnE,eAAO,MAAM,oBAAoB,GAAI,aAAa,WAAW,YACb,CAAC;AAEjD,UAAU,sBAAsB;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,iBAAiB,GAAI,qBAG/B,sBAAsB,
|
|
1
|
+
{"version":3,"file":"ReplyQuoteContent.d.ts","sourceRoot":"","sources":["../../../../src/components/message/reply/ReplyQuoteContent.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AASnE,eAAO,MAAM,oBAAoB,GAAI,aAAa,WAAW,YACb,CAAC;AAEjD,UAAU,sBAAsB;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,iBAAiB,GAAI,qBAG/B,sBAAsB,4CA0BxB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -9,9 +9,12 @@ const TEXT_LIKE_MESSAGE_TYPES = [
|
|
|
9
9
|
];
|
|
10
10
|
export const hasReplyMediaPreview = (contentType) => !TEXT_LIKE_MESSAGE_TYPES.includes(contentType);
|
|
11
11
|
export const ReplyQuoteContent = ({ message, title = "", }) => {
|
|
12
|
-
var _a, _b;
|
|
12
|
+
var _a, _b, _c, _d;
|
|
13
13
|
const { t } = useTranslation();
|
|
14
14
|
const hasMedia = hasReplyMediaPreview(message.contentType);
|
|
15
|
-
return (_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-0.5 pr-2 self-stretch", children: [_jsx("div", { className: "w-[3px] shrink-0 self-stretch rounded bg-gray-cool-200" }), hasMedia && _jsx(ReplyPreviewMedia, { message: message }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col justify-center py-1 pl-2", children: [_jsx("p", { className: "truncate text-[14px] font-medium leading-[160%] text-gray-900", children: title }), _jsx("p", { className: "truncate text-[13px] leading-[160%] text-gray-400", children: generateContentBasedOnMessageType(message.contentType, ((_a = message.textElem) === null || _a === void 0 ? void 0 : _a.content) || ((_b = message.quoteElem) === null || _b === void 0 ? void 0 : _b.text), t,
|
|
15
|
+
return (_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-0.5 pr-2 self-stretch", children: [_jsx("div", { className: "w-[3px] shrink-0 self-stretch rounded bg-gray-cool-200" }), hasMedia && _jsx(ReplyPreviewMedia, { message: message }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col justify-center py-1 pl-2", children: [_jsx("p", { className: "truncate text-[14px] font-medium leading-[160%] text-gray-900", children: title }), _jsx("p", { className: "truncate text-[13px] leading-[160%] text-gray-400", children: generateContentBasedOnMessageType(message.contentType, ((_a = message.textElem) === null || _a === void 0 ? void 0 : _a.content) || ((_b = message.quoteElem) === null || _b === void 0 ? void 0 : _b.text), t, {
|
|
16
|
+
duration: (_c = message.videoElem) === null || _c === void 0 ? void 0 : _c.duration,
|
|
17
|
+
fileName: (_d = message.fileElem) === null || _d === void 0 ? void 0 : _d.fileName,
|
|
18
|
+
}) })] })] }));
|
|
16
19
|
};
|
|
17
20
|
export default ReplyQuoteContent;
|
|
@@ -2,5 +2,5 @@ import "../styles/global.css";
|
|
|
2
2
|
import { ChatContextType, ChatProviderProps } from "../types/chat";
|
|
3
3
|
export declare const ChatContext: import("react").Context<ChatContextType>;
|
|
4
4
|
export declare const useChatContext: () => ChatContextType;
|
|
5
|
-
export declare const ChatProvider: ({ children, config
|
|
5
|
+
export declare const ChatProvider: ({ children, config }: ChatProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
//# sourceMappingURL=ChatContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../src/context/ChatContext.tsx"],"names":[],"mappings":"AAEA,OAAO,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,iBAAiB,EAGlB,MAAM,cAAc,CAAC;AAStB,eAAO,MAAM,WAAW,0CAOtB,CAAC;AAEH,eAAO,MAAM,cAAc,uBAAgC,CAAC;AAE5D,eAAO,MAAM,YAAY,GAAI,
|
|
1
|
+
{"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../src/context/ChatContext.tsx"],"names":[],"mappings":"AAEA,OAAO,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,iBAAiB,EAGlB,MAAM,cAAc,CAAC;AAStB,eAAO,MAAM,WAAW,0CAOtB,CAAC;AAEH,eAAO,MAAM,cAAc,uBAAgC,CAAC;AAE5D,eAAO,MAAM,YAAY,GAAI,sBAAsB,iBAAiB,4CAqGnE,CAAC"}
|
|
@@ -18,7 +18,7 @@ export const ChatContext = createContext({
|
|
|
18
18
|
updateSyncStatus: () => { },
|
|
19
19
|
});
|
|
20
20
|
export const useChatContext = () => useContext(ChatContext);
|
|
21
|
-
export const ChatProvider = ({ children, config
|
|
21
|
+
export const ChatProvider = ({ children, config }) => {
|
|
22
22
|
const [connectStatus, setConnectStatus] = useState(ConnectStatus.Disconnected);
|
|
23
23
|
const [syncStatus, setSyncStatus] = useState(SyncStatus.Success);
|
|
24
24
|
const [user, setUser] = useState(null);
|
|
@@ -91,6 +91,5 @@ export const ChatProvider = ({ children, config, renderCustomMessage, }) => {
|
|
|
91
91
|
getSelfUserInfo,
|
|
92
92
|
updateConnectStatus,
|
|
93
93
|
updateSyncStatus,
|
|
94
|
-
renderCustomMessage,
|
|
95
94
|
}, children: _jsx(ConfigProvider, { getPopupContainer: (triggerNode) => document.body, children: _jsx(QueryClientProvider, { client: queryClient, children: _jsx(MainLayout, { children: children }) }) }) }));
|
|
96
95
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { MessageItem, MessageType } from "@openim/wasm-client-sdk";
|
|
2
2
|
export declare const visibleTypeMessage: MessageType[];
|
|
3
|
-
export declare const isMessageHiddenForViewer: (message: MessageItem, isCrm: boolean) => boolean;
|
|
4
3
|
export declare const useMessage: (conversationId?: string, searchClientMsgID?: string, enabled?: boolean, useAppHistory?: boolean) => {
|
|
5
4
|
loadState: {
|
|
6
5
|
initLoading: 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;
|
|
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;;;;;;CAiSnC,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"}
|
|
@@ -8,8 +8,6 @@ import isEmpty from "lodash/isEmpty";
|
|
|
8
8
|
import { useChatContext } from "../../context/ChatContext";
|
|
9
9
|
import useAuthStore from "../../store/auth";
|
|
10
10
|
import { ConnectStatus, SyncStatus } from "../../types/chat";
|
|
11
|
-
import { isSystemLogMessageType } from "../../utils/messageLog";
|
|
12
|
-
import { isRenderableCustomMessage } from "../../utils/customMessage";
|
|
13
11
|
export const visibleTypeMessage = [
|
|
14
12
|
MessageType.TextMessage,
|
|
15
13
|
MessageType.PictureMessage,
|
|
@@ -27,16 +25,6 @@ export const visibleTypeMessage = [
|
|
|
27
25
|
MessageType.RevokeMessage,
|
|
28
26
|
MessageType.LogTextMessage,
|
|
29
27
|
];
|
|
30
|
-
export const isMessageHiddenForViewer = (message, isCrm) => {
|
|
31
|
-
if (!visibleTypeMessage.includes(message === null || message === void 0 ? void 0 : message.contentType))
|
|
32
|
-
return true;
|
|
33
|
-
if (isCrm)
|
|
34
|
-
return false;
|
|
35
|
-
const isCustomMessage = MessageType.CustomMessage === (message === null || message === void 0 ? void 0 : message.contentType);
|
|
36
|
-
return (Boolean(message === null || message === void 0 ? void 0 : message.isInternal) ||
|
|
37
|
-
isSystemLogMessageType(message === null || message === void 0 ? void 0 : message.contentType) ||
|
|
38
|
-
(isCustomMessage && !isRenderableCustomMessage(message)));
|
|
39
|
-
};
|
|
40
28
|
export const useMessage = (conversationId, searchClientMsgID, enabled = true, useAppHistory = false) => {
|
|
41
29
|
const { connectStatus, syncStatus } = useChatContext();
|
|
42
30
|
const userID = useAuthStore((state) => state.userID);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type CustomMessagePayload } from "../../types/customMessage";
|
|
1
|
+
import { MergerMsgParams, MessageItem } from "@openim/wasm-client-sdk";
|
|
3
2
|
import { BotFlowMeta, ExtendMessageInfo, FileMsgParamsByFile, ImageMsgParamsByFile, UrlMetadataInfo, VideoMsgParamsByFile } from "../../types/chat";
|
|
4
3
|
import { UploadFile } from "antd";
|
|
5
4
|
import { ISessionResponse } from "../../types/dto";
|
|
@@ -13,8 +12,6 @@ export declare const createMergerMessage: (mergerMsgParams: MergerMsgParams) =>
|
|
|
13
12
|
export declare const createVideoMessageByFile: (file: VideoMsgParamsByFile) => Promise<MessageItem | null>;
|
|
14
13
|
export declare const createFileMessageByFile: (file: FileMsgParamsByFile) => Promise<MessageItem | null>;
|
|
15
14
|
export declare const createUrlTextMessage: (text: string, urls: string[]) => Promise<MessageItem | null>;
|
|
16
|
-
export declare const createCustomMessageByParams: (params: CustomMsgParams) => Promise<MessageItem | null>;
|
|
17
|
-
export declare const createCustomMessage: (payload: CustomMessagePayload) => Promise<MessageItem | null>;
|
|
18
15
|
export declare const createQuoteMessage: (text: string, quotedMessage: MessageItem) => Promise<MessageItem | null>;
|
|
19
16
|
export type SendMessageScrollEvent = "CHAT_LIST_SCROLL_TO_BOTTOM" | "CONVERSATION_CHAT_SCROLL_TO_BOTTOM_IF_AT_BOTTOM";
|
|
20
17
|
export interface OfflinePushMeta {
|
|
@@ -29,7 +26,7 @@ export interface UseSendMessageOptions {
|
|
|
29
26
|
}) => OfflinePushMeta;
|
|
30
27
|
}
|
|
31
28
|
export declare const useSendMessage: (options?: UseSendMessageOptions) => {
|
|
32
|
-
sendMergeMessage: ({ richText, plainText, files, currentSession, isInternal, urlMetadata, flow,
|
|
29
|
+
sendMergeMessage: ({ richText, plainText, files, currentSession, isInternal, urlMetadata, flow, }: {
|
|
33
30
|
richText: string;
|
|
34
31
|
plainText: string;
|
|
35
32
|
files?: UploadFile[];
|
|
@@ -37,10 +34,6 @@ export declare const useSendMessage: (options?: UseSendMessageOptions) => {
|
|
|
37
34
|
isInternal: boolean;
|
|
38
35
|
urlMetadata?: UrlMetadataInfo;
|
|
39
36
|
flow?: BotFlowMeta;
|
|
40
|
-
customMessage?: CustomMessagePayload;
|
|
41
|
-
}) => Promise<boolean>;
|
|
42
|
-
sendCustomMessage: (payload: CustomMessagePayload, sendOptions?: {
|
|
43
|
-
currentSession?: ISessionResponse;
|
|
44
37
|
}) => Promise<boolean>;
|
|
45
38
|
resendMessage: (failedMessage: MessageItem) => Promise<void>;
|
|
46
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,WAAW,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAWtB,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAAgB,gBAAgB,EAAyB,MAAM,aAAa,CAAC;AAkBpF,eAAO,MAAM,iBAAiB,GAAI,SAAS;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,YAE0C,CAAC;AAE5C,eAAO,MAAM,iBAAiB,GAAU,MAAM,MAAM,gCAanD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,oBAAoB,gCAaxE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,iBAAiB,eAAe,gCAazE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,oBAAoB,gCAaxE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,MAAM,mBAAmB,gCAatE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,gCActE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,eAAe,WAAW,gCAc3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B,4BAA4B,GAC5B,iDAAiD,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,eAAe,CAAC;CACxE;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,qBAAqB;uGAsPvD;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QACrB,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,IAAI,CAAC,EAAE,WAAW,CAAC;KACpB,KAAG,OAAO,CAAC,OAAO,CAAC;mCAxHE,WAAW;CA8SpC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,kDAKvC;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB,sBA8BA,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { MessageStatus, MessageType, } from "@openim/wasm-client-sdk";
|
|
2
|
-
import { CustomMessageType, } from "../../types/customMessage";
|
|
3
2
|
import { DChatSDK } from "../../constants/sdk";
|
|
4
3
|
import { v4 as uuidv4 } from "uuid";
|
|
5
4
|
import { useCallback } from "react";
|
|
@@ -90,24 +89,6 @@ export const createUrlTextMessage = async (text, urls) => {
|
|
|
90
89
|
});
|
|
91
90
|
return textMessage;
|
|
92
91
|
};
|
|
93
|
-
export const createCustomMessageByParams = async (params) => {
|
|
94
|
-
let customMessage = await DChatSDK.createCustomMessage(params, new Date().getTime().toString())
|
|
95
|
-
.then(({ data }) => {
|
|
96
|
-
return data;
|
|
97
|
-
})
|
|
98
|
-
.catch(({ errCode, errMsg }) => {
|
|
99
|
-
console.error("createCustomMessage", errCode, errMsg);
|
|
100
|
-
return null;
|
|
101
|
-
});
|
|
102
|
-
return customMessage;
|
|
103
|
-
};
|
|
104
|
-
export const createCustomMessage = async (payload) => {
|
|
105
|
-
return createCustomMessageByParams({
|
|
106
|
-
data: JSON.stringify(payload.data),
|
|
107
|
-
extension: payload.type,
|
|
108
|
-
description: payload.type === CustomMessageType.Order ? payload.data.orderCode : "",
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
92
|
export const createQuoteMessage = async (text, quotedMessage) => {
|
|
112
93
|
let textMessage = await DChatSDK.createQuoteMessage({
|
|
113
94
|
text,
|
|
@@ -158,9 +139,12 @@ export const useSendMessage = (options) => {
|
|
|
158
139
|
}
|
|
159
140
|
}, [queryClient]);
|
|
160
141
|
const dispatchMessage = useCallback(async (message, currentSession) => {
|
|
161
|
-
var _a, _b, _c, _d;
|
|
162
|
-
const desc = generateContentBasedOnMessageType(message.contentType, ((_a = message === null || message === void 0 ? void 0 : message.textElem) === null || _a === void 0 ? void 0 : _a.content) || "",
|
|
163
|
-
|
|
142
|
+
var _a, _b, _c, _d, _e, _f;
|
|
143
|
+
const desc = generateContentBasedOnMessageType(message.contentType, ((_a = message === null || message === void 0 ? void 0 : message.textElem) === null || _a === void 0 ? void 0 : _a.content) || "", undefined, {
|
|
144
|
+
duration: (_b = message.videoElem) === null || _b === void 0 ? void 0 : _b.duration,
|
|
145
|
+
fileName: (_c = message.fileElem) === null || _c === void 0 ? void 0 : _c.fileName,
|
|
146
|
+
}) || t("new_message");
|
|
147
|
+
const pushMeta = (_e = (_d = options === null || options === void 0 ? void 0 : options.resolveOfflinePushMeta) === null || _d === void 0 ? void 0 : _d.call(options, { desc })) !== null && _e !== void 0 ? _e : {
|
|
164
148
|
title: (conversationData === null || conversationData === void 0 ? void 0 : conversationData.showName) || "Droppii Chat",
|
|
165
149
|
icon: (conversationData === null || conversationData === void 0 ? void 0 : conversationData.faceURL) || "",
|
|
166
150
|
conversationId: (conversationData === null || conversationData === void 0 ? void 0 : conversationData.conversationID) || "",
|
|
@@ -182,7 +166,7 @@ export const useSendMessage = (options) => {
|
|
|
182
166
|
iOSBadgeCount: true,
|
|
183
167
|
},
|
|
184
168
|
});
|
|
185
|
-
updateOneMessage(Object.assign(Object.assign({}, successMessage), { ex: successMessage.ex || message.ex || "{}", isInternal: (
|
|
169
|
+
updateOneMessage(Object.assign(Object.assign({}, successMessage), { ex: successMessage.ex || message.ex || "{}", isInternal: (_f = successMessage.isInternal) !== null && _f !== void 0 ? _f : message.isInternal }));
|
|
186
170
|
if (!message.isInternal) {
|
|
187
171
|
await syncSessionAfterPublicMessage(currentSession);
|
|
188
172
|
}
|
|
@@ -216,16 +200,7 @@ export const useSendMessage = (options) => {
|
|
|
216
200
|
if (!storedFiles) {
|
|
217
201
|
let newTextPayload = null;
|
|
218
202
|
const textContent = ((_a = failedMessage.textElem) === null || _a === void 0 ? void 0 : _a.content) || failedMessage.content || "";
|
|
219
|
-
if (failedMessage.contentType === MessageType.
|
|
220
|
-
newTextPayload = failedMessage.customElem
|
|
221
|
-
? await createCustomMessageByParams({
|
|
222
|
-
data: failedMessage.customElem.data,
|
|
223
|
-
extension: failedMessage.customElem.extension,
|
|
224
|
-
description: failedMessage.customElem.description,
|
|
225
|
-
})
|
|
226
|
-
: null;
|
|
227
|
-
}
|
|
228
|
-
else if (failedMessage.contentType === MessageType.UrlTextMessage &&
|
|
203
|
+
if (failedMessage.contentType === MessageType.UrlTextMessage &&
|
|
229
204
|
failedMessage.urlTextElem) {
|
|
230
205
|
newTextPayload = await createUrlTextMessage(textContent, failedMessage.urlTextElem.urls);
|
|
231
206
|
}
|
|
@@ -300,18 +275,7 @@ export const useSendMessage = (options) => {
|
|
|
300
275
|
removeOneMessage(failedMessage.clientMsgID);
|
|
301
276
|
await sendMessage(Object.assign(Object.assign({}, newPayload), { ex: failedMessage.ex }));
|
|
302
277
|
}, [sendMessage]);
|
|
303
|
-
const
|
|
304
|
-
if (!conversationData || (!recvID && !groupID))
|
|
305
|
-
return false;
|
|
306
|
-
const customMessage = await createCustomMessage(payload);
|
|
307
|
-
if (!customMessage)
|
|
308
|
-
return false;
|
|
309
|
-
const extendMessageInfo = generateExtendMessageInfo({
|
|
310
|
-
currentSession: sendOptions === null || sendOptions === void 0 ? void 0 : sendOptions.currentSession,
|
|
311
|
-
});
|
|
312
|
-
return sendMessage(Object.assign(Object.assign({}, customMessage), { ex: JSON.stringify(extendMessageInfo) || "{}", isInternal: false }), sendOptions === null || sendOptions === void 0 ? void 0 : sendOptions.currentSession);
|
|
313
|
-
}, [conversationData, recvID, groupID, sendMessage]);
|
|
314
|
-
const sendMergeMessage = useCallback(async ({ richText, plainText, files = [], currentSession, isInternal, urlMetadata, flow, customMessage, }) => {
|
|
278
|
+
const sendMergeMessage = useCallback(async ({ richText, plainText, files = [], currentSession, isInternal, urlMetadata, flow, }) => {
|
|
315
279
|
if (!conversationData || (!recvID && !groupID))
|
|
316
280
|
return false;
|
|
317
281
|
const messageList = [];
|
|
@@ -451,12 +415,6 @@ export const useSendMessage = (options) => {
|
|
|
451
415
|
return false;
|
|
452
416
|
messageList.push(textMessage);
|
|
453
417
|
}
|
|
454
|
-
if (customMessage) {
|
|
455
|
-
const customMessageItem = await createCustomMessage(customMessage);
|
|
456
|
-
if (!customMessageItem)
|
|
457
|
-
return false;
|
|
458
|
-
messageList.push(customMessageItem);
|
|
459
|
-
}
|
|
460
418
|
for (const message of messageList) {
|
|
461
419
|
const isTextLikeMessage = (message === null || message === void 0 ? void 0 : message.contentType) === MessageType.TextMessage ||
|
|
462
420
|
(message === null || message === void 0 ? void 0 : message.contentType) === MessageType.UrlTextMessage ||
|
|
@@ -483,7 +441,6 @@ export const useSendMessage = (options) => {
|
|
|
483
441
|
]);
|
|
484
442
|
return {
|
|
485
443
|
sendMergeMessage,
|
|
486
|
-
sendCustomMessage,
|
|
487
444
|
resendMessage,
|
|
488
445
|
};
|
|
489
446
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -21,12 +21,7 @@ export { ConversationDetailHeader, ConversationDetailInput, } from "./components
|
|
|
21
21
|
export type { ConversationDetailHeaderProps, ConversationDetailInputProps, } from "./components/conversation-detail";
|
|
22
22
|
export { ChatCategory, ChatType, PeerType, } from "./types/conversation";
|
|
23
23
|
export type { ConversationListItem, CreateConversationData, ConversationMember, } from "./types/conversation";
|
|
24
|
-
export { CustomMessageType } from "./types/customMessage";
|
|
25
|
-
export type { CustomElemOrderData, CustomMessagePayload, RenderCustomMessage, RenderCustomMessageArgs, } from "./types/customMessage";
|
|
26
|
-
export { parseCustomMessagePayload, isRenderableCustomMessage, } from "./utils/customMessage";
|
|
27
24
|
export { useDChatAuth } from "./hooks/user/useAuth";
|
|
28
|
-
export { useSendMessage } from "./hooks/message/useSendMessage";
|
|
29
|
-
export type { UseSendMessageOptions } from "./hooks/message/useSendMessage";
|
|
30
25
|
export { useUpdateFcmToken } from "./hooks/user/useUpdateFcmToken";
|
|
31
26
|
export { useConversationList } from "./hooks/conversation/useConversationList";
|
|
32
27
|
export { useCreateConversation } from "./hooks/conversation/useCreateConversation";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAExB,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,cAAc,CAAC;AAC7C,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAEzF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACjF,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACnF,YAAY,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAElF,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAExB,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,cAAc,CAAC;AAC7C,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAEzF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACjF,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACnF,YAAY,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAElF,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,YAAY,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAG1F,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIvE,OAAO,EACL,QAAQ,IAAI,aAAa,EACzB,QAAQ,IAAI,aAAa,EACzB,WAAW,IAAI,gBAAgB,GAChC,CAAC;AAEF,YAAY,EAAE,uBAAuB,EAAE,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -19,12 +19,8 @@ export { default as DChatConversationInbox } from "./screens/conversation-inbox"
|
|
|
19
19
|
export { default as DChatConversationDetail } from "./screens/conversation-detail";
|
|
20
20
|
export { ConversationDetailHeader, ConversationDetailInput, } from "./components/conversation-detail";
|
|
21
21
|
export { ChatCategory, ChatType, PeerType, } from "./types/conversation";
|
|
22
|
-
//Custom message
|
|
23
|
-
export { CustomMessageType } from "./types/customMessage";
|
|
24
|
-
export { parseCustomMessagePayload, isRenderableCustomMessage, } from "./utils/customMessage";
|
|
25
22
|
//Hooks
|
|
26
23
|
export { useDChatAuth } from "./hooks/user/useAuth";
|
|
27
|
-
export { useSendMessage } from "./hooks/message/useSendMessage";
|
|
28
24
|
export { useUpdateFcmToken } from "./hooks/user/useUpdateFcmToken";
|
|
29
25
|
export { useConversationList } from "./hooks/conversation/useConversationList";
|
|
30
26
|
export { useCreateConversation } from "./hooks/conversation/useCreateConversation";
|
|
@@ -100,11 +100,9 @@
|
|
|
100
100
|
"search_message_title": "Tìm kiếm tin nhắn",
|
|
101
101
|
"msg_type_image": "[Hình ảnh]",
|
|
102
102
|
"msg_type_voice": "[Tin nhắn thoại]",
|
|
103
|
-
"msg_type_file": "[
|
|
103
|
+
"msg_type_file": "[File]",
|
|
104
104
|
"msg_type_video": "[Video]",
|
|
105
105
|
"msg_type_unsupported": "Tin nhắn không khả dụng",
|
|
106
|
-
"msg_type_order": "[Đơn hàng] {{orderCode}}",
|
|
107
|
-
"invalid_message": "Tin nhắn không hợp lệ",
|
|
108
106
|
"session_started": "Phiên chat đã bắt đầu",
|
|
109
107
|
"session_ended": "Phiên chat đã kết thúc",
|
|
110
108
|
"new_message": "Bạn có tin nhắn mới",
|
package/dist/types/chat.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { FileMsgParamsByURL, ImageMsgParamsByURL, MessageType, Platform, SelfUserInfo, VideoMsgParamsByURL } from "@openim/wasm-client-sdk";
|
|
2
2
|
export type DChatPlatform = Platform;
|
|
3
3
|
import { UploadFile } from "antd";
|
|
4
|
-
import type { RenderCustomMessage } from "./customMessage";
|
|
5
4
|
export declare enum DChatApplicationType {
|
|
6
5
|
OBEFE = "OBEFE",
|
|
7
6
|
DROPPII = "DROPPII"
|
|
@@ -23,10 +22,10 @@ export declare enum CustomType {
|
|
|
23
22
|
CallingCancel = 203,
|
|
24
23
|
CallingHungup = 204
|
|
25
24
|
}
|
|
26
|
-
export declare enum
|
|
25
|
+
export declare enum CustomMessageType {
|
|
27
26
|
URL = 160
|
|
28
27
|
}
|
|
29
|
-
export type DChatMessageType =
|
|
28
|
+
export type DChatMessageType = CustomMessageType | MessageType;
|
|
30
29
|
export declare enum AccountType {
|
|
31
30
|
Collaborator = "Collaborator",
|
|
32
31
|
NewAgent = "NewAgent",
|
|
@@ -42,12 +41,10 @@ export interface ChatContextType {
|
|
|
42
41
|
getSelfUserInfo: () => void;
|
|
43
42
|
updateConnectStatus: (status: ConnectStatus) => void;
|
|
44
43
|
updateSyncStatus: (status: SyncStatus) => void;
|
|
45
|
-
renderCustomMessage?: RenderCustomMessage;
|
|
46
44
|
}
|
|
47
45
|
export interface ChatProviderProps {
|
|
48
46
|
children: React.ReactNode;
|
|
49
47
|
config: DChatInitAndLoginConfig | null;
|
|
50
|
-
renderCustomMessage?: RenderCustomMessage;
|
|
51
48
|
}
|
|
52
49
|
export interface UrlMetadataInfo {
|
|
53
50
|
title?: string;
|
package/dist/types/chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/types/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/types/chat.ts"],"names":[],"mappings":"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"}
|
package/dist/types/chat.js
CHANGED
|
@@ -23,10 +23,10 @@ export var CustomType;
|
|
|
23
23
|
CustomType[CustomType["CallingCancel"] = 203] = "CallingCancel";
|
|
24
24
|
CustomType[CustomType["CallingHungup"] = 204] = "CallingHungup";
|
|
25
25
|
})(CustomType || (CustomType = {}));
|
|
26
|
-
export var
|
|
27
|
-
(function (
|
|
28
|
-
|
|
29
|
-
})(
|
|
26
|
+
export var CustomMessageType;
|
|
27
|
+
(function (CustomMessageType) {
|
|
28
|
+
CustomMessageType[CustomMessageType["URL"] = 160] = "URL";
|
|
29
|
+
})(CustomMessageType || (CustomMessageType = {}));
|
|
30
30
|
export var AccountType;
|
|
31
31
|
(function (AccountType) {
|
|
32
32
|
AccountType["Collaborator"] = "Collaborator";
|
package/dist/utils/common.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { MessageType } from "@openim/wasm-client-sdk";
|
|
2
2
|
import { TFunction } from "i18next";
|
|
3
3
|
import { UrlMetadataInfo } from "../types/chat";
|
|
4
|
+
import { PeerType } from "../types/conversation";
|
|
4
5
|
export declare const parseUrlMetadata: (ex?: string) => UrlMetadataInfo | undefined;
|
|
5
6
|
export declare function formatDuration(seconds: number): string;
|
|
6
7
|
export declare function renderFileSize(bytes: number): string;
|
|
7
|
-
export declare const generateContentBasedOnMessageType: (contentType: MessageType, plainText?: string, t?: TFunction,
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
export declare const generateContentBasedOnMessageType: (contentType: MessageType, plainText?: string, t?: TFunction, mediaMeta?: {
|
|
9
|
+
duration?: number;
|
|
10
|
+
fileName?: string;
|
|
11
|
+
}) => string;
|
|
12
|
+
export declare const parseLatestMessage: (latestMsg: string, currentUserId?: string, t?: TFunction, conversation?: {
|
|
13
|
+
peerType?: PeerType | string;
|
|
14
|
+
showName?: string;
|
|
10
15
|
}) => string;
|
|
11
|
-
export declare const parseLatestMessage: (latestMsg: string, currentUserId?: string, t?: TFunction) => string;
|
|
12
16
|
export declare const highlightSearch: (text: string, keyword: string, maxLength?: number) => string;
|
|
13
17
|
interface FormatOptions {
|
|
14
18
|
hasTime?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAqB,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAqB,eAAe,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,eAAe,GAAG,SAQhE,CAAC;AAwBF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAapD;AAED,eAAO,MAAM,iCAAiC,GAC5C,aAAa,WAAW,EACxB,YAAY,MAAM,EAClB,IAAI,SAAS,EACb,YAAY;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,WA8BrD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,IAAI,SAAS,EACb,eAAe;IAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,WAuEnE,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,kBAAc,WA2Cf,CAAC;AAEF,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAqBR;AAED,eAAO,MAAM,QAAQ,QAAkD,CAAC;AAExE,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAqC3D;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAOrD,CAAC;AAKF,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,OACf,CAAC;AAEnC,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAO9B,CAAC;AAEZ;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgEjD"}
|
package/dist/utils/common.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MessageType } from "@openim/wasm-client-sdk";
|
|
2
2
|
import dayjs from "dayjs";
|
|
3
3
|
import DOMPurify from "dompurify";
|
|
4
|
-
import {
|
|
4
|
+
import { PeerType } from "../types/conversation";
|
|
5
5
|
import { getSystemLogMessageText } from "./messageLog";
|
|
6
6
|
export const parseUrlMetadata = (ex) => {
|
|
7
7
|
if (!ex)
|
|
@@ -14,17 +14,21 @@ export const parseUrlMetadata = (ex) => {
|
|
|
14
14
|
return undefined;
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
|
-
const getSenderLabelForLatestPreview = (msgData, currentUserId, t) => {
|
|
18
|
-
var _a;
|
|
17
|
+
const getSenderLabelForLatestPreview = (msgData, currentUserId, t, conversation) => {
|
|
18
|
+
var _a, _b;
|
|
19
19
|
if (currentUserId && msgData.sendID === currentUserId) {
|
|
20
20
|
return String(t("you"));
|
|
21
21
|
}
|
|
22
|
-
const
|
|
23
|
-
if (
|
|
24
|
-
return
|
|
22
|
+
const senderNickname = (_a = msgData.senderNickname) === null || _a === void 0 ? void 0 : _a.trim();
|
|
23
|
+
if (senderNickname) {
|
|
24
|
+
return senderNickname;
|
|
25
|
+
}
|
|
26
|
+
if ((conversation === null || conversation === void 0 ? void 0 : conversation.peerType) === PeerType.BOT) {
|
|
27
|
+
return ((_b = conversation.showName) === null || _b === void 0 ? void 0 : _b.trim()) || undefined;
|
|
25
28
|
}
|
|
26
|
-
return
|
|
29
|
+
return undefined;
|
|
27
30
|
};
|
|
31
|
+
const formatWithSender = (sender, content) => sender ? `${sender}: ${content}` : content;
|
|
28
32
|
export function formatDuration(seconds) {
|
|
29
33
|
const minutes = Math.floor(seconds / 60);
|
|
30
34
|
const secs = Math.floor(seconds % 60);
|
|
@@ -42,7 +46,7 @@ export function renderFileSize(bytes) {
|
|
|
42
46
|
}
|
|
43
47
|
return `${size.toFixed(1)} ${units[index]}`;
|
|
44
48
|
}
|
|
45
|
-
export const generateContentBasedOnMessageType = (contentType, plainText, t,
|
|
49
|
+
export const generateContentBasedOnMessageType = (contentType, plainText, t, mediaMeta) => {
|
|
46
50
|
switch (contentType) {
|
|
47
51
|
case MessageType.TextMessage:
|
|
48
52
|
case MessageType.QuoteMessage:
|
|
@@ -54,63 +58,60 @@ export const generateContentBasedOnMessageType = (contentType, plainText, t, cus
|
|
|
54
58
|
return t ? t("msg_type_image") : "[Hình ảnh]";
|
|
55
59
|
case MessageType.VoiceMessage:
|
|
56
60
|
return t ? t("msg_type_voice") : "[Tin nhắn thoại]";
|
|
57
|
-
case MessageType.VideoMessage:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
case MessageType.VideoMessage: {
|
|
62
|
+
const base = t ? t("msg_type_video") : "[Video]";
|
|
63
|
+
const durationLabel = (mediaMeta === null || mediaMeta === void 0 ? void 0 : mediaMeta.duration) != null
|
|
64
|
+
? formatDuration(mediaMeta.duration / 1000)
|
|
65
|
+
: "";
|
|
66
|
+
return durationLabel ? `${base} ${durationLabel}` : base;
|
|
67
|
+
}
|
|
68
|
+
case MessageType.FileMessage: {
|
|
69
|
+
const base = t ? t("msg_type_file") : "[File]";
|
|
70
|
+
return (mediaMeta === null || mediaMeta === void 0 ? void 0 : mediaMeta.fileName) ? `${base} ${mediaMeta.fileName}` : base;
|
|
71
|
+
}
|
|
61
72
|
case MessageType.RevokeMessage:
|
|
62
73
|
return t ? t("revoked") : "Đã thu hồi tin nhắn";
|
|
63
|
-
case MessageType.CustomMessage: {
|
|
64
|
-
if ((customElem === null || customElem === void 0 ? void 0 : customElem.extension) !== CustomMessageType.Order)
|
|
65
|
-
return "";
|
|
66
|
-
const orderCode = (customElem === null || customElem === void 0 ? void 0 : customElem.description) || "";
|
|
67
|
-
return t
|
|
68
|
-
? t("msg_type_order", { orderCode })
|
|
69
|
-
: `[Đơn hàng] ${orderCode}`;
|
|
70
|
-
}
|
|
71
74
|
default:
|
|
72
75
|
return "";
|
|
73
76
|
}
|
|
74
77
|
};
|
|
75
|
-
export const parseLatestMessage = (latestMsg, currentUserId, t) => {
|
|
78
|
+
export const parseLatestMessage = (latestMsg, currentUserId, t, conversation) => {
|
|
76
79
|
var _a, _b, _c, _d, _e, _f;
|
|
77
80
|
if (!latestMsg || !t)
|
|
78
81
|
return "";
|
|
79
82
|
try {
|
|
80
83
|
const msgData = JSON.parse(latestMsg);
|
|
81
84
|
const contentType = msgData === null || msgData === void 0 ? void 0 : msgData.contentType;
|
|
82
|
-
const sender = getSenderLabelForLatestPreview(msgData, currentUserId, t);
|
|
85
|
+
const sender = getSenderLabelForLatestPreview(msgData, currentUserId, t, conversation);
|
|
83
86
|
switch (contentType) {
|
|
84
87
|
case MessageType.LogTextMessage:
|
|
85
88
|
return getSystemLogMessageText(msgData);
|
|
86
89
|
case MessageType.TextMessage:
|
|
87
90
|
case MessageType.QuoteMessage:
|
|
88
91
|
case MessageType.UrlTextMessage:
|
|
89
|
-
return
|
|
92
|
+
return formatWithSender(sender, generateContentBasedOnMessageType(contentType, ((_a = msgData === null || msgData === void 0 ? void 0 : msgData.textElem) === null || _a === void 0 ? void 0 : _a.content) ||
|
|
90
93
|
((_b = msgData === null || msgData === void 0 ? void 0 : msgData.quoteElem) === null || _b === void 0 ? void 0 : _b.text) ||
|
|
91
94
|
((_c = msgData === null || msgData === void 0 ? void 0 : msgData.urlTextElem) === null || _c === void 0 ? void 0 : _c.content) ||
|
|
92
|
-
"")
|
|
95
|
+
""));
|
|
93
96
|
case MessageType.PictureMessage:
|
|
94
97
|
case MessageType.MergeMessage:
|
|
95
98
|
case MessageType.VoiceMessage:
|
|
96
99
|
case MessageType.VideoMessage:
|
|
97
100
|
case MessageType.FileMessage:
|
|
98
|
-
return
|
|
101
|
+
return formatWithSender(sender, generateContentBasedOnMessageType(contentType, undefined, t, {
|
|
102
|
+
duration: (_d = msgData === null || msgData === void 0 ? void 0 : msgData.videoElem) === null || _d === void 0 ? void 0 : _d.duration,
|
|
103
|
+
fileName: (_e = msgData === null || msgData === void 0 ? void 0 : msgData.fileElem) === null || _e === void 0 ? void 0 : _e.fileName,
|
|
104
|
+
}));
|
|
99
105
|
case MessageType.RevokeMessage:
|
|
100
|
-
return t("revoked_with_sender", { name: sender });
|
|
106
|
+
return sender ? t("revoked_with_sender", { name: sender }) : t("revoked");
|
|
101
107
|
case MessageType.CustomMessage: {
|
|
102
|
-
const customData = (
|
|
108
|
+
const customData = (_f = msgData.customElem) === null || _f === void 0 ? void 0 : _f.data;
|
|
103
109
|
if (customData === "#SESSION - START") {
|
|
104
110
|
return t("session_started");
|
|
105
111
|
}
|
|
106
112
|
if (customData === "#SESSION - END") {
|
|
107
113
|
return t("session_ended");
|
|
108
114
|
}
|
|
109
|
-
if (((_e = msgData.customElem) === null || _e === void 0 ? void 0 : _e.extension) === CustomMessageType.Order) {
|
|
110
|
-
return `${sender}: ${t("msg_type_order", {
|
|
111
|
-
orderCode: ((_f = msgData.customElem) === null || _f === void 0 ? void 0 : _f.description) || "",
|
|
112
|
-
})}`;
|
|
113
|
-
}
|
|
114
115
|
return "";
|
|
115
116
|
}
|
|
116
117
|
default:
|
package/package.json
CHANGED
|
@@ -1,127 +1,126 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@droppii-org/chat-sdk",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Droppii React Chat SDK",
|
|
5
|
-
"main": "./dist/index.js",
|
|
6
|
-
"types": "./dist/index.d.ts",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"import": "./dist/index.js",
|
|
10
|
-
"types": "./dist/index.d.ts"
|
|
11
|
-
},
|
|
12
|
-
"./components/*": {
|
|
13
|
-
"import": "./dist/components/*.js",
|
|
14
|
-
"types": "./dist/components/*.d.ts"
|
|
15
|
-
},
|
|
16
|
-
"./hooks/*": {
|
|
17
|
-
"import": "./dist/hooks/*.js",
|
|
18
|
-
"types": "./dist/hooks/*.d.ts"
|
|
19
|
-
},
|
|
20
|
-
"./context/*": {
|
|
21
|
-
"import": "./dist/context/*.js",
|
|
22
|
-
"types": "./dist/context/*.d.ts"
|
|
23
|
-
},
|
|
24
|
-
"./types/*": {
|
|
25
|
-
"import": "./dist/types/*.js",
|
|
26
|
-
"types": "./dist/types/*.d.ts"
|
|
27
|
-
},
|
|
28
|
-
"./screens/*": {
|
|
29
|
-
"import": "./dist/screens/*.js",
|
|
30
|
-
"types": "./dist/screens/*.d.ts"
|
|
31
|
-
},
|
|
32
|
-
"./assets/*": {
|
|
33
|
-
"import": "./dist/assets/*.js",
|
|
34
|
-
"types": "./dist/assets/*.d.ts"
|
|
35
|
-
},
|
|
36
|
-
"./constants/*": {
|
|
37
|
-
"import": "./dist/constants/*.js",
|
|
38
|
-
"types": "./dist/constants/*.d.ts"
|
|
39
|
-
},
|
|
40
|
-
"./layout/*": {
|
|
41
|
-
"import": "./dist/layout/*.js",
|
|
42
|
-
"types": "./dist/layout/*.d.ts"
|
|
43
|
-
},
|
|
44
|
-
"./utils/*": {
|
|
45
|
-
"import": "./dist/utils/*.js",
|
|
46
|
-
"types": "./dist/utils/*.d.ts"
|
|
47
|
-
},
|
|
48
|
-
"./services/*": {
|
|
49
|
-
"import": "./dist/services/*.js",
|
|
50
|
-
"types": "./dist/services/*.d.ts"
|
|
51
|
-
},
|
|
52
|
-
"./locales/*": "./dist/locales/*",
|
|
53
|
-
"./styles/global.css": "./dist/styles/global.css"
|
|
54
|
-
},
|
|
55
|
-
"files": [
|
|
56
|
-
"dist"
|
|
57
|
-
],
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
"@
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
"react
|
|
106
|
-
"react-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
"
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@droppii-org/chat-sdk",
|
|
3
|
+
"version": "0.1.70",
|
|
4
|
+
"description": "Droppii React Chat SDK",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts"
|
|
11
|
+
},
|
|
12
|
+
"./components/*": {
|
|
13
|
+
"import": "./dist/components/*.js",
|
|
14
|
+
"types": "./dist/components/*.d.ts"
|
|
15
|
+
},
|
|
16
|
+
"./hooks/*": {
|
|
17
|
+
"import": "./dist/hooks/*.js",
|
|
18
|
+
"types": "./dist/hooks/*.d.ts"
|
|
19
|
+
},
|
|
20
|
+
"./context/*": {
|
|
21
|
+
"import": "./dist/context/*.js",
|
|
22
|
+
"types": "./dist/context/*.d.ts"
|
|
23
|
+
},
|
|
24
|
+
"./types/*": {
|
|
25
|
+
"import": "./dist/types/*.js",
|
|
26
|
+
"types": "./dist/types/*.d.ts"
|
|
27
|
+
},
|
|
28
|
+
"./screens/*": {
|
|
29
|
+
"import": "./dist/screens/*.js",
|
|
30
|
+
"types": "./dist/screens/*.d.ts"
|
|
31
|
+
},
|
|
32
|
+
"./assets/*": {
|
|
33
|
+
"import": "./dist/assets/*.js",
|
|
34
|
+
"types": "./dist/assets/*.d.ts"
|
|
35
|
+
},
|
|
36
|
+
"./constants/*": {
|
|
37
|
+
"import": "./dist/constants/*.js",
|
|
38
|
+
"types": "./dist/constants/*.d.ts"
|
|
39
|
+
},
|
|
40
|
+
"./layout/*": {
|
|
41
|
+
"import": "./dist/layout/*.js",
|
|
42
|
+
"types": "./dist/layout/*.d.ts"
|
|
43
|
+
},
|
|
44
|
+
"./utils/*": {
|
|
45
|
+
"import": "./dist/utils/*.js",
|
|
46
|
+
"types": "./dist/utils/*.d.ts"
|
|
47
|
+
},
|
|
48
|
+
"./services/*": {
|
|
49
|
+
"import": "./dist/services/*.js",
|
|
50
|
+
"types": "./dist/services/*.d.ts"
|
|
51
|
+
},
|
|
52
|
+
"./locales/*": "./dist/locales/*",
|
|
53
|
+
"./styles/global.css": "./dist/styles/global.css"
|
|
54
|
+
},
|
|
55
|
+
"files": [
|
|
56
|
+
"dist"
|
|
57
|
+
],
|
|
58
|
+
"keywords": [
|
|
59
|
+
"chat",
|
|
60
|
+
"sdk",
|
|
61
|
+
"react",
|
|
62
|
+
"messenger-style"
|
|
63
|
+
],
|
|
64
|
+
"author": "Garru",
|
|
65
|
+
"license": "MIT",
|
|
66
|
+
"publishConfig": {
|
|
67
|
+
"access": "public"
|
|
68
|
+
},
|
|
69
|
+
"dependencies": {
|
|
70
|
+
"@ant-design/icons": "^6.0.0",
|
|
71
|
+
"@lexical/code": "^0.34.0",
|
|
72
|
+
"@lexical/html": "^0.34.0",
|
|
73
|
+
"@lexical/link": "^0.34.0",
|
|
74
|
+
"@lexical/list": "^0.34.0",
|
|
75
|
+
"@lexical/react": "^0.34.0",
|
|
76
|
+
"@lexical/rich-text": "^0.34.0",
|
|
77
|
+
"@openim/wasm-client-sdk": "3.8.3-patch.10",
|
|
78
|
+
"@tailwindcss/postcss": "^4.1.12",
|
|
79
|
+
"@tanstack/react-query": "^5.85.5",
|
|
80
|
+
"ahooks": "^3.9.4",
|
|
81
|
+
"antd": "^5.27.0",
|
|
82
|
+
"axios": "^1.11.0",
|
|
83
|
+
"clsx": "^2.0.0",
|
|
84
|
+
"dayjs": "^1.11.13",
|
|
85
|
+
"dompurify": "^3.3.1",
|
|
86
|
+
"i18next": "^25.5.2",
|
|
87
|
+
"jwt-decode": "^4.0.0",
|
|
88
|
+
"lexical": "^0.34.0",
|
|
89
|
+
"lodash": "^4.17.21",
|
|
90
|
+
"lucide-react": "^0.263.1",
|
|
91
|
+
"mitt": "^3.0.1",
|
|
92
|
+
"postcss": "^8.5.6",
|
|
93
|
+
"query-string": "^9.3.1",
|
|
94
|
+
"react-i18next": "^15.7.3",
|
|
95
|
+
"react-icomoon": "^2.6.1",
|
|
96
|
+
"react-infinite-scroll-component": "^6.1.0",
|
|
97
|
+
"react-sticky-box": "^2.0.5",
|
|
98
|
+
"react-virtuoso": "^4.14.0",
|
|
99
|
+
"tailwind-merge": "^2.0.0",
|
|
100
|
+
"tailwindcss": "^3.3.0",
|
|
101
|
+
"uuid": "^11.1.0",
|
|
102
|
+
"zustand": "^5.0.7"
|
|
103
|
+
},
|
|
104
|
+
"peerDependencies": {
|
|
105
|
+
"react": "^18.0.0",
|
|
106
|
+
"react-dom": "^18.0.0"
|
|
107
|
+
},
|
|
108
|
+
"devDependencies": {
|
|
109
|
+
"@types/dompurify": "^3.2.0",
|
|
110
|
+
"@types/lodash": "^4.17.20",
|
|
111
|
+
"@types/node": "^20.0.0",
|
|
112
|
+
"@types/react": "^18.2.37",
|
|
113
|
+
"@types/react-dom": "^18.2.15",
|
|
114
|
+
"shx": "^0.4.0",
|
|
115
|
+
"tsc-alias": "^1.8.17",
|
|
116
|
+
"typescript": "^5.2.2"
|
|
117
|
+
},
|
|
118
|
+
"scripts": {
|
|
119
|
+
"build": "pnpm build:css && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && pnpm copy-assets",
|
|
120
|
+
"build:css": "tailwindcss -i ./src/styles/global.css -o ./dist/styles/global.css --minify",
|
|
121
|
+
"dev": "tsc --noEmit --watch",
|
|
122
|
+
"lint": "eslint src/",
|
|
123
|
+
"type-check": "tsc --noEmit",
|
|
124
|
+
"copy-assets": "shx cp -r src/assets dist && shx cp -r src/locales dist"
|
|
125
|
+
}
|
|
126
|
+
}
|