@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.
Files changed (87) hide show
  1. package/dist/components/conversation/ConversationBySessionItem.d.ts.map +1 -1
  2. package/dist/components/conversation/ConversationBySessionItem.js +7 -70
  3. package/dist/components/conversation/DeskConversationList.d.ts.map +1 -1
  4. package/dist/components/conversation/DeskConversationList.js +44 -22
  5. package/dist/components/mediaCollection/FileCollection.d.ts.map +1 -1
  6. package/dist/components/mediaCollection/FileCollection.js +7 -6
  7. package/dist/components/mediaCollection/ImageCollection.d.ts.map +1 -1
  8. package/dist/components/mediaCollection/ImageCollection.js +7 -6
  9. package/dist/components/mediaCollection/VideoCollection.d.ts.map +1 -1
  10. package/dist/components/mediaCollection/VideoCollection.js +7 -6
  11. package/dist/components/mediaCollection/index.js +5 -5
  12. package/dist/components/message/MessageList.d.ts +1 -0
  13. package/dist/components/message/MessageList.d.ts.map +1 -1
  14. package/dist/components/message/MessageList.js +67 -15
  15. package/dist/components/message/footer/index.d.ts +1 -5
  16. package/dist/components/message/footer/index.d.ts.map +1 -1
  17. package/dist/components/message/footer/index.js +5 -4
  18. package/dist/components/message/item/index.d.ts +4 -3
  19. package/dist/components/message/item/index.d.ts.map +1 -1
  20. package/dist/components/message/item/index.js +24 -32
  21. package/dist/components/searchConversation/SearchAll.d.ts +6 -1
  22. package/dist/components/searchConversation/SearchAll.d.ts.map +1 -1
  23. package/dist/components/searchConversation/SearchAll.js +28 -4
  24. package/dist/components/searchConversation/SearchConversationAsMessages.d.ts +4 -1
  25. package/dist/components/searchConversation/SearchConversationAsMessages.d.ts.map +1 -1
  26. package/dist/components/searchConversation/SearchConversationAsMessages.js +18 -3
  27. package/dist/components/searchConversation/SearchConversationAsUsers.d.ts +4 -1
  28. package/dist/components/searchConversation/SearchConversationAsUsers.d.ts.map +1 -1
  29. package/dist/components/searchConversation/SearchConversationAsUsers.js +14 -3
  30. package/dist/components/searchConversation/index.d.ts +4 -1
  31. package/dist/components/searchConversation/index.d.ts.map +1 -1
  32. package/dist/components/searchConversation/index.js +8 -7
  33. package/dist/components/searchConversation/item/SearchItemAsMessage.d.ts +8 -0
  34. package/dist/components/searchConversation/item/SearchItemAsMessage.d.ts.map +1 -0
  35. package/dist/components/searchConversation/item/SearchItemAsMessage.js +51 -0
  36. package/dist/components/searchConversation/item/SearchItemAsUser.d.ts +8 -0
  37. package/dist/components/searchConversation/item/SearchItemAsUser.d.ts.map +1 -0
  38. package/dist/components/searchConversation/item/SearchItemAsUser.js +13 -0
  39. package/dist/components/session/DeskAssignedSession.d.ts.map +1 -1
  40. package/dist/components/session/DeskAssignedSession.js +11 -13
  41. package/dist/constants/index.d.ts +3 -0
  42. package/dist/constants/index.d.ts.map +1 -1
  43. package/dist/constants/index.js +3 -0
  44. package/dist/context/ChatContext.d.ts.map +1 -1
  45. package/dist/context/ChatContext.js +1 -0
  46. package/dist/hooks/message/useMessage.d.ts +8 -5
  47. package/dist/hooks/message/useMessage.d.ts.map +1 -1
  48. package/dist/hooks/message/useMessage.js +117 -51
  49. package/dist/hooks/message/useSendMessage.d.ts +2 -4
  50. package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
  51. package/dist/hooks/message/useSendMessage.js +9 -39
  52. package/dist/hooks/search/useSearchMessage.d.ts +232 -0
  53. package/dist/hooks/search/useSearchMessage.d.ts.map +1 -0
  54. package/dist/hooks/search/useSearchMessage.js +71 -0
  55. package/dist/hooks/session/useGetSession.d.ts +222 -0
  56. package/dist/hooks/session/useGetSession.d.ts.map +1 -0
  57. package/dist/hooks/session/useGetSession.js +91 -0
  58. package/dist/hooks/session/useGetSessionSummary.d.ts.map +1 -1
  59. package/dist/hooks/session/useGetSessionSummary.js +2 -1
  60. package/dist/hooks/user/useAuth.d.ts.map +1 -1
  61. package/dist/hooks/user/useAuth.js +6 -4
  62. package/dist/index.d.ts +2 -2
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +2 -1
  65. package/dist/locales/vi/common.json +4 -1
  66. package/dist/screens/deskMessage/index.d.ts.map +1 -1
  67. package/dist/screens/deskMessage/index.js +2 -1
  68. package/dist/services/query.d.ts +1 -1
  69. package/dist/services/query.js +1 -1
  70. package/dist/services/routes.d.ts +1 -1
  71. package/dist/services/routes.js +1 -1
  72. package/dist/store/auth.d.ts.map +1 -1
  73. package/dist/store/auth.js +12 -2
  74. package/dist/store/conversation.d.ts.map +1 -1
  75. package/dist/store/conversation.js +7 -1
  76. package/dist/styles/global.css +1 -1
  77. package/dist/types/chat.d.ts +7 -8
  78. package/dist/types/chat.d.ts.map +1 -1
  79. package/dist/types/chat.js +4 -0
  80. package/dist/types/dto.d.ts +14 -23
  81. package/dist/types/dto.d.ts.map +1 -1
  82. package/dist/utils/common.d.ts +7 -0
  83. package/dist/utils/common.d.ts.map +1 -1
  84. package/dist/utils/common.js +83 -0
  85. package/dist/utils/events.d.ts +1 -0
  86. package/dist/utils/events.d.ts.map +1 -1
  87. 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, SessionType, } from "@openim/wasm-client-sdk";
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
- dayjs.extend(isToday);
13
- const visibleTypeMessage = [
14
- MessageType.TextMessage,
15
- MessageType.PictureMessage,
16
- MessageType.VoiceMessage,
17
- MessageType.VideoMessage,
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 messagesInGroup = (groupMessage === null || groupMessage === void 0 ? void 0 : groupMessage.messages) || [];
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
- return (_jsxs("div", { className: "flex flex-col gap-2 my-4 mx-3 sm:mx-4", children: [_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: dayjs(groupMessage === null || groupMessage === void 0 ? void 0 : groupMessage.sendTime).format(isToday ? "HH:mm" : "HH:mm, DD MMMM") }) }), messagesInGroup === null || messagesInGroup === void 0 ? void 0 : messagesInGroup.map((message, messageIndex) => {
49
- var _a, _b, _c, _d;
50
- if (!visibleTypeMessage.includes(message === null || message === void 0 ? void 0 : message.contentType))
51
- return null;
52
- const isMine = (message === null || message === void 0 ? void 0 : message.sendID) === (user === null || user === void 0 ? void 0 : user.userID);
53
- const showAvatar = messageIndex === messagesInGroup.length - 1;
54
- const showSenderName = messageIndex === 0 && (message === null || message === void 0 ? void 0 : message.sessionType) === SessionType.Group;
55
- return (_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: showAvatar && (_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: [!isMine && showSenderName && (_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"), 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) => {
56
- return renderMessageByType(item);
57
- }), (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));
58
- })] }, groupMessage === null || groupMessage === void 0 ? void 0 : groupMessage.groupMessageID));
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
- declare const SearchConversationAll: () => import("react/jsx-runtime").JSX.Element;
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":"AAGA,QAAA,MAAM,qBAAqB,+CAI1B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
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
- const SearchConversationAll = () => {
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
- return _jsx(Empty, { description: t("no_conversation") });
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
- declare const SearchConversationAsMessages: () => import("react/jsx-runtime").JSX.Element;
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":"AAGA,QAAA,MAAM,4BAA4B,+CAIjC,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
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
- const SearchConversationAsMessages = () => {
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
- return _jsx(Empty, { description: t("no_conversation") });
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
- declare const SearchConversationAsUsers: () => import("react/jsx-runtime").JSX.Element;
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":"AAGA,QAAA,MAAM,yBAAyB,+CAI9B,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
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
- const SearchConversationAsUsers = () => {
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
- return _jsx(Empty, { description: t("no_conversation") });
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
- declare const SearchConversation: () => import("react/jsx-runtime").JSX.Element;
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,+CA4BvB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
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,+CAkNxB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
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, _q, _r;
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-orange-500" })),
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.sessionStatuses) === null || _c === void 0 ? void 0 : _c.find((s) => s.type === TAG_ENUM.SLOW_PROCESSING)) === null || _d === void 0 ? void 0 : _d.count) || "" })),
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.sessionStatuses) === null || _g === void 0 ? void 0 : _g.find((s) => s.type === TAG_ENUM.AWAITING_REPLY)) === null || _h === void 0 ? void 0 : _h.count) || "" })),
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.sessionStatuses) === null || _l === void 0 ? void 0 : _l.find((s) => s.type === TAG_ENUM.TEMPORARILY_PAUSED)) === null || _m === void 0 ? void 0 : _m.count) || "" })),
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
- expandIcon: undefined,
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.UNASSIGNED], defaultOpenKeys: ["ACTIVE_SESSIONS"], mode: "inline", items: menuItems, inlineIndent: 12 })] }));
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"}
@@ -11,3 +11,6 @@ export const TAG_ENUM = {
11
11
  SLOW_PROCESSING: "SLOW_PROCESSING",
12
12
  TEMPORARILY_PAUSED: "TEMPORARILY_PAUSED",
13
13
  };
14
+ export const PAGE_SIZE = 50;
15
+ export const MSG_ITEM_PREFIX = "msg-item-";
16
+ export const MSG_ITEM_CONTENT_PREFIX = "msg-item-content-";
@@ -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,4CAsDnE,CAAC"}
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"}
@@ -45,6 +45,7 @@ export const ChatProvider = ({ children, config }) => {
45
45
  platformID: config.platformID,
46
46
  userID: config.userID,
47
47
  wsAddress: config.wsAddr,
48
+ applicationType: config.applicationType,
48
49
  });
49
50
  }
50
51
  }, [config]);
@@ -1,21 +1,24 @@
1
- import { MessageItem } from "@openim/wasm-client-sdk";
2
- import { GroupMessageItem } from "../../types/chat";
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;AAEhE,OAAO,EAAqB,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOvE,eAAO,MAAM,UAAU,GAAI,gBAAgB,MAAM;;;;qBAI1B,WAAW,EAAE;0BACR,gBAAgB,EAAE;;;;;qBADvB,WAAW,EAAE;0BACR,gBAAgB,EAAE;;;;CA8I7C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,SACpB,CAAC;AAChC,eAAO,MAAM,gBAAgB,GAAI,SAAS,WAAW,SACpB,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"}