@droppii-org/chat-sdk 0.1.6 → 0.1.7

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 (99) hide show
  1. package/dist/components/cannedResponse/CannedResponseBody.d.ts.map +1 -1
  2. package/dist/components/cannedResponse/CannedResponseBody.js +54 -3
  3. package/dist/components/conversation/ConversationBySessionItem.d.ts.map +1 -1
  4. package/dist/components/conversation/ConversationBySessionItem.js +7 -2
  5. package/dist/components/conversation/DeskConversationList.d.ts.map +1 -1
  6. package/dist/components/conversation/DeskConversationList.js +22 -17
  7. package/dist/components/message/MessageHeader.d.ts +2 -2
  8. package/dist/components/message/MessageHeader.d.ts.map +1 -1
  9. package/dist/components/message/MessageHeader.js +5 -2
  10. package/dist/components/message/MessageList.d.ts.map +1 -1
  11. package/dist/components/message/MessageList.js +31 -22
  12. package/dist/components/message/SelectSession.d.ts.map +1 -1
  13. package/dist/components/message/SelectSession.js +7 -9
  14. package/dist/components/message/footer/ActionBar.d.ts.map +1 -1
  15. package/dist/components/message/footer/ActionBar.js +3 -2
  16. package/dist/components/message/footer/CannedResponsePlugin.d.ts.map +1 -1
  17. package/dist/components/message/footer/CannedResponsePlugin.js +37 -1
  18. package/dist/components/message/footer/ComposerEditor.d.ts +7 -0
  19. package/dist/components/message/footer/ComposerEditor.d.ts.map +1 -0
  20. package/dist/components/message/footer/ComposerEditor.js +13 -0
  21. package/dist/components/message/footer/ComposerTabs.d.ts +9 -0
  22. package/dist/components/message/footer/ComposerTabs.d.ts.map +1 -0
  23. package/dist/components/message/footer/ComposerTabs.js +37 -0
  24. package/dist/components/message/footer/EnterHandler.d.ts.map +1 -1
  25. package/dist/components/message/footer/EnterHandler.js +10 -1
  26. package/dist/components/message/footer/index.d.ts +2 -2
  27. package/dist/components/message/footer/index.d.ts.map +1 -1
  28. package/dist/components/message/footer/index.js +45 -9
  29. package/dist/components/message/item/index.d.ts.map +1 -1
  30. package/dist/components/message/item/index.js +11 -1
  31. package/dist/components/session/DeskAssignedSession.d.ts.map +1 -1
  32. package/dist/components/session/DeskAssignedSession.js +14 -109
  33. package/dist/components/session/DeskTeamInbox.d.ts +3 -0
  34. package/dist/components/session/DeskTeamInbox.d.ts.map +1 -0
  35. package/dist/components/session/DeskTeamInbox.js +56 -0
  36. package/dist/components/session/SessionFilterMenu.d.ts +13 -0
  37. package/dist/components/session/SessionFilterMenu.d.ts.map +1 -0
  38. package/dist/components/session/SessionFilterMenu.js +27 -0
  39. package/dist/components/session/sessionMenuItems.d.ts +26 -0
  40. package/dist/components/session/sessionMenuItems.d.ts.map +1 -0
  41. package/dist/components/session/sessionMenuItems.js +108 -0
  42. package/dist/hooks/conversation/useConversationPreview.d.ts +12 -0
  43. package/dist/hooks/conversation/useConversationPreview.d.ts.map +1 -0
  44. package/dist/hooks/conversation/useConversationPreview.js +22 -0
  45. package/dist/hooks/message/useConversationMessages.d.ts +27 -0
  46. package/dist/hooks/message/useConversationMessages.d.ts.map +1 -0
  47. package/dist/hooks/message/useConversationMessages.js +29 -0
  48. package/dist/hooks/message/useMessage.d.ts.map +1 -1
  49. package/dist/hooks/message/usePullSessionMessages.d.ts +9 -0
  50. package/dist/hooks/message/usePullSessionMessages.d.ts.map +1 -0
  51. package/dist/hooks/message/usePullSessionMessages.js +27 -0
  52. package/dist/hooks/message/useSendMessage.d.ts +8 -6
  53. package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
  54. package/dist/hooks/message/useSendMessage.js +8 -8
  55. package/dist/hooks/session/useConversationSessionState.d.ts +21 -0
  56. package/dist/hooks/session/useConversationSessionState.d.ts.map +1 -0
  57. package/dist/hooks/session/useConversationSessionState.js +41 -0
  58. package/dist/hooks/session/useGetSession.d.ts.map +1 -1
  59. package/dist/hooks/session/useGetSession.js +138 -52
  60. package/dist/hooks/session/useGetTeamSessionSummary.d.ts +3 -0
  61. package/dist/hooks/session/useGetTeamSessionSummary.d.ts.map +1 -0
  62. package/dist/hooks/session/useGetTeamSessionSummary.js +12 -0
  63. package/dist/hooks/session/useIsJoinedGroup.d.ts +5 -0
  64. package/dist/hooks/session/useIsJoinedGroup.d.ts.map +1 -0
  65. package/dist/hooks/session/useIsJoinedGroup.js +24 -0
  66. package/dist/hooks/session/useJoinGroupFlow.d.ts +12 -0
  67. package/dist/hooks/session/useJoinGroupFlow.d.ts.map +1 -0
  68. package/dist/hooks/session/useJoinGroupFlow.js +59 -0
  69. package/dist/hooks/session/useJoinSession.d.ts +3 -0
  70. package/dist/hooks/session/useJoinSession.d.ts.map +1 -0
  71. package/dist/hooks/session/useJoinSession.js +38 -0
  72. package/dist/hooks/user/useCurrentUserAccountType.d.ts +3 -0
  73. package/dist/hooks/user/useCurrentUserAccountType.d.ts.map +1 -0
  74. package/dist/hooks/user/useCurrentUserAccountType.js +30 -0
  75. package/dist/locales/vi/common.json +12 -2
  76. package/dist/services/query.d.ts +5 -0
  77. package/dist/services/query.d.ts.map +1 -1
  78. package/dist/services/query.js +5 -0
  79. package/dist/services/routes.d.ts +5 -0
  80. package/dist/services/routes.d.ts.map +1 -1
  81. package/dist/services/routes.js +5 -0
  82. package/dist/store/conversation.d.ts.map +1 -1
  83. package/dist/store/conversation.js +41 -12
  84. package/dist/store/session.js +1 -1
  85. package/dist/styles/global.css +1 -1
  86. package/dist/tsconfig.tsbuildinfo +1 -1
  87. package/dist/types/chat.d.ts +18 -1
  88. package/dist/types/chat.d.ts.map +1 -1
  89. package/dist/types/chat.js +9 -0
  90. package/dist/types/dto.d.ts +87 -0
  91. package/dist/types/dto.d.ts.map +1 -1
  92. package/dist/utils/events.d.ts +1 -0
  93. package/dist/utils/events.d.ts.map +1 -1
  94. package/dist/utils/messageTransform.d.ts +5 -0
  95. package/dist/utils/messageTransform.d.ts.map +1 -0
  96. package/dist/utils/messageTransform.js +106 -0
  97. package/dist/utils/queryHelpers.d.ts.map +1 -1
  98. package/dist/utils/queryHelpers.js +2 -0
  99. package/package.json +1 -1
@@ -0,0 +1,12 @@
1
+ import { ConversationItem } from "@openim/wasm-client-sdk";
2
+ interface UseConversationPreviewParams {
3
+ conversation?: ConversationItem | null;
4
+ ownerUserID?: string;
5
+ }
6
+ export declare const useConversationPreview: ({ conversation, ownerUserID, }: UseConversationPreviewParams) => {
7
+ latestMsg: string;
8
+ latestMsgSendTime: number;
9
+ isLoadingPreview: boolean;
10
+ };
11
+ export {};
12
+ //# sourceMappingURL=useConversationPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConversationPreview.d.ts","sourceRoot":"","sources":["../../../src/hooks/conversation/useConversationPreview.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAe,MAAM,yBAAyB,CAAC;AAIxE,UAAU,4BAA4B;IACpC,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,sBAAsB,GAAI,gCAGpC,4BAA4B;;;;CA6B9B,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { useMemo } from "react";
3
+ import { usePullSessionMessages } from "../message/usePullSessionMessages";
4
+ export const useConversationPreview = ({ conversation, ownerUserID, }) => {
5
+ var _a;
6
+ const hasPreview = Boolean(conversation === null || conversation === void 0 ? void 0 : conversation.latestMsg) && ((_a = conversation === null || conversation === void 0 ? void 0 : conversation.latestMsgSendTime) !== null && _a !== void 0 ? _a : 0) > 0;
7
+ const shouldFetchPreview = Boolean((conversation === null || conversation === void 0 ? void 0 : conversation.isNotInGroup) && (conversation === null || conversation === void 0 ? void 0 : conversation.conversationID) && ownerUserID) &&
8
+ !hasPreview;
9
+ const { data: messages, isLoading } = usePullSessionMessages({
10
+ conversationID: conversation === null || conversation === void 0 ? void 0 : conversation.conversationID,
11
+ userID: ownerUserID,
12
+ enabled: shouldFetchPreview,
13
+ });
14
+ const latestMessage = useMemo(() => messages === null || messages === void 0 ? void 0 : messages[0], [messages]);
15
+ return useMemo(() => ({
16
+ latestMsg: (conversation === null || conversation === void 0 ? void 0 : conversation.latestMsg) || (latestMessage ? JSON.stringify(latestMessage) : ""),
17
+ latestMsgSendTime: (conversation === null || conversation === void 0 ? void 0 : conversation.latestMsgSendTime) && conversation.latestMsgSendTime > 0
18
+ ? conversation.latestMsgSendTime
19
+ : (latestMessage === null || latestMessage === void 0 ? void 0 : latestMessage.sendTime) || 0,
20
+ isLoadingPreview: isLoading,
21
+ }), [conversation === null || conversation === void 0 ? void 0 : conversation.latestMsg, conversation === null || conversation === void 0 ? void 0 : conversation.latestMsgSendTime, latestMessage, isLoading]);
22
+ };
@@ -0,0 +1,27 @@
1
+ import { MessageItem } from "@openim/wasm-client-sdk";
2
+ interface UseConversationMessagesParams {
3
+ conversationId?: string;
4
+ searchClientMsgID?: string;
5
+ restrictToLastSession?: boolean;
6
+ customerUserID?: string;
7
+ }
8
+ export declare const useConversationMessages: ({ conversationId, searchClientMsgID, restrictToLastSession, customerUserID, }: UseConversationMessagesParams) => {
9
+ loadState: {
10
+ initLoading: boolean;
11
+ hasMoreOld: boolean;
12
+ hasMoreNew: boolean;
13
+ messageList: MessageItem[];
14
+ };
15
+ latestLoadState: import("react").RefObject<{
16
+ initLoading: boolean;
17
+ hasMoreOld: boolean;
18
+ hasMoreNew: boolean;
19
+ messageList: MessageItem[];
20
+ }>;
21
+ moreOldLoading: boolean;
22
+ getMoreOldMessages: (loadMore?: any) => Promise<void>;
23
+ moreNewLoading: boolean;
24
+ getMoreNewMessages: (loadMore?: any) => Promise<void>;
25
+ };
26
+ export {};
27
+ //# sourceMappingURL=useConversationMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConversationMessages.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useConversationMessages.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,UAAU,6BAA6B;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,uBAAuB,GAAI,+EAKrC,6BAA6B;;;;;;;;;;;;;;;;;CAkC/B,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { useMemo } from "react";
3
+ import { useMessage } from "./useMessage";
4
+ import { usePullSessionMessages } from "./usePullSessionMessages";
5
+ export const useConversationMessages = ({ conversationId, searchClientMsgID, restrictToLastSession = false, customerUserID, }) => {
6
+ const sdkMessages = useMessage(conversationId, searchClientMsgID);
7
+ const { data: pulledMessages, isLoading: isPullLoading, isFetching: isPullFetching, } = usePullSessionMessages({
8
+ conversationID: conversationId,
9
+ userID: customerUserID,
10
+ enabled: restrictToLastSession,
11
+ });
12
+ const lastSessionState = useMemo(() => ({
13
+ initLoading: isPullLoading || isPullFetching,
14
+ hasMoreOld: false,
15
+ hasMoreNew: false,
16
+ messageList: pulledMessages !== null && pulledMessages !== void 0 ? pulledMessages : [],
17
+ }), [isPullLoading, isPullFetching, pulledMessages]);
18
+ if (restrictToLastSession) {
19
+ return {
20
+ loadState: lastSessionState,
21
+ latestLoadState: { current: lastSessionState },
22
+ moreOldLoading: false,
23
+ getMoreOldMessages: async () => undefined,
24
+ moreNewLoading: false,
25
+ getMoreNewMessages: async () => undefined,
26
+ };
27
+ }
28
+ return sdkMessages;
29
+ };
@@ -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;AAQjC,eAAO,MAAM,kBAAkB,eAe9B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,iBAAiB,MAAM,EACvB,oBAAoB,MAAM;;;;;qBAML,WAAW,EAAE;;;;;;qBAAb,WAAW,EAAE;;;;;;CAgPnC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,SACpB,CAAC;AAChC,eAAO,MAAM,gBAAgB,GAAI,SAAS,WAAW,SACpB,CAAC;AAClC,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,SACf,CAAC;AAEtC,eAAO,MAAM,kBAAkB,GAC7B,aAAa,WAAW,EAAE,EAC1B,SAAS,WAAW,EACpB,WAAW,MAAM,GAAG,MAAM,KACzB,WAAW,GAAG,SAkBhB,CAAC"}
1
+ {"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,WAAW,EAEZ,MAAM,yBAAyB,CAAC;AAQjC,eAAO,MAAM,kBAAkB,eAe9B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,iBAAiB,MAAM,EACvB,oBAAoB,MAAM;;;;;qBAML,WAAW,EAAE;;;;;;qBAAb,WAAW,EAAE;;;;;;CAiPnC,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"}
@@ -0,0 +1,9 @@
1
+ import { MessageItem } from "@openim/wasm-client-sdk";
2
+ interface UsePullSessionMessagesParams {
3
+ conversationID?: string;
4
+ userID?: string;
5
+ enabled?: boolean;
6
+ }
7
+ export declare const usePullSessionMessages: ({ conversationID, userID, enabled, }: UsePullSessionMessagesParams) => import("@tanstack/react-query").UseQueryResult<MessageItem[], Error>;
8
+ export {};
9
+ //# sourceMappingURL=usePullSessionMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePullSessionMessages.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/usePullSessionMessages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAetD,UAAU,4BAA4B;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,sBAAsB,GAAI,sCAIpC,4BAA4B,yEA4B9B,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { useQuery } from "@tanstack/react-query";
2
+ import { apiInstance } from "../../services/api";
3
+ import { ENDPOINTS } from "../../services/routes";
4
+ import { QUERY_KEYS } from "../../services/query";
5
+ import useAuthStore from "../../store/auth";
6
+ import { sortMessagesDesc, transformPulledMessage, } from "../../utils/messageTransform";
7
+ export const usePullSessionMessages = ({ conversationID, userID, enabled = true, }) => {
8
+ const applicationType = useAuthStore((state) => state.applicationType);
9
+ const query = useQuery({
10
+ queryKey: [QUERY_KEYS.PULL_SESSION_MESSAGES, conversationID, userID],
11
+ enabled: Boolean(enabled && conversationID && userID),
12
+ queryFn: async () => {
13
+ var _a, _b, _c, _d;
14
+ const payload = {
15
+ conversationID: conversationID !== null && conversationID !== void 0 ? conversationID : "",
16
+ userID: userID !== null && userID !== void 0 ? userID : "",
17
+ applicationType,
18
+ };
19
+ const res = await apiInstance.post(ENDPOINTS.chatService.pullSessionMessages, payload);
20
+ const group = (_c = (_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.msgs) === null || _c === void 0 ? void 0 : _c[conversationID !== null && conversationID !== void 0 ? conversationID : ""];
21
+ const rawList = (_d = group === null || group === void 0 ? void 0 : group.Msgs) !== null && _d !== void 0 ? _d : [];
22
+ const messageList = sortMessagesDesc(rawList.map(transformPulledMessage));
23
+ return messageList;
24
+ },
25
+ });
26
+ return query;
27
+ };
@@ -1,7 +1,7 @@
1
1
  import { MergerMsgParams, MessageItem } from "@openim/wasm-client-sdk";
2
2
  import { ExtendMessageInfo, FileMsgParamsByFile, ImageMsgParamsByFile, VideoMsgParamsByFile } from "../../types/chat";
3
3
  import { UploadFile } from "antd";
4
- import { ISessionByStatus } from "../../store/type";
4
+ import { ISessionResponse } from "../../types/dto";
5
5
  export declare const isMediaResendable: (message: {
6
6
  clientMsgID: string;
7
7
  contentType: number;
@@ -14,21 +14,23 @@ export declare const createFileMessageByFile: (file: FileMsgParamsByFile) => Pro
14
14
  export declare const createUrlTextMessage: (text: string, urls: string[]) => Promise<MessageItem | null>;
15
15
  export declare const createQuoteMessage: (text: string, quotedMessage: MessageItem) => Promise<MessageItem | null>;
16
16
  export declare const useSendMessage: () => {
17
- sendTextMessage: ({ plainText, richText, currentSession, }: {
17
+ sendTextMessage: ({ plainText, richText, currentSession, isInternal, }: {
18
18
  plainText: string;
19
19
  richText: string;
20
- currentSession?: ISessionByStatus;
20
+ currentSession?: ISessionResponse;
21
+ isInternal: boolean;
21
22
  }) => Promise<void>;
22
- sendMergeMessage: ({ richText, plainText, files, currentSession, }: {
23
+ sendMergeMessage: ({ richText, plainText, files, currentSession, isInternal, }: {
23
24
  richText: string;
24
25
  plainText: string;
25
26
  files: UploadFile[];
26
- currentSession?: ISessionByStatus;
27
+ currentSession?: ISessionResponse;
28
+ isInternal: boolean;
27
29
  }) => Promise<void>;
28
30
  resendMessage: (failedMessage: MessageItem) => Promise<void>;
29
31
  };
30
32
  export declare const generateExtendMessageInfo: ({ richText, currentSession, }: {
31
33
  richText?: string;
32
- currentSession?: ISessionByStatus;
34
+ currentSession?: ISessionResponse;
33
35
  }) => ExtendMessageInfo;
34
36
  //# sourceMappingURL=useSendMessage.d.ts.map
@@ -1 +1 @@
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,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAepD,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,eAAO,MAAM,cAAc;gEAgKpB;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,gBAAgB,CAAC;KACnC;wEAkCE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,cAAc,CAAC,EAAE,gBAAgB,CAAC;KACnC;mCAhJqB,WAAW;CAgRpC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,+BAGvC;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,gBAAgB,CAAC;CACnC,KAWM,iBACN,CAAC"}
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,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAenD,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,eAAO,MAAM,cAAc;4EA4KpB;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC;KACrB;oFAoCE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC;KACrB;mCA7JqB,WAAW;CA8RpC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,+BAGvC;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,gBAAgB,CAAC;CACnC,KAWM,iBACN,CAAC"}
@@ -105,7 +105,7 @@ export const useSendMessage = () => {
105
105
  const setQuotedMessage = useConversationStore((state) => state.setQuotedMessage);
106
106
  const { userID: recvID, groupID } = conversationData || {};
107
107
  const dispatchMessage = useCallback(async (message) => {
108
- var _a;
108
+ var _a, _b;
109
109
  const desc = generateContentBasedOnMessageType(message.contentType, ((_a = message === null || message === void 0 ? void 0 : message.textElem) === null || _a === void 0 ? void 0 : _a.content) || "") || t("new_message");
110
110
  const { data: successMessage } = await DChatSDK.sendMessage({
111
111
  recvID: recvID || "",
@@ -124,7 +124,7 @@ export const useSendMessage = () => {
124
124
  iOSBadgeCount: true,
125
125
  },
126
126
  });
127
- updateOneMessage(successMessage);
127
+ updateOneMessage(Object.assign(Object.assign({}, successMessage), { isInternal: (_b = successMessage.isInternal) !== null && _b !== void 0 ? _b : message.isInternal }));
128
128
  messageFileStore.delete(message.clientMsgID);
129
129
  }, [recvID, groupID]);
130
130
  const sendMessage = useCallback(async (message) => {
@@ -160,7 +160,7 @@ export const useSendMessage = () => {
160
160
  clientMsgID: failedMessage.clientMsgID,
161
161
  });
162
162
  removeOneMessage(failedMessage.clientMsgID);
163
- await sendMessage(Object.assign(Object.assign({}, newTextPayload), { ex: failedMessage.ex }));
163
+ await sendMessage(Object.assign(Object.assign({}, newTextPayload), { ex: failedMessage.ex, isInternal: failedMessage.isInternal }));
164
164
  return;
165
165
  }
166
166
  let newPayload = null;
@@ -216,9 +216,9 @@ export const useSendMessage = () => {
216
216
  clientMsgID: failedMessage.clientMsgID,
217
217
  });
218
218
  removeOneMessage(failedMessage.clientMsgID);
219
- await sendMessage(Object.assign(Object.assign({}, newPayload), { ex: failedMessage.ex }));
219
+ await sendMessage(Object.assign(Object.assign({}, newPayload), { ex: failedMessage.ex, isInternal: failedMessage.isInternal }));
220
220
  }, [sendMessage]);
221
- const sendTextMessage = useCallback(async ({ plainText, richText, currentSession, }) => {
221
+ const sendTextMessage = useCallback(async ({ plainText, richText, currentSession, isInternal, }) => {
222
222
  if (!recvID && !groupID)
223
223
  return;
224
224
  const urls = extractLinks(plainText);
@@ -240,10 +240,10 @@ export const useSendMessage = () => {
240
240
  richText,
241
241
  currentSession,
242
242
  });
243
- let messageItem = Object.assign(Object.assign({}, message), { ex: JSON.stringify(extendMessageInfo) || "{}" });
243
+ let messageItem = Object.assign(Object.assign({}, message), { ex: JSON.stringify(extendMessageInfo) || "{}", isInternal });
244
244
  sendMessage(messageItem);
245
245
  }, [recvID, groupID, user, sendMessage, quotedMessage, setQuotedMessage]);
246
- const sendMergeMessage = useCallback(async ({ richText, plainText, files, currentSession, }) => {
246
+ const sendMergeMessage = useCallback(async ({ richText, plainText, files, currentSession, isInternal, }) => {
247
247
  if (!recvID && !groupID)
248
248
  return;
249
249
  const messageList = [];
@@ -354,7 +354,7 @@ export const useSendMessage = () => {
354
354
  richText: (message === null || message === void 0 ? void 0 : message.contentType) === MessageType.TextMessage ? richText : "",
355
355
  currentSession,
356
356
  });
357
- const mMessage = Object.assign(Object.assign({}, message), { ex: JSON.stringify(extendMessageInfo) || "{}" });
357
+ const mMessage = Object.assign(Object.assign({}, message), { ex: JSON.stringify(extendMessageInfo) || "{}", isInternal });
358
358
  await sendMessage(mMessage);
359
359
  }
360
360
  }, [recvID, groupID, sendMessage, quotedMessage, setQuotedMessage]);
@@ -0,0 +1,21 @@
1
+ import { SessionType } from "@openim/wasm-client-sdk";
2
+ interface UseConversationSessionStateParams {
3
+ conversationId: string;
4
+ conversationType?: SessionType;
5
+ groupId?: string;
6
+ userID?: string;
7
+ }
8
+ export declare const useConversationSessionState: ({ conversationId, conversationType, groupId, userID, }: UseConversationSessionStateParams) => {
9
+ isGroupConversation: boolean;
10
+ groupId: string | undefined;
11
+ isJoined: boolean | null;
12
+ latestConversationSession: import("../../types/dto").ISessionResponse | undefined;
13
+ isSessionMember: boolean;
14
+ isMember: boolean;
15
+ isNotGroupMember: boolean;
16
+ customerUserID: string;
17
+ refetchIsJoined: () => Promise<void>;
18
+ refetchConversationSessions: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<import("../../types/dto").ISessionResponse[], Error>>;
19
+ };
20
+ export {};
21
+ //# sourceMappingURL=useConversationSessionState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConversationSessionState.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useConversationSessionState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAMtD,UAAU,iCAAiC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,2BAA2B,GAAI,wDAKzC,iCAAiC;;;;;;;;;;;CA4CnC,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ import { useMemo } from "react";
3
+ import { useGetListSessionByConversation } from "./useGetListSessionByConversation";
4
+ import { useIsJoinedGroup } from "./useIsJoinedGroup";
5
+ import { isGroupSession } from "../../utils/imCommon";
6
+ export const useConversationSessionState = ({ conversationId, conversationType, groupId, userID, }) => {
7
+ var _a;
8
+ const isGroupConversation = isGroupSession(conversationType);
9
+ const currentGroupId = isGroupConversation ? groupId : undefined;
10
+ const { isJoined, refetch: refetchIsJoined } = useIsJoinedGroup(currentGroupId);
11
+ const { data: conversationSessions, refetch: refetchConversationSessions, } = useGetListSessionByConversation({
12
+ conversationId,
13
+ });
14
+ const latestConversationSession = useMemo(() => {
15
+ if (!(conversationSessions === null || conversationSessions === void 0 ? void 0 : conversationSessions.length))
16
+ return undefined;
17
+ return [...conversationSessions].sort((a, b) => new Date(b.createdDate).getTime() - new Date(a.createdDate).getTime())[0];
18
+ }, [conversationSessions]);
19
+ const isSessionMember = useMemo(() => {
20
+ var _a, _b;
21
+ if (!latestConversationSession || !userID)
22
+ return false;
23
+ if (latestConversationSession.supporterId === userID)
24
+ return true;
25
+ return (_b = (_a = latestConversationSession.priorSupporterIds) === null || _a === void 0 ? void 0 : _a.includes(userID)) !== null && _b !== void 0 ? _b : false;
26
+ }, [latestConversationSession, userID]);
27
+ const isMember = isJoined === true || isSessionMember;
28
+ const isNotGroupMember = isGroupConversation && isJoined !== null && !isMember;
29
+ return {
30
+ isGroupConversation,
31
+ groupId: currentGroupId,
32
+ isJoined,
33
+ latestConversationSession,
34
+ isSessionMember,
35
+ isMember,
36
+ isNotGroupMember,
37
+ customerUserID: (_a = latestConversationSession === null || latestConversationSession === void 0 ? void 0 : latestConversationSession.ownerId) !== null && _a !== void 0 ? _a : "",
38
+ refetchIsJoined,
39
+ refetchConversationSessions,
40
+ };
41
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"useGetSession.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useGetSession.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAA+B,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOpE,UAAU,kBAAkB;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AACD,eAAO,MAAM,aAAa,GAAI,sBAM3B,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8FpB,CAAC"}
1
+ {"version":3,"file":"useGetSession.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useGetSession.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,YAAY,EAIb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOpE,UAAU,kBAAkB;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AA2JD,eAAO,MAAM,aAAa,GAAI,sBAG3B,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEpB,CAAC"}
@@ -11,72 +11,165 @@ var __rest = (this && this.__rest) || function (s, e) {
11
11
  return t;
12
12
  };
13
13
  import { useInfiniteQuery } from "@tanstack/react-query";
14
+ import { useMemo } from "react";
14
15
  import { apiInstance } from "../../services/api";
15
16
  import { ENDPOINTS } from "../../services/routes";
16
17
  import { QUERY_KEYS } from "../../services/query";
17
- import { useMemo } from "react";
18
18
  import useConversationStore from "../../store/conversation";
19
- import { DChatSDK } from "../../constants/sdk";
20
19
  import useAuthStore from "../../store/auth";
21
- import { PAGE_SIZE } from "../../constants";
22
- export const useGetSession = ({ filter, options = {
23
- pageSize: undefined,
24
- isEnabled: true,
25
- }, }) => {
20
+ import { DChatSDK } from "../../constants/sdk";
21
+ const SESSION_PAGE_SIZE = 20;
22
+ const hasValidFilter = (filter) => {
23
+ return Object.values(filter).some((v) => {
24
+ if (typeof v === "string")
25
+ return v.trim() !== "";
26
+ return v !== undefined && v !== null;
27
+ });
28
+ };
29
+ const buildSessionConfig = (filter, pageSize) => {
30
+ const applicationType = useAuthStore.getState().applicationType;
31
+ if (filter.teamId) {
32
+ return {
33
+ queryKey: QUERY_KEYS.GET_TEAM_SESSIONS,
34
+ endpoint: ENDPOINTS.chatService.getTeamSessionsByQuery,
35
+ buildParams: (page) => ({
36
+ teamId: filter.teamId,
37
+ applicationType,
38
+ page,
39
+ pageSize,
40
+ status: filter.status,
41
+ tag: filter.tag,
42
+ }),
43
+ };
44
+ }
45
+ return {
46
+ queryKey: QUERY_KEYS.GET_SESSION_BY_TAG_OR_STATUS,
47
+ endpoint: ENDPOINTS.chatService.getSessionsByTagOrStatus,
48
+ buildParams: (page) => ({
49
+ applicationType,
50
+ tag: filter.tag,
51
+ status: filter.status,
52
+ page,
53
+ pageSize,
54
+ searchTerm: filter.searchTerm,
55
+ conversationIds: filter.conversationIds,
56
+ }),
57
+ };
58
+ };
59
+ const mapImDetailToConversation = (item) => ({
60
+ conversationID: item.conversationID,
61
+ conversationType: item.conversationType,
62
+ userID: item.userID,
63
+ groupID: item.groupID,
64
+ showName: "",
65
+ faceURL: "",
66
+ recvMsgOpt: item.recvMsgOpt,
67
+ unreadCount: 0,
68
+ groupAtType: item.groupAtType,
69
+ latestMsg: "",
70
+ latestMsgSendTime: 0,
71
+ draftText: "",
72
+ draftTextTime: 0,
73
+ burnDuration: item.burnDuration,
74
+ msgDestructTime: item.msgDestructTime,
75
+ isPinned: item.isPinned,
76
+ isNotInGroup: true,
77
+ isPrivateChat: item.isPrivateChat,
78
+ isMsgDestruct: item.isMsgDestruct,
79
+ attachedInfo: item.attachedInfo,
80
+ ex: item.ex,
81
+ });
82
+ const fetchConversationsImDetail = async (conversations) => {
83
+ var _a, _b;
84
+ if (!conversations.length)
85
+ return [];
86
+ const payload = {
87
+ applicationType: useAuthStore.getState().applicationType,
88
+ conversations,
89
+ };
90
+ const res = await apiInstance.post(ENDPOINTS.chatService.getConversationsImDetail, payload);
91
+ return ((_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : []).map(mapImDetailToConversation);
92
+ };
93
+ const fetchSdkConversations = async (sessions) => {
94
+ var _a;
95
+ if (!sessions.length)
96
+ return [];
97
+ try {
98
+ const res = await DChatSDK.getMultipleConversation(sessions.map((session) => session.conversationId));
99
+ return (_a = res === null || res === void 0 ? void 0 : res.data) !== null && _a !== void 0 ? _a : [];
100
+ }
101
+ catch (error) {
102
+ console.error("getMultipleConversation", error);
103
+ return [];
104
+ }
105
+ };
106
+ const findMissingSessionsFromSdk = (sessions, sdkConversations) => sessions.filter((session) => !sdkConversations.some((conversation) => conversation.conversationID === session.conversationId));
107
+ const syncSessionConversationsToStore = async (sessions) => {
108
+ const currentList = useConversationStore.getState().conversationList;
109
+ const newSessions = sessions.filter((session) => !currentList.some((conversation) => conversation.conversationID === session.conversationId));
110
+ if (!newSessions.length)
111
+ return;
112
+ const sdkConversations = await fetchSdkConversations(newSessions);
113
+ const missingSessions = findMissingSessionsFromSdk(newSessions, sdkConversations);
114
+ const conversationsToUpdate = [...sdkConversations];
115
+ if (missingSessions.length) {
116
+ try {
117
+ const fallbackConversations = await fetchConversationsImDetail(missingSessions.map((session) => ({
118
+ ownerUserID: session.ownerId,
119
+ conversationID: session.conversationId,
120
+ })));
121
+ conversationsToUpdate.push(...fallbackConversations);
122
+ }
123
+ catch (error) {
124
+ console.error("syncSessionConversationsToStore", error);
125
+ }
126
+ }
127
+ if (conversationsToUpdate.length) {
128
+ useConversationStore
129
+ .getState()
130
+ .updateConversationList(conversationsToUpdate, "filter");
131
+ }
132
+ };
133
+ export const useGetSession = ({ filter, options = { pageSize: undefined, isEnabled: true }, }) => {
134
+ var _a, _b;
135
+ const pageSize = (_a = options === null || options === void 0 ? void 0 : options.pageSize) !== null && _a !== void 0 ? _a : SESSION_PAGE_SIZE;
136
+ const isEnabled = (_b = options === null || options === void 0 ? void 0 : options.isEnabled) !== null && _b !== void 0 ? _b : true;
26
137
  const conversationList = useConversationStore((state) => state.conversationList);
27
- const _a = useInfiniteQuery({
138
+ const config = useMemo(() => buildSessionConfig(filter, pageSize), [filter, pageSize]);
139
+ const _c = useInfiniteQuery({
28
140
  initialPageParam: 1,
29
- queryKey: [QUERY_KEYS.GET_SESSION_BY_TAG_OR_STATUS, filter, options],
141
+ queryKey: [config.queryKey, filter, pageSize],
30
142
  queryFn: async ({ pageParam = 1 }) => {
31
- var _a, _b, _c;
32
- const params = {
33
- applicationType: useAuthStore.getState().applicationType,
34
- tag: filter.tag,
35
- status: filter.status,
36
- page: pageParam,
37
- pageSize: (options === null || options === void 0 ? void 0 : options.pageSize) || PAGE_SIZE,
38
- searchTerm: filter.searchTerm,
39
- conversationIds: filter.conversationIds,
40
- };
41
- const res = await apiInstance.post(ENDPOINTS.chatService.getSessionsByTagOrStatus, params);
42
- //FIND NEW CONVERSATIONS
43
- const conversationList = useConversationStore.getState().conversationList;
44
- const newConversations = ((_c = (_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.filter) === null || _c === void 0 ? void 0 : _c.call(_b, (session) => {
45
- return !conversationList.some((conversation) => conversation.conversationID === session.conversationId);
46
- })) || [];
47
- if (newConversations === null || newConversations === void 0 ? void 0 : newConversations.length) {
48
- DChatSDK.getMultipleConversation(newConversations.map((session) => session.conversationId)).then((res) => {
49
- useConversationStore
50
- .getState()
51
- .updateConversationList(res.data, "filter");
143
+ var _a, _b;
144
+ const params = config.buildParams(pageParam);
145
+ const res = await apiInstance.post(config.endpoint, params);
146
+ if ((_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.length) {
147
+ void syncSessionConversationsToStore(res.data.data).catch((error) => {
148
+ console.error("syncSessionConversationsToStore", error);
52
149
  });
53
150
  }
54
151
  return res.data;
55
152
  },
56
153
  getNextPageParam: (lastPage) => {
57
154
  var _a, _b;
58
- const pageSize = (options === null || options === void 0 ? void 0 : options.pageSize) || PAGE_SIZE;
59
155
  const dataLength = ((_a = lastPage === null || lastPage === void 0 ? void 0 : lastPage.data) === null || _a === void 0 ? void 0 : _a.length) || 0;
60
156
  const currentPage = ((_b = lastPage === null || lastPage === void 0 ? void 0 : lastPage.pageable) === null || _b === void 0 ? void 0 : _b.pageNumber) || 1;
61
157
  return dataLength < pageSize ? undefined : currentPage + 1;
62
158
  },
63
- enabled: (options === null || options === void 0 ? void 0 : options.isEnabled) && hasValidFilter(filter),
64
- }), { data, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading } = _a, rest = __rest(_a, ["data", "fetchNextPage", "hasNextPage", "isFetchingNextPage", "isLoading"]);
65
- const { dataFlatten } = useMemo(() => {
66
- var _a, _b, _c;
67
- if (!data) {
68
- return { dataFlatten: [] };
69
- }
159
+ enabled: isEnabled && hasValidFilter(filter),
160
+ }), { data, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading } = _c, rest = __rest(_c, ["data", "fetchNextPage", "hasNextPage", "isFetchingNextPage", "isLoading"]);
161
+ const dataFlatten = useMemo(() => {
162
+ var _a;
163
+ if (!data)
164
+ return [];
70
165
  const allItems = data.pages.flatMap((page) => page.data);
71
- // Map session theo conversationId
72
- const sessionMap = new Map(allItems.map((s) => [s.conversationId, s]));
73
- const merged = ((_c = (_b = (_a = conversationList === null || conversationList === void 0 ? void 0 : conversationList.map) === null || _a === void 0 ? void 0 : _a.call(conversationList, (conv) => {
74
- const session = sessionMap.get(conv.conversationID);
166
+ const sessionMap = new Map(allItems.map((session) => [session.conversationId, session]));
167
+ return (((_a = conversationList === null || conversationList === void 0 ? void 0 : conversationList.map((conversation) => {
168
+ const session = sessionMap.get(conversation.conversationID);
75
169
  if (!session)
76
170
  return null;
77
- return Object.assign(Object.assign({}, session), { conversation: conv });
78
- })) === null || _b === void 0 ? void 0 : _b.filter) === null || _c === void 0 ? void 0 : _c.call(_b, (x) => Boolean(x))) || [];
79
- return { dataFlatten: merged };
171
+ return Object.assign(Object.assign({}, session), { conversation });
172
+ })) === null || _a === void 0 ? void 0 : _a.filter((item) => Boolean(item))) || []);
80
173
  }, [data, conversationList]);
81
174
  return Object.assign({ data,
82
175
  fetchNextPage,
@@ -85,10 +178,3 @@ export const useGetSession = ({ filter, options = {
85
178
  isLoading,
86
179
  dataFlatten }, rest);
87
180
  };
88
- function hasValidFilter(filter) {
89
- return Object.values(filter).some((v) => {
90
- if (typeof v === "string")
91
- return v.trim() !== "";
92
- return v !== undefined && v !== null;
93
- });
94
- }
@@ -0,0 +1,3 @@
1
+ import { ITeamSessionSummaryItem } from "../../types/dto";
2
+ export declare const useGetTeamSessionSummary: () => import("@tanstack/react-query").UseQueryResult<ITeamSessionSummaryItem[], Error>;
3
+ //# sourceMappingURL=useGetTeamSessionSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGetTeamSessionSummary.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useGetTeamSessionSummary.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAExE,eAAO,MAAM,wBAAwB,wFASjC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { useQuery } from "@tanstack/react-query";
2
+ import { QUERY_KEYS } from "../../services/query";
3
+ import { apiInstance } from "../../services/api";
4
+ import { ENDPOINTS } from "../../services/routes";
5
+ export const useGetTeamSessionSummary = () => useQuery({
6
+ queryKey: [QUERY_KEYS.GET_TEAM_SESSION_SUMMARY],
7
+ queryFn: async () => {
8
+ var _a;
9
+ const res = await apiInstance.post(ENDPOINTS.chatService.getTeamSessionSummary, {});
10
+ return ((_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data) || [];
11
+ },
12
+ });
@@ -0,0 +1,5 @@
1
+ export declare const useIsJoinedGroup: (groupId?: string) => {
2
+ isJoined: boolean | null;
3
+ refetch: () => Promise<void>;
4
+ };
5
+ //# sourceMappingURL=useIsJoinedGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsJoinedGroup.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useIsJoinedGroup.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM;;;CAsBhD,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { DChatSDK } from "../../constants/sdk";
4
+ export const useIsJoinedGroup = (groupId) => {
5
+ const [isJoined, setIsJoined] = useState(null);
6
+ const checkIsJoined = useCallback(async () => {
7
+ if (!groupId) {
8
+ setIsJoined(null);
9
+ return;
10
+ }
11
+ try {
12
+ const { data } = await DChatSDK.isJoinGroup(groupId);
13
+ setIsJoined(Boolean(data));
14
+ }
15
+ catch (error) {
16
+ console.error("isJoinGroup error", error);
17
+ setIsJoined(null);
18
+ }
19
+ }, [groupId]);
20
+ useEffect(() => {
21
+ checkIsJoined();
22
+ }, [checkIsJoined]);
23
+ return { isJoined, refetch: checkIsJoined };
24
+ };
@@ -0,0 +1,12 @@
1
+ interface UseJoinGroupFlowParams {
2
+ groupId?: string;
3
+ latestConversationSessionId?: string;
4
+ refetchIsJoined: () => Promise<unknown>;
5
+ refetchConversationSessions: () => Promise<unknown>;
6
+ }
7
+ export declare const useJoinGroupFlow: ({ groupId, latestConversationSessionId, refetchIsJoined, refetchConversationSessions, }: UseJoinGroupFlowParams) => {
8
+ handleJoinGroup: () => Promise<void>;
9
+ isJoining: boolean;
10
+ };
11
+ export {};
12
+ //# sourceMappingURL=useJoinGroupFlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useJoinGroupFlow.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useJoinGroupFlow.ts"],"names":[],"mappings":"AAQA,UAAU,sBAAsB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,2BAA2B,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACrD;AAED,eAAO,MAAM,gBAAgB,GAAI,yFAK9B,sBAAsB;;;CA6DxB,CAAC"}