@droppii-org/chat-sdk 0.0.33 → 0.0.35
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 +7 -70
- package/dist/components/conversation/DeskConversationList.d.ts.map +1 -1
- package/dist/components/conversation/DeskConversationList.js +44 -22
- package/dist/components/mediaCollection/FileCollection.d.ts.map +1 -1
- package/dist/components/mediaCollection/FileCollection.js +7 -6
- package/dist/components/mediaCollection/ImageCollection.d.ts.map +1 -1
- package/dist/components/mediaCollection/ImageCollection.js +7 -6
- package/dist/components/mediaCollection/VideoCollection.d.ts.map +1 -1
- package/dist/components/mediaCollection/VideoCollection.js +7 -6
- package/dist/components/mediaCollection/index.js +5 -5
- package/dist/components/message/MessageList.d.ts +1 -0
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +67 -15
- package/dist/components/message/footer/index.d.ts +1 -5
- package/dist/components/message/footer/index.d.ts.map +1 -1
- package/dist/components/message/footer/index.js +5 -4
- package/dist/components/message/item/index.d.ts +4 -3
- package/dist/components/message/item/index.d.ts.map +1 -1
- package/dist/components/message/item/index.js +24 -32
- package/dist/components/searchConversation/SearchAll.d.ts +6 -1
- package/dist/components/searchConversation/SearchAll.d.ts.map +1 -1
- package/dist/components/searchConversation/SearchAll.js +28 -4
- package/dist/components/searchConversation/SearchConversationAsMessages.d.ts +4 -1
- package/dist/components/searchConversation/SearchConversationAsMessages.d.ts.map +1 -1
- package/dist/components/searchConversation/SearchConversationAsMessages.js +18 -3
- package/dist/components/searchConversation/SearchConversationAsUsers.d.ts +4 -1
- package/dist/components/searchConversation/SearchConversationAsUsers.d.ts.map +1 -1
- package/dist/components/searchConversation/SearchConversationAsUsers.js +14 -3
- package/dist/components/searchConversation/index.d.ts +4 -1
- package/dist/components/searchConversation/index.d.ts.map +1 -1
- package/dist/components/searchConversation/index.js +8 -7
- package/dist/components/searchConversation/item/SearchItemAsMessage.d.ts +8 -0
- package/dist/components/searchConversation/item/SearchItemAsMessage.d.ts.map +1 -0
- package/dist/components/searchConversation/item/SearchItemAsMessage.js +51 -0
- package/dist/components/searchConversation/item/SearchItemAsUser.d.ts +8 -0
- package/dist/components/searchConversation/item/SearchItemAsUser.d.ts.map +1 -0
- package/dist/components/searchConversation/item/SearchItemAsUser.js +13 -0
- package/dist/components/session/DeskAssignedSession.d.ts.map +1 -1
- package/dist/components/session/DeskAssignedSession.js +11 -13
- package/dist/constants/index.d.ts +3 -0
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +3 -0
- package/dist/context/ChatContext.d.ts.map +1 -1
- package/dist/context/ChatContext.js +1 -0
- package/dist/hooks/message/useMessage.d.ts +8 -5
- package/dist/hooks/message/useMessage.d.ts.map +1 -1
- package/dist/hooks/message/useMessage.js +117 -51
- package/dist/hooks/message/useSendMessage.d.ts +2 -4
- package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
- package/dist/hooks/message/useSendMessage.js +9 -39
- package/dist/hooks/search/useSearchMessage.d.ts +232 -0
- package/dist/hooks/search/useSearchMessage.d.ts.map +1 -0
- package/dist/hooks/search/useSearchMessage.js +71 -0
- package/dist/hooks/session/useGetSession.d.ts +222 -0
- package/dist/hooks/session/useGetSession.d.ts.map +1 -0
- package/dist/hooks/session/useGetSession.js +91 -0
- package/dist/hooks/session/useGetSessionSummary.d.ts.map +1 -1
- package/dist/hooks/session/useGetSessionSummary.js +2 -1
- package/dist/hooks/user/useAuth.d.ts.map +1 -1
- package/dist/hooks/user/useAuth.js +6 -4
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/locales/vi/common.json +4 -1
- package/dist/screens/deskMessage/index.d.ts.map +1 -1
- package/dist/screens/deskMessage/index.js +2 -1
- package/dist/services/query.d.ts +1 -1
- package/dist/services/query.js +1 -1
- package/dist/services/routes.d.ts +1 -1
- package/dist/services/routes.js +1 -1
- package/dist/store/auth.d.ts.map +1 -1
- package/dist/store/auth.js +12 -2
- package/dist/store/conversation.d.ts.map +1 -1
- package/dist/store/conversation.js +7 -1
- package/dist/styles/global.css +1 -1
- package/dist/types/chat.d.ts +7 -8
- package/dist/types/chat.d.ts.map +1 -1
- package/dist/types/chat.js +4 -0
- package/dist/types/dto.d.ts +14 -23
- package/dist/types/dto.d.ts.map +1 -1
- package/dist/utils/common.d.ts +7 -0
- package/dist/utils/common.d.ts.map +1 -1
- package/dist/utils/common.js +83 -0
- package/dist/utils/events.d.ts +1 -0
- package/dist/utils/events.d.ts.map +1 -1
- package/package.json +3 -1
|
@@ -2,33 +2,20 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import dayjs from "dayjs";
|
|
3
3
|
import clsx from "clsx";
|
|
4
4
|
import { Avatar } from "antd";
|
|
5
|
-
import isToday from "dayjs/plugin/isToday";
|
|
6
5
|
import { useChatContext } from "../../../context/ChatContext";
|
|
7
|
-
import { MessageType,
|
|
6
|
+
import { MessageType, } from "@openim/wasm-client-sdk";
|
|
8
7
|
import TextMessageItem from "./TextMessage";
|
|
9
8
|
import ImageMessageItem from "./ImageMessage";
|
|
10
9
|
import FileMessageItem from "./FileMessage";
|
|
11
10
|
import VideoMessageItem from "./VideoMessage";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
MessageType.FileMessage,
|
|
19
|
-
MessageType.AtTextMessage,
|
|
20
|
-
MessageType.MergeMessage,
|
|
21
|
-
MessageType.CardMessage,
|
|
22
|
-
MessageType.LocationMessage,
|
|
23
|
-
MessageType.CustomMessage,
|
|
24
|
-
MessageType.QuoteMessage,
|
|
25
|
-
MessageType.FaceMessage,
|
|
26
|
-
];
|
|
27
|
-
const MessageItem = ({ groupMessage }) => {
|
|
11
|
+
import { getVisibleNeighbor, visibleTypeMessage, } from "../../../hooks/message/useMessage";
|
|
12
|
+
import { MSG_ITEM_CONTENT_PREFIX, MSG_ITEM_PREFIX } from "../../../constants";
|
|
13
|
+
import { formatTimestamp } from "../../../utils/common";
|
|
14
|
+
const BREAK_TIME = 5;
|
|
15
|
+
const MessageItem = ({ message, allMessages }) => {
|
|
16
|
+
var _a, _b, _c, _d;
|
|
28
17
|
const { user } = useChatContext();
|
|
29
|
-
const
|
|
30
|
-
const isToday = dayjs(groupMessage === null || groupMessage === void 0 ? void 0 : groupMessage.sendTime).isToday();
|
|
31
|
-
const isVisibleGroup = messagesInGroup === null || messagesInGroup === void 0 ? void 0 : messagesInGroup.some((message) => visibleTypeMessage.includes(message === null || message === void 0 ? void 0 : message.contentType));
|
|
18
|
+
const isVisibleGroup = visibleTypeMessage.includes(message === null || message === void 0 ? void 0 : message.contentType);
|
|
32
19
|
const renderMessageByType = (message) => {
|
|
33
20
|
switch (message === null || message === void 0 ? void 0 : message.contentType) {
|
|
34
21
|
case MessageType.TextMessage:
|
|
@@ -45,16 +32,21 @@ const MessageItem = ({ groupMessage }) => {
|
|
|
45
32
|
};
|
|
46
33
|
if (!isVisibleGroup)
|
|
47
34
|
return null;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
35
|
+
const isMine = (message === null || message === void 0 ? void 0 : message.sendID) === (user === null || user === void 0 ? void 0 : user.userID);
|
|
36
|
+
const previousMessage = getVisibleNeighbor(allMessages, message, "prev");
|
|
37
|
+
const nextMessage = getVisibleNeighbor(allMessages, message, "next");
|
|
38
|
+
const prevSameUser = (previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.sendID) === (message === null || message === void 0 ? void 0 : message.sendID);
|
|
39
|
+
const nextSameUser = (nextMessage === null || nextMessage === void 0 ? void 0 : nextMessage.sendID) === (message === null || message === void 0 ? void 0 : message.sendID);
|
|
40
|
+
const prevTimeBreak = !previousMessage ||
|
|
41
|
+
dayjs(message.sendTime).diff(previousMessage.sendTime, "minute") >
|
|
42
|
+
BREAK_TIME;
|
|
43
|
+
const nextTimeBreak = !nextMessage ||
|
|
44
|
+
dayjs(nextMessage.sendTime).diff(message.sendTime, "minute") > BREAK_TIME;
|
|
45
|
+
const showTimeBreak = prevTimeBreak;
|
|
46
|
+
const isFirstInGroup = prevTimeBreak || !prevSameUser;
|
|
47
|
+
const isLastInGroup = nextTimeBreak || !nextSameUser;
|
|
48
|
+
return (_jsxs("div", { className: "flex flex-col gap-2 py-1 px-3 sm:p x-4", id: `${MSG_ITEM_PREFIX}${message === null || message === void 0 ? void 0 : message.clientMsgID}`, children: [showTimeBreak && (_jsx("div", { className: "flex justify-center", children: _jsx("span", { className: "text-xs text-gray-600 text-center bg-neutral-100 px-2 py-1 rounded-full", children: formatTimestamp(message.sendTime) }) })), _jsx("div", { className: clsx("flex", isMine ? "justify-end" : "justify-start"), children: _jsxs("div", { className: clsx("flex flex-1 items-end gap-2", isMine ? "justify-end" : "justify-start"), children: [!isMine && (_jsx("div", { className: "flex items-center justify-center w-[32px] h-[32px]", children: isLastInGroup && (_jsx(Avatar, { children: ((_b = (_a = message === null || message === void 0 ? void 0 : message.senderNickname) === null || _a === void 0 ? void 0 : _a.charAt) === null || _b === void 0 ? void 0 : _b.call(_a, 0)) || "A" })) })), _jsxs("div", { className: clsx("flex flex-col flex-[0.8]", isMine ? "items-end" : "items-start"), children: [isFirstInGroup && !isMine && (_jsx("span", { className: "text-xs text-gray-500 mb-1 px-3", children: message === null || message === void 0 ? void 0 : message.senderNickname })), _jsxs("div", { className: clsx("px-3 py-2 rounded-2xl max-w-full break-words flex flex-col flex-1 text-gray-900 gap-1", isMine ? "bg-blue-100" : "bg-white"), id: `${MSG_ITEM_CONTENT_PREFIX}${message === null || message === void 0 ? void 0 : message.clientMsgID}`, children: [(message === null || message === void 0 ? void 0 : message.contentType) === MessageType.MergeMessage ? (_jsxs("div", { children: [(_d = (_c = message === null || message === void 0 ? void 0 : message.mergeElem) === null || _c === void 0 ? void 0 : _c.multiMessage) === null || _d === void 0 ? void 0 : _d.map((item) => {
|
|
49
|
+
return renderMessageByType(item);
|
|
50
|
+
}), (message === null || message === void 0 ? void 0 : message.textElem) && _jsx(TextMessageItem, { message: message })] })) : (renderMessageByType(message)), _jsx("span", { className: clsx("text-xs text-gray-500 text-right text-gray-500"), children: dayjs(message === null || message === void 0 ? void 0 : message.sendTime).format("HH:mm") })] })] })] }) }, message === null || message === void 0 ? void 0 : message.clientMsgID)] }, message === null || message === void 0 ? void 0 : message.clientMsgID));
|
|
59
51
|
};
|
|
60
52
|
export default MessageItem;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { SearchConversationTabKey } from ".";
|
|
2
|
+
interface SearchConversationAllProps {
|
|
3
|
+
searchTerm: string;
|
|
4
|
+
setActiveKey: (key: SearchConversationTabKey) => void;
|
|
5
|
+
}
|
|
6
|
+
declare const SearchConversationAll: ({ searchTerm, setActiveKey, }: SearchConversationAllProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
7
|
export default SearchConversationAll;
|
|
3
8
|
//# sourceMappingURL=SearchAll.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchAll.d.ts","sourceRoot":"","sources":["../../../src/components/searchConversation/SearchAll.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SearchAll.d.ts","sourceRoot":"","sources":["../../../src/components/searchConversation/SearchAll.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,MAAM,GAAG,CAAC;AAE7C,UAAU,0BAA0B;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACvD;AACD,QAAA,MAAM,qBAAqB,GAAI,+BAG5B,0BAA0B,4CAkH5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,8 +1,32 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Empty } from "antd";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, Empty, Spin } from "antd";
|
|
3
3
|
import { useTranslation } from "react-i18next";
|
|
4
|
-
|
|
4
|
+
import { useSearchMessage } from "../../hooks/search/useSearchMessage";
|
|
5
|
+
import { MessageType } from "@openim/wasm-client-sdk";
|
|
6
|
+
import { Icon } from "../icon";
|
|
7
|
+
import SearchItemAsMessage from "./item/SearchItemAsMessage";
|
|
8
|
+
import { useGetSession } from "../../hooks/session/useGetSession";
|
|
9
|
+
import SearchItemAsUser from "./item/SearchItemAsUser";
|
|
10
|
+
import { SearchConversationTabKey } from ".";
|
|
11
|
+
const SearchConversationAll = ({ searchTerm = "", setActiveKey, }) => {
|
|
5
12
|
const { t } = useTranslation();
|
|
6
|
-
|
|
13
|
+
const { dataFlatten: messages, isLoading: isLoadingMessage, hasNextPage: hasNextPageMessage, } = useSearchMessage({
|
|
14
|
+
payload: {
|
|
15
|
+
searchTerm: searchTerm.trim(),
|
|
16
|
+
contentType: MessageType.TextMessage,
|
|
17
|
+
},
|
|
18
|
+
options: { pageSize: 5 },
|
|
19
|
+
});
|
|
20
|
+
const { dataFlatten: sessions, isLoading: isLoadingSession, hasNextPage: hasNextPageSession, } = useGetSession({
|
|
21
|
+
searchTerm: searchTerm.trim(),
|
|
22
|
+
}, { pageSize: 5 });
|
|
23
|
+
if (searchTerm.trim() === "" ||
|
|
24
|
+
(messages.length === 0 && sessions.length === 0)) {
|
|
25
|
+
return (_jsx("div", { className: "h-full overflow-auto", children: _jsx(Empty, { description: t("no_conversation") }) }));
|
|
26
|
+
}
|
|
27
|
+
if (isLoadingMessage || isLoadingSession) {
|
|
28
|
+
return (_jsx("div", { className: "h-full overflow-auto flex items-center justify-center", children: _jsx(Spin, {}) }));
|
|
29
|
+
}
|
|
30
|
+
return (_jsxs("div", { className: "h-full overflow-auto", children: [sessions.length > 0 && (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between px-3", children: [_jsx("span", { className: "text-xs font-medium uppercase flex-1 text-gray-600", children: t("users") }), hasNextPageSession && (_jsx(Button, { type: "link", icon: _jsx(Icon, { icon: "angle-right-o", size: 18, className: "!align-[-4px]" }), iconPosition: "end", className: "p-0 gap-1", onClick: () => setActiveKey === null || setActiveKey === void 0 ? void 0 : setActiveKey(SearchConversationTabKey.Users), children: t("see_more") }))] }), _jsx("div", { children: sessions.map((session) => (_jsx(SearchItemAsUser, { session: session, searchTerm: searchTerm }))) })] })), messages.length > 0 && (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between px-3", children: [_jsx("span", { className: "text-xs font-medium uppercase flex-1 text-gray-600", children: t("messages") }), hasNextPageMessage && (_jsx(Button, { type: "link", icon: _jsx(Icon, { icon: "angle-right-o", size: 18, className: "!align-[-4px]" }), iconPosition: "end", className: "p-0 gap-1", onClick: () => setActiveKey === null || setActiveKey === void 0 ? void 0 : setActiveKey(SearchConversationTabKey.Messages), children: t("see_more") }))] }), _jsx("div", { children: messages.map((message) => (_jsx(SearchItemAsMessage, { message: message.chatLog, searchTerm: searchTerm }))) })] }))] }));
|
|
7
31
|
};
|
|
8
32
|
export default SearchConversationAll;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
interface SearchConversationAsMessagesProps {
|
|
2
|
+
searchTerm: string;
|
|
3
|
+
}
|
|
4
|
+
declare const SearchConversationAsMessages: (props: SearchConversationAsMessagesProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
5
|
export default SearchConversationAsMessages;
|
|
3
6
|
//# sourceMappingURL=SearchConversationAsMessages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchConversationAsMessages.d.ts","sourceRoot":"","sources":["../../../src/components/searchConversation/SearchConversationAsMessages.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SearchConversationAsMessages.d.ts","sourceRoot":"","sources":["../../../src/components/searchConversation/SearchConversationAsMessages.tsx"],"names":[],"mappings":"AAOA,UAAU,iCAAiC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,QAAA,MAAM,4BAA4B,GAChC,OAAO,iCAAiC,4CAuCzC,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Empty } from "antd";
|
|
2
|
+
import { Empty, Spin } from "antd";
|
|
3
3
|
import { useTranslation } from "react-i18next";
|
|
4
|
-
|
|
4
|
+
import { useSearchMessage } from "../../hooks/search/useSearchMessage";
|
|
5
|
+
import { MessageType } from "@openim/wasm-client-sdk";
|
|
6
|
+
import InfiniteScroll from "react-infinite-scroll-component";
|
|
7
|
+
import SearchItemAsMessage from "./item/SearchItemAsMessage";
|
|
8
|
+
const SearchConversationAsMessages = (props) => {
|
|
9
|
+
const { searchTerm = "" } = props;
|
|
5
10
|
const { t } = useTranslation();
|
|
6
|
-
|
|
11
|
+
const { dataFlatten, hasNextPage, fetchNextPage, isLoading } = useSearchMessage({
|
|
12
|
+
payload: {
|
|
13
|
+
searchTerm: searchTerm.trim(),
|
|
14
|
+
contentType: MessageType.TextMessage,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
if ((dataFlatten.length === 0 && !isLoading) || searchTerm.trim() === "")
|
|
18
|
+
return _jsx(Empty, { description: t("no_conversation") });
|
|
19
|
+
if (isLoading)
|
|
20
|
+
return (_jsx("div", { className: "flex items-center justify-center", children: _jsx(Spin, {}) }));
|
|
21
|
+
return (_jsx("div", { id: "scrollableVideoDiv", className: "h-full overflow-auto", children: _jsx(InfiniteScroll, { dataLength: dataFlatten.length, next: fetchNextPage, hasMore: hasNextPage, loader: _jsx("div", { className: "flex items-center justify-center py-2", children: _jsx(Spin, {}) }), scrollableTarget: "scrollableVideoDiv", children: dataFlatten.map((item) => (_jsx(SearchItemAsMessage, { message: item.chatLog, searchTerm: searchTerm }))) }) }));
|
|
7
22
|
};
|
|
8
23
|
export default SearchConversationAsMessages;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
interface SearchConversationAsUsersProps {
|
|
2
|
+
searchTerm: string;
|
|
3
|
+
}
|
|
4
|
+
declare const SearchConversationAsUsers: (props: SearchConversationAsUsersProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
5
|
export default SearchConversationAsUsers;
|
|
3
6
|
//# sourceMappingURL=SearchConversationAsUsers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchConversationAsUsers.d.ts","sourceRoot":"","sources":["../../../src/components/searchConversation/SearchConversationAsUsers.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SearchConversationAsUsers.d.ts","sourceRoot":"","sources":["../../../src/components/searchConversation/SearchConversationAsUsers.tsx"],"names":[],"mappings":"AAMA,UAAU,8BAA8B;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,QAAA,MAAM,yBAAyB,GAAI,OAAO,8BAA8B,4CAkCvE,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Empty } from "antd";
|
|
2
|
+
import { Empty, Spin } from "antd";
|
|
3
3
|
import { useTranslation } from "react-i18next";
|
|
4
|
-
|
|
4
|
+
import InfiniteScroll from "react-infinite-scroll-component";
|
|
5
|
+
import SearchItemAsUser from "./item/SearchItemAsUser";
|
|
6
|
+
import { useGetSession } from "../../hooks/session/useGetSession";
|
|
7
|
+
const SearchConversationAsUsers = (props) => {
|
|
8
|
+
const { searchTerm = "" } = props;
|
|
5
9
|
const { t } = useTranslation();
|
|
6
|
-
|
|
10
|
+
const { dataFlatten, hasNextPage, fetchNextPage, isLoading } = useGetSession({
|
|
11
|
+
searchTerm: searchTerm.trim(),
|
|
12
|
+
});
|
|
13
|
+
if ((dataFlatten.length === 0 && !isLoading) || searchTerm.trim() === "")
|
|
14
|
+
return _jsx(Empty, { description: t("no_conversation") });
|
|
15
|
+
if (isLoading)
|
|
16
|
+
return (_jsx("div", { className: "flex items-center justify-center", children: _jsx(Spin, {}) }));
|
|
17
|
+
return (_jsx("div", { id: "scrollableVideoDiv", className: "h-full overflow-auto", children: _jsx(InfiniteScroll, { dataLength: dataFlatten.length, next: fetchNextPage, hasMore: hasNextPage, loader: _jsx("div", { className: "flex items-center justify-center py-2", children: _jsx(Spin, {}) }), scrollableTarget: "scrollableVideoDiv", children: dataFlatten.map((item) => (_jsx(SearchItemAsUser, { session: item, searchTerm: searchTerm }))) }) }));
|
|
7
18
|
};
|
|
8
19
|
export default SearchConversationAsUsers;
|
|
@@ -3,6 +3,9 @@ export declare enum SearchConversationTabKey {
|
|
|
3
3
|
Users = "users",
|
|
4
4
|
Messages = "messages"
|
|
5
5
|
}
|
|
6
|
-
|
|
6
|
+
interface SearchConversationProps {
|
|
7
|
+
searchTerm: string;
|
|
8
|
+
}
|
|
9
|
+
declare const SearchConversation: ({ searchTerm }: SearchConversationProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
10
|
export default SearchConversation;
|
|
8
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/searchConversation/index.tsx"],"names":[],"mappings":"AASA,oBAAY,wBAAwB;IAClC,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED,QAAA,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/searchConversation/index.tsx"],"names":[],"mappings":"AASA,oBAAY,wBAAwB;IAClC,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED,UAAU,uBAAuB;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,QAAA,MAAM,kBAAkB,GAAI,gBAAgB,uBAAuB,4CA0ClE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { Tabs } from "antd";
|
|
4
|
-
import { useMemo } from "react";
|
|
4
|
+
import { useMemo, useState } from "react";
|
|
5
5
|
import { useTranslation } from "react-i18next";
|
|
6
6
|
import SearchConversationAll from "./SearchAll";
|
|
7
7
|
import SearchConversationAsUsers from "./SearchConversationAsUsers";
|
|
@@ -12,27 +12,28 @@ export var SearchConversationTabKey;
|
|
|
12
12
|
SearchConversationTabKey["Users"] = "users";
|
|
13
13
|
SearchConversationTabKey["Messages"] = "messages";
|
|
14
14
|
})(SearchConversationTabKey || (SearchConversationTabKey = {}));
|
|
15
|
-
const SearchConversation = () => {
|
|
15
|
+
const SearchConversation = ({ searchTerm }) => {
|
|
16
16
|
const { t } = useTranslation();
|
|
17
|
+
const [activeKey, setActiveKey] = useState(SearchConversationTabKey.All);
|
|
17
18
|
const items = useMemo(() => {
|
|
18
19
|
return [
|
|
19
20
|
{
|
|
20
21
|
key: SearchConversationTabKey.All,
|
|
21
22
|
label: t("all"),
|
|
22
|
-
children: _jsx(SearchConversationAll, {}),
|
|
23
|
+
children: (_jsx(SearchConversationAll, { searchTerm: searchTerm, setActiveKey: setActiveKey })),
|
|
23
24
|
},
|
|
24
25
|
{
|
|
25
26
|
key: SearchConversationTabKey.Users,
|
|
26
27
|
label: t("users"),
|
|
27
|
-
children: _jsx(SearchConversationAsUsers, {}),
|
|
28
|
+
children: _jsx(SearchConversationAsUsers, { searchTerm: searchTerm }),
|
|
28
29
|
},
|
|
29
30
|
{
|
|
30
31
|
key: SearchConversationTabKey.Messages,
|
|
31
32
|
label: t("messages"),
|
|
32
|
-
children: _jsx(SearchConversationAsMessages, {}),
|
|
33
|
+
children: _jsx(SearchConversationAsMessages, { searchTerm: searchTerm }),
|
|
33
34
|
},
|
|
34
35
|
];
|
|
35
|
-
}, [t]);
|
|
36
|
-
return (_jsx("div", { children: _jsx(Tabs, { defaultActiveKey: SearchConversationTabKey.All, items: items }) }));
|
|
36
|
+
}, [t, searchTerm]);
|
|
37
|
+
return (_jsx("div", { className: "h-full", children: _jsx(Tabs, { defaultActiveKey: SearchConversationTabKey.All, items: items, className: "h-full", activeKey: activeKey, onChange: (key) => setActiveKey(key) }) }));
|
|
37
38
|
};
|
|
38
39
|
export default SearchConversation;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MessageItem } from "@openim/wasm-client-sdk";
|
|
2
|
+
interface SearchItemAsMessageProps {
|
|
3
|
+
message: MessageItem;
|
|
4
|
+
searchTerm: string;
|
|
5
|
+
}
|
|
6
|
+
declare const SearchItemAsMessage: (props: SearchItemAsMessageProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default SearchItemAsMessage;
|
|
8
|
+
//# sourceMappingURL=SearchItemAsMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchItemAsMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/searchConversation/item/SearchItemAsMessage.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAe,MAAM,yBAAyB,CAAC;AASnE,UAAU,wBAAwB;IAChC,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,mBAAmB,GAAI,OAAO,wBAAwB,4CAwE3D,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 { SessionType } from "@openim/wasm-client-sdk";
|
|
4
|
+
import { Avatar } from "antd";
|
|
5
|
+
import { formatTimestamp, highlightSearch } from "../../../utils/common";
|
|
6
|
+
import { DChatSDK } from "../../../constants/sdk";
|
|
7
|
+
import { useChatContext } from "../../../context/ChatContext";
|
|
8
|
+
import { message as antdMessage } from "antd";
|
|
9
|
+
import { useTranslation } from "react-i18next";
|
|
10
|
+
import useConversationStore from "../../../store/conversation";
|
|
11
|
+
const SearchItemAsMessage = (props) => {
|
|
12
|
+
var _a;
|
|
13
|
+
const { t } = useTranslation();
|
|
14
|
+
const { message, searchTerm = "" } = props;
|
|
15
|
+
const { user } = useChatContext();
|
|
16
|
+
const onPressItem = async () => {
|
|
17
|
+
const { data } = await DChatSDK.getOneConversation({
|
|
18
|
+
sourceID: message.sessionType === SessionType.Group
|
|
19
|
+
? message.groupID
|
|
20
|
+
: (user === null || user === void 0 ? void 0 : user.userID) !== message.sendID
|
|
21
|
+
? message.sendID
|
|
22
|
+
: message.recvID,
|
|
23
|
+
sessionType: message.sessionType,
|
|
24
|
+
});
|
|
25
|
+
if (!data) {
|
|
26
|
+
return antdMessage.error(t("err_get_conversation"));
|
|
27
|
+
}
|
|
28
|
+
useConversationStore
|
|
29
|
+
.getState()
|
|
30
|
+
.setConversationData(data, message.clientMsgID);
|
|
31
|
+
useConversationStore
|
|
32
|
+
.getState()
|
|
33
|
+
.setSelectedConversationId(data.conversationID);
|
|
34
|
+
};
|
|
35
|
+
let msgContent = "";
|
|
36
|
+
try {
|
|
37
|
+
msgContent = ((_a = JSON.parse((message === null || message === void 0 ? void 0 : message.content) || "{}")) === null || _a === void 0 ? void 0 : _a.content) || "";
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error("Failed to parse message content", error);
|
|
41
|
+
if (typeof (message === null || message === void 0 ? void 0 : message.content) === "string") {
|
|
42
|
+
msgContent = message === null || message === void 0 ? void 0 : message.content;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return (_jsxs("div", { className: "py-3 px-2 flex items-center gap-3 hover:bg-gray-100 hover:rounded-sm cursor-pointer border-b mx-1", onClick: onPressItem, children: [_jsx("div", { children: _jsx(Avatar, { size: "large", src: message.senderFaceUrl, alt: message.senderNickname, children: message.senderNickname.charAt(0).toUpperCase() }) }), _jsxs("div", { className: "flex flex-col flex-1 min-w-0 gap-1", children: [_jsxs("div", { className: "flex flex-1 items-center justify-between", children: [_jsx("span", { className: "text-sm flex-1 font-semibold truncate", children: message.senderNickname }), _jsx("span", { className: "text-xs text-gray-500", children: formatTimestamp(message.sendTime, {
|
|
46
|
+
hasTime: false,
|
|
47
|
+
}) })] }), _jsx("div", { className: "flex flex-col flex-1 min-w-0", children: _jsx("span", { className: "text-xs flex-1 text-gray-500 truncate", dangerouslySetInnerHTML: {
|
|
48
|
+
__html: highlightSearch(msgContent, searchTerm),
|
|
49
|
+
} }) })] })] }, message.clientMsgID));
|
|
50
|
+
};
|
|
51
|
+
export default SearchItemAsMessage;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ISessionByStatus } from "../../../store/type";
|
|
2
|
+
interface SearchItemAsUserProps {
|
|
3
|
+
session: ISessionByStatus;
|
|
4
|
+
searchTerm: string;
|
|
5
|
+
}
|
|
6
|
+
declare const SearchItemAsUser: (props: SearchItemAsUserProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default SearchItemAsUser;
|
|
8
|
+
//# sourceMappingURL=SearchItemAsUser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchItemAsUser.d.ts","sourceRoot":"","sources":["../../../../src/components/searchConversation/item/SearchItemAsUser.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,gBAAgB,GAAI,OAAO,qBAAqB,4CA4BrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Avatar } from "antd";
|
|
4
|
+
import { highlightSearch } from "../../../utils/common";
|
|
5
|
+
const SearchItemAsUser = (props) => {
|
|
6
|
+
var _a, _b, _c, _d, _e, _f;
|
|
7
|
+
const { session, searchTerm = "" } = props;
|
|
8
|
+
const ownerName = `${(_a = session.owner) === null || _a === void 0 ? void 0 : _a.fullName}${((_b = session.owner) === null || _b === void 0 ? void 0 : _b.username) ? ` (${(_c = session.owner) === null || _c === void 0 ? void 0 : _c.username})` : ""}`;
|
|
9
|
+
return (_jsxs("div", { className: "py-3 px-2 flex items-center gap-3 hover:bg-gray-100 hover:rounded-sm cursor-pointer border-b mx-1", children: [_jsx(Avatar, { size: "large", src: (_d = session.owner) === null || _d === void 0 ? void 0 : _d.avatar, alt: (_e = session.owner) === null || _e === void 0 ? void 0 : _e.username, children: (_f = session.owner) === null || _f === void 0 ? void 0 : _f.fullName.charAt(0).toUpperCase() }), _jsx("div", { className: "flex flex-col flex-1 min-w-0", children: _jsx("p", { className: "text-sm font-semibold truncate", dangerouslySetInnerHTML: {
|
|
10
|
+
__html: highlightSearch(ownerName, searchTerm),
|
|
11
|
+
} }) })] }, session.id));
|
|
12
|
+
};
|
|
13
|
+
export default SearchItemAsUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeskAssignedSession.d.ts","sourceRoot":"","sources":["../../../src/components/session/DeskAssignedSession.tsx"],"names":[],"mappings":"AAeA,QAAA,MAAM,mBAAmB,+
|
|
1
|
+
{"version":3,"file":"DeskAssignedSession.d.ts","sourceRoot":"","sources":["../../../src/components/session/DeskAssignedSession.tsx"],"names":[],"mappings":"AAeA,QAAA,MAAM,mBAAmB,+CAwNxB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -16,7 +16,7 @@ const DeskAssignedSession = () => {
|
|
|
16
16
|
const setFilterSummary = useSessionStore((state) => state.setFilterSummary);
|
|
17
17
|
const { data: sessionSummary } = useGetSessionSummary();
|
|
18
18
|
const menuItems = useMemo(() => {
|
|
19
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p
|
|
19
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
20
20
|
return [
|
|
21
21
|
{
|
|
22
22
|
label: t("active_sessions"),
|
|
@@ -26,7 +26,7 @@ const DeskAssignedSession = () => {
|
|
|
26
26
|
{
|
|
27
27
|
label: t("unassigned"),
|
|
28
28
|
key: SESSION_STATUS_ENUM.UNASSIGNED,
|
|
29
|
-
icon: (_jsx(Icon, { icon: "user-del-o", size: 18, className: "text-
|
|
29
|
+
icon: (_jsx(Icon, { icon: "user-del-o", size: 18, className: "!text-amber-500" })),
|
|
30
30
|
onClick: () => {
|
|
31
31
|
setFilterSummary({
|
|
32
32
|
status: SESSION_STATUS_ENUM.UNASSIGNED,
|
|
@@ -38,19 +38,19 @@ const DeskAssignedSession = () => {
|
|
|
38
38
|
{
|
|
39
39
|
label: t("slow_processing"),
|
|
40
40
|
key: TAG_ENUM.SLOW_PROCESSING,
|
|
41
|
-
icon: (_jsx(Icon, { icon: "warning-square-o", size: 18, className: "text-red-500" })),
|
|
41
|
+
icon: (_jsx(Icon, { icon: "warning-square-o", size: 18, className: "!text-red-500" })),
|
|
42
42
|
onClick: () => {
|
|
43
43
|
setFilterSummary({
|
|
44
44
|
status: undefined,
|
|
45
45
|
tag: TAG_ENUM.SLOW_PROCESSING,
|
|
46
46
|
});
|
|
47
47
|
},
|
|
48
|
-
extra: (_jsx("span", { className: "text-xs text-gray-500", children: ((_d = (_c = sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.
|
|
48
|
+
extra: (_jsx("span", { className: "text-xs text-gray-500", children: ((_d = (_c = sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.tagCounts) === null || _c === void 0 ? void 0 : _c.find((s) => s.type === TAG_ENUM.SLOW_PROCESSING)) === null || _d === void 0 ? void 0 : _d.count) || "" })),
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
label: t("waiting_process"),
|
|
52
52
|
key: SESSION_STATUS_ENUM.WAITING_PROCESS,
|
|
53
|
-
icon: (_jsx(Icon, { icon: "time-circle-o", size: 18, className: "text-orange-400" })),
|
|
53
|
+
icon: (_jsx(Icon, { icon: "time-circle-o", size: 18, className: "!text-orange-400" })),
|
|
54
54
|
onClick: () => {
|
|
55
55
|
setFilterSummary({
|
|
56
56
|
status: SESSION_STATUS_ENUM.WAITING_PROCESS,
|
|
@@ -62,14 +62,14 @@ const DeskAssignedSession = () => {
|
|
|
62
62
|
{
|
|
63
63
|
label: t("awaiting_reply"),
|
|
64
64
|
key: TAG_ENUM.AWAITING_REPLY,
|
|
65
|
-
icon: (_jsx(Icon, { icon: "arrow-reply-o", size: 18, className: "text-purple-500" })),
|
|
65
|
+
icon: (_jsx(Icon, { icon: "arrow-reply-o", size: 18, className: "!text-purple-500" })),
|
|
66
66
|
onClick: () => {
|
|
67
67
|
setFilterSummary({
|
|
68
68
|
status: undefined,
|
|
69
69
|
tag: TAG_ENUM.AWAITING_REPLY,
|
|
70
70
|
});
|
|
71
71
|
},
|
|
72
|
-
extra: (_jsx("span", { className: "text-xs text-gray-500", children: ((_h = (_g = sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.
|
|
72
|
+
extra: (_jsx("span", { className: "text-xs text-gray-500", children: ((_h = (_g = sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.tagCounts) === null || _g === void 0 ? void 0 : _g.find((s) => s.type === TAG_ENUM.AWAITING_REPLY)) === null || _h === void 0 ? void 0 : _h.count) || "" })),
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
75
|
label: t("in_process"),
|
|
@@ -93,14 +93,13 @@ const DeskAssignedSession = () => {
|
|
|
93
93
|
tag: TAG_ENUM.TEMPORARILY_PAUSED,
|
|
94
94
|
});
|
|
95
95
|
},
|
|
96
|
-
extra: (_jsx("span", { className: "text-xs text-gray-500", children: ((_m = (_l = sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.
|
|
96
|
+
extra: (_jsx("span", { className: "text-xs text-gray-500", children: ((_m = (_l = sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.tagCounts) === null || _l === void 0 ? void 0 : _l.find((s) => s.type === TAG_ENUM.TEMPORARILY_PAUSED)) === null || _m === void 0 ? void 0 : _m.count) || "" })),
|
|
97
97
|
},
|
|
98
98
|
],
|
|
99
|
-
|
|
100
|
-
extra: (_jsx("span", { className: "text-xs text-gray-500", children: ((_p = (_o = sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.sessionStatuses) === null || _o === void 0 ? void 0 : _o.find((s) => s.type === SESSION_STATUS_ENUM.IN_PROCESS)) === null || _p === void 0 ? void 0 : _p.count) || "" })),
|
|
99
|
+
extra: (_jsx("span", { className: "text-xs text-gray-500", children: ((_p = (_o = sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.sessionStatuses) === null || _o === void 0 ? void 0 : _o.find((s) => s.type === SESSION_STATUS_ENUM.IN_PROCESS)) === null || _p === void 0 ? void 0 : _p.count) || "100" })),
|
|
101
100
|
},
|
|
102
101
|
{
|
|
103
|
-
label: t("closed_sessions"),
|
|
102
|
+
label: (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "ant-menu-title-content ant-menu-title-content-with-extra flex-1", children: t("closed_sessions") }), _jsx("span", { className: "text-xs text-gray-500", children: (sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.completedSessionCount) || "" })] })),
|
|
104
103
|
key: "CLOSED_SESSIONS",
|
|
105
104
|
icon: _jsx(Icon, { icon: "check-square-o", size: 20 }),
|
|
106
105
|
onClick: () => {
|
|
@@ -109,10 +108,9 @@ const DeskAssignedSession = () => {
|
|
|
109
108
|
tag: undefined,
|
|
110
109
|
});
|
|
111
110
|
},
|
|
112
|
-
extra: (_jsx("span", { className: "text-xs text-gray-500", children: ((_r = (_q = sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.sessionStatuses) === null || _q === void 0 ? void 0 : _q.find((s) => s.type === SESSION_STATUS_ENUM.COMPLETED)) === null || _r === void 0 ? void 0 : _r.count) || "" })),
|
|
113
111
|
},
|
|
114
112
|
];
|
|
115
113
|
}, [sessionSummary]);
|
|
116
|
-
return (_jsxs(Sider, { collapsible: true, collapsed: collapsed, onCollapse: toggle, width: 220, className: "bg-white h-full border-r border-gray-200", trigger: null, children: [_jsxs("div", { className: clsx("flex items-center p-4 border-b", collapsed ? "justify-center" : "justify-between"), children: [!collapsed && (_jsx("span", { className: "text-md font-semibold flex-1 truncate", children: "Droppii Staging" })), _jsx(Button, { type: "text", shape: "default", className: "text-gray-500 w-8 h-8 p-0", onClick: toggle, children: _jsx(Icon, { icon: collapsed ? "angle-right-o" : "angle-left-o", size: 22 }) })] }), _jsx(Menu, { defaultSelectedKeys: [SESSION_STATUS_ENUM.
|
|
114
|
+
return (_jsxs(Sider, { collapsible: true, collapsed: collapsed, onCollapse: toggle, width: 220, className: "bg-white h-full border-r border-gray-200", trigger: null, children: [_jsxs("div", { className: clsx("flex items-center p-4 border-b", collapsed ? "justify-center" : "justify-between"), children: [!collapsed && (_jsx("span", { className: "text-md font-semibold flex-1 truncate", children: "Droppii Staging" })), _jsx(Button, { type: "text", shape: "default", className: "text-gray-500 w-8 h-8 p-0", onClick: toggle, children: _jsx(Icon, { icon: collapsed ? "angle-right-o" : "angle-left-o", size: 22 }) })] }), _jsx(Menu, { defaultSelectedKeys: [SESSION_STATUS_ENUM.IN_PROCESS], defaultOpenKeys: ["ACTIVE_SESSIONS"], mode: "inline", items: menuItems, inlineIndent: 12, expandIcon: _jsx("span", { className: "text-xs text-gray-500", children: sessionSummary === null || sessionSummary === void 0 ? void 0 : sessionSummary.activeSessionCount }) })] }));
|
|
117
115
|
};
|
|
118
116
|
export default DeskAssignedSession;
|
|
@@ -11,4 +11,7 @@ export declare const TAG_ENUM: {
|
|
|
11
11
|
SLOW_PROCESSING: string;
|
|
12
12
|
TEMPORARILY_PAUSED: string;
|
|
13
13
|
};
|
|
14
|
+
export declare const PAGE_SIZE = 50;
|
|
15
|
+
export declare const MSG_ITEM_PREFIX = "msg-item-";
|
|
16
|
+
export declare const MSG_ITEM_CONTENT_PREFIX = "msg-item-content-";
|
|
14
17
|
//# 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,0GACgF,CAAC;AAE1G,eAAO,MAAM,mBAAmB;;;;;CAK/B,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,0GACgF,CAAC;AAE1G,eAAO,MAAM,mBAAmB;;;;;CAK/B,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC;AAEF,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,uBAAuB,sBAAsB,CAAC"}
|
package/dist/constants/index.js
CHANGED
|
@@ -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,eAAe,CAAC;AAQvB,eAAO,MAAM,WAAW,0CAOtB,CAAC;AAEH,eAAO,MAAM,cAAc,uBAAgC,CAAC;AAE5D,eAAO,MAAM,YAAY,GAAI,sBAAsB,iBAAiB,
|
|
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,eAAe,CAAC;AAQvB,eAAO,MAAM,WAAW,0CAOtB,CAAC;AAEH,eAAO,MAAM,cAAc,uBAAgC,CAAC;AAE5D,eAAO,MAAM,YAAY,GAAI,sBAAsB,iBAAiB,4CAuDnE,CAAC"}
|
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import { MessageItem } from "@openim/wasm-client-sdk";
|
|
2
|
-
|
|
3
|
-
export declare const useMessage: (conversationId: string) => {
|
|
1
|
+
import { MessageItem, MessageType } from "@openim/wasm-client-sdk";
|
|
2
|
+
export declare const visibleTypeMessage: MessageType[];
|
|
3
|
+
export declare const useMessage: (conversationId: string, searchClientMsgID?: string) => {
|
|
4
4
|
loadState: {
|
|
5
5
|
initLoading: boolean;
|
|
6
6
|
hasMoreOld: boolean;
|
|
7
|
+
hasMoreNew: boolean;
|
|
7
8
|
messageList: MessageItem[];
|
|
8
|
-
groupMessageList: GroupMessageItem[];
|
|
9
9
|
};
|
|
10
10
|
latestLoadState: import("react").RefObject<{
|
|
11
11
|
initLoading: boolean;
|
|
12
12
|
hasMoreOld: boolean;
|
|
13
|
+
hasMoreNew: boolean;
|
|
13
14
|
messageList: MessageItem[];
|
|
14
|
-
groupMessageList: GroupMessageItem[];
|
|
15
15
|
}>;
|
|
16
16
|
moreOldLoading: boolean;
|
|
17
17
|
getMoreOldMessages: (loadMore?: any) => Promise<void>;
|
|
18
|
+
moreNewLoading: boolean;
|
|
19
|
+
getMoreNewMessages: (loadMore?: any) => Promise<void>;
|
|
18
20
|
};
|
|
19
21
|
export declare const pushNewMessage: (message: MessageItem) => void;
|
|
20
22
|
export declare const updateOneMessage: (message: MessageItem) => void;
|
|
23
|
+
export declare const getVisibleNeighbor: (allMessages: MessageItem[], current: MessageItem, direction: "prev" | "next") => MessageItem | undefined;
|
|
21
24
|
//# sourceMappingURL=useMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQ7E,eAAO,MAAM,kBAAkB,eAa9B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,gBAAgB,MAAM,EACtB,oBAAoB,MAAM;;;;;qBAML,WAAW,EAAE;;;;;;qBAAb,WAAW,EAAE;;;;;;CAmMnC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,SACpB,CAAC;AAChC,eAAO,MAAM,gBAAgB,GAAI,SAAS,WAAW,SACpB,CAAC;AAElC,eAAO,MAAM,kBAAkB,GAC7B,aAAa,WAAW,EAAE,EAC1B,SAAS,WAAW,EACpB,WAAW,MAAM,GAAG,MAAM,KACzB,WAAW,GAAG,SAiBhB,CAAC"}
|