@droppii-org/chat-sdk 0.1.19 → 0.1.21

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 (131) hide show
  1. package/dist/components/conversation/ConversationBySessionItem.d.ts +3 -1
  2. package/dist/components/conversation/ConversationBySessionItem.d.ts.map +1 -1
  3. package/dist/components/conversation/ConversationBySessionItem.js +4 -7
  4. package/dist/components/conversation/DeskConversationList.d.ts.map +1 -1
  5. package/dist/components/conversation/DeskConversationList.js +6 -2
  6. package/dist/components/message/GroupMembersDrawer.d.ts +4 -1
  7. package/dist/components/message/GroupMembersDrawer.d.ts.map +1 -1
  8. package/dist/components/message/GroupMembersDrawer.js +39 -5
  9. package/dist/components/message/MessageHeader.d.ts +2 -1
  10. package/dist/components/message/MessageHeader.d.ts.map +1 -1
  11. package/dist/components/message/MessageHeader.js +3 -4
  12. package/dist/components/message/MessageList.d.ts.map +1 -1
  13. package/dist/components/message/MessageList.js +8 -11
  14. package/dist/components/message/UnassignedSessionFooter.d.ts +7 -0
  15. package/dist/components/message/UnassignedSessionFooter.d.ts.map +1 -0
  16. package/dist/components/message/UnassignedSessionFooter.js +26 -0
  17. package/dist/components/message/footer/ActionBar.d.ts.map +1 -1
  18. package/dist/components/message/footer/ActionBar.js +4 -1
  19. package/dist/components/message/footer/EnterHandler.d.ts.map +1 -1
  20. package/dist/components/message/footer/EnterHandler.js +20 -2
  21. package/dist/components/message/footer/SessionClosedModal.d.ts +10 -0
  22. package/dist/components/message/footer/SessionClosedModal.d.ts.map +1 -0
  23. package/dist/components/message/footer/SessionClosedModal.js +9 -0
  24. package/dist/components/message/footer/index.d.ts.map +1 -1
  25. package/dist/components/message/footer/index.js +103 -18
  26. package/dist/components/message/item/SystemLogMessage.d.ts.map +1 -1
  27. package/dist/components/message/item/SystemLogMessage.js +9 -10
  28. package/dist/components/searchConversation/SearchAll.d.ts.map +1 -1
  29. package/dist/components/searchConversation/SearchAll.js +5 -3
  30. package/dist/components/searchConversation/SearchConversationAsMessages.d.ts.map +1 -1
  31. package/dist/components/searchConversation/SearchConversationAsMessages.js +1 -1
  32. package/dist/components/searchConversation/SearchConversationAsUsers.js +1 -1
  33. package/dist/components/searchConversation/SearchConversationMyInbox.d.ts +6 -0
  34. package/dist/components/searchConversation/SearchConversationMyInbox.d.ts.map +1 -0
  35. package/dist/components/searchConversation/SearchConversationMyInbox.js +24 -0
  36. package/dist/components/searchConversation/SearchDrawer.js +10 -10
  37. package/dist/components/searchConversation/SearchMessageOnCurrentConversation.d.ts.map +1 -1
  38. package/dist/components/searchConversation/SearchMessageOnCurrentConversation.js +1 -1
  39. package/dist/components/searchConversation/index.d.ts +1 -0
  40. package/dist/components/searchConversation/index.d.ts.map +1 -1
  41. package/dist/components/searchConversation/index.js +8 -1
  42. package/dist/components/searchConversation/item/SearchItemAsMessage.d.ts +1 -0
  43. package/dist/components/searchConversation/item/SearchItemAsMessage.d.ts.map +1 -1
  44. package/dist/components/searchConversation/item/SearchItemAsMessage.js +4 -4
  45. package/dist/components/thread/ManualAssignPopover.d.ts +5 -2
  46. package/dist/components/thread/ManualAssignPopover.d.ts.map +1 -1
  47. package/dist/components/thread/ManualAssignPopover.js +40 -21
  48. package/dist/components/thread/SessionSection.d.ts.map +1 -1
  49. package/dist/components/thread/SessionSection.js +4 -2
  50. package/dist/components/thread/ThreadInfo.d.ts.map +1 -1
  51. package/dist/components/thread/ThreadInfo.js +2 -1
  52. package/dist/constants/index.d.ts +6 -1
  53. package/dist/constants/index.d.ts.map +1 -1
  54. package/dist/constants/index.js +6 -1
  55. package/dist/hooks/cannedResponse/useFetchCannedResponse.js +2 -2
  56. package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
  57. package/dist/hooks/global/useGlobalEvent.js +11 -0
  58. package/dist/hooks/group/useGroupMembers.d.ts.map +1 -1
  59. package/dist/hooks/group/useGroupMembers.js +17 -0
  60. package/dist/hooks/message/useMessage.js +5 -5
  61. package/dist/hooks/message/usePullSessionMessages.d.ts +2 -0
  62. package/dist/hooks/message/usePullSessionMessages.d.ts.map +1 -1
  63. package/dist/hooks/message/usePullSessionMessages.js +18 -15
  64. package/dist/hooks/search/useSearchMessage.d.ts +2 -1
  65. package/dist/hooks/search/useSearchMessage.d.ts.map +1 -1
  66. package/dist/hooks/search/useSearchMessage.js +9 -9
  67. package/dist/hooks/session/useAssignSession.d.ts +4 -0
  68. package/dist/hooks/session/useAssignSession.d.ts.map +1 -1
  69. package/dist/hooks/session/useAssignSession.js +44 -11
  70. package/dist/hooks/session/useConversationSessionState.d.ts +1 -8
  71. package/dist/hooks/session/useConversationSessionState.d.ts.map +1 -1
  72. package/dist/hooks/session/useConversationSessionState.js +2 -25
  73. package/dist/hooks/session/useGetListSessionByConversation.d.ts.map +1 -1
  74. package/dist/hooks/session/useGetListSessionByConversation.js +2 -1
  75. package/dist/hooks/session/useGetSession.d.ts.map +1 -1
  76. package/dist/hooks/session/useGetSession.js +2 -2
  77. package/dist/hooks/session/useGetTeamSupporters.d.ts +2 -1
  78. package/dist/hooks/session/useGetTeamSupporters.d.ts.map +1 -1
  79. package/dist/hooks/session/useGetTeamSupporters.js +2 -2
  80. package/dist/hooks/session/useIsJoinedGroup.d.ts +1 -1
  81. package/dist/hooks/session/useIsJoinedGroup.d.ts.map +1 -1
  82. package/dist/hooks/session/useIsJoinedGroup.js +13 -19
  83. package/dist/hooks/session/useJoinGroupFlow.d.ts +8 -6
  84. package/dist/hooks/session/useJoinGroupFlow.d.ts.map +1 -1
  85. package/dist/hooks/session/useJoinGroupFlow.js +19 -57
  86. package/dist/hooks/session/useJoinSession.d.ts.map +1 -1
  87. package/dist/hooks/session/useJoinSession.js +3 -0
  88. package/dist/hooks/session/useLeaveConversation.d.ts +5 -0
  89. package/dist/hooks/session/useLeaveConversation.d.ts.map +1 -0
  90. package/dist/hooks/session/useLeaveConversation.js +35 -0
  91. package/dist/hooks/session/useReopenOrCreateSession.d.ts +4 -0
  92. package/dist/hooks/session/useReopenOrCreateSession.d.ts.map +1 -0
  93. package/dist/hooks/session/useReopenOrCreateSession.js +32 -0
  94. package/dist/hooks/session/useSessionLatestPreview.d.ts +7 -0
  95. package/dist/hooks/session/useSessionLatestPreview.d.ts.map +1 -0
  96. package/dist/hooks/session/useSessionLatestPreview.js +82 -0
  97. package/dist/hooks/session/useSortedSessions.d.ts +4 -0
  98. package/dist/hooks/session/useSortedSessions.d.ts.map +1 -0
  99. package/dist/hooks/session/useSortedSessions.js +13 -0
  100. package/dist/hooks/session/useSyncGroupStateAfterJoin.d.ts +9 -0
  101. package/dist/hooks/session/useSyncGroupStateAfterJoin.d.ts.map +1 -0
  102. package/dist/hooks/session/useSyncGroupStateAfterJoin.js +23 -0
  103. package/dist/index.d.ts +1 -0
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +1 -0
  106. package/dist/locales/vi/common.json +18 -2
  107. package/dist/services/query.d.ts +5 -0
  108. package/dist/services/query.d.ts.map +1 -1
  109. package/dist/services/query.js +5 -0
  110. package/dist/services/routes.d.ts +4 -0
  111. package/dist/services/routes.d.ts.map +1 -1
  112. package/dist/services/routes.js +4 -0
  113. package/dist/store/conversation.d.ts.map +1 -1
  114. package/dist/store/conversation.js +5 -2
  115. package/dist/styles/global.css +1 -1
  116. package/dist/tsconfig.tsbuildinfo +1 -1
  117. package/dist/types/chat.d.ts +1 -1
  118. package/dist/types/chat.d.ts.map +1 -1
  119. package/dist/types/dto.d.ts +4 -0
  120. package/dist/types/dto.d.ts.map +1 -1
  121. package/dist/utils/events.d.ts +2 -0
  122. package/dist/utils/events.d.ts.map +1 -1
  123. package/dist/utils/messageLog.d.ts +1 -1
  124. package/dist/utils/messageLog.d.ts.map +1 -1
  125. package/dist/utils/messageLog.js +23 -6
  126. package/dist/utils/messageTransform.d.ts.map +1 -1
  127. package/dist/utils/messageTransform.js +1 -1
  128. package/dist/utils/queryHelpers.d.ts +1 -1
  129. package/dist/utils/queryHelpers.d.ts.map +1 -1
  130. package/dist/utils/queryHelpers.js +1 -1
  131. package/package.json +1 -1
@@ -1,41 +1,18 @@
1
1
  "use client";
2
- import { useMemo } from "react";
3
2
  import { useGetListSessionByConversation } from "./useGetListSessionByConversation";
4
- import { useIsJoinedGroup } from "./useIsJoinedGroup";
5
3
  import { isGroupSession } from "../../utils/imCommon";
6
- export const useConversationSessionState = ({ conversationId, conversationType, groupId, userID, }) => {
4
+ export const useConversationSessionState = ({ conversationId, conversationType, groupId, }) => {
7
5
  var _a;
8
6
  const isGroupConversation = isGroupSession(conversationType);
9
7
  const currentGroupId = isGroupConversation ? groupId : undefined;
10
- const { isJoined, refetch: refetchIsJoined } = useIsJoinedGroup(currentGroupId);
11
8
  const { data: conversationSessions, refetch: refetchConversationSessions, } = useGetListSessionByConversation({
12
9
  conversationId,
13
10
  });
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;
11
+ const latestConversationSession = conversationSessions === null || conversationSessions === void 0 ? void 0 : conversationSessions[0];
29
12
  return {
30
- isGroupConversation,
31
13
  groupId: currentGroupId,
32
- isJoined,
33
14
  latestConversationSession,
34
- isSessionMember,
35
- isMember,
36
- isNotGroupMember,
37
15
  customerUserID: (_a = latestConversationSession === null || latestConversationSession === void 0 ? void 0 : latestConversationSession.ownerId) !== null && _a !== void 0 ? _a : "",
38
- refetchIsJoined,
39
16
  refetchConversationSessions,
40
17
  };
41
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useGetListSessionByConversation.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useGetListSessionByConversation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGjE,UAAU,oBAAoB;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,+BAA+B,GAAI,qCAI7C,oBAAoB,8EAqBnB,CAAC"}
1
+ {"version":3,"file":"useGetListSessionByConversation.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useGetListSessionByConversation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAIjE,UAAU,oBAAoB;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,+BAA+B,GAAI,qCAI7C,oBAAoB,8EAqBnB,CAAC"}
@@ -3,7 +3,8 @@ import { QUERY_KEYS } from "../../services/query";
3
3
  import { apiInstance } from "../../services/api";
4
4
  import { ENDPOINTS } from "../../services/routes";
5
5
  import { DChatApplicationType } from "../../types/chat";
6
- export const useGetListSessionByConversation = ({ conversationId, page = 1, pageSize = 50, }) => useQuery({
6
+ import { PAGE_SIZE } from "../../constants";
7
+ export const useGetListSessionByConversation = ({ conversationId, page = 1, pageSize = PAGE_SIZE.large, }) => useQuery({
7
8
  queryKey: [
8
9
  QUERY_KEYS.GET_LIST_SESSION_BY_CONVERSATION,
9
10
  conversationId,
@@ -1 +1 @@
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"}
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;AAMpE,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"}
@@ -18,7 +18,7 @@ import { QUERY_KEYS } from "../../services/query";
18
18
  import useConversationStore from "../../store/conversation";
19
19
  import useAuthStore from "../../store/auth";
20
20
  import { DChatSDK } from "../../constants/sdk";
21
- const SESSION_PAGE_SIZE = 20;
21
+ import { PAGE_SIZE } from "../../constants";
22
22
  const hasValidFilter = (filter) => {
23
23
  return Object.values(filter).some((v) => {
24
24
  if (typeof v === "string")
@@ -132,7 +132,7 @@ const syncSessionConversationsToStore = async (sessions) => {
132
132
  };
133
133
  export const useGetSession = ({ filter, options = { pageSize: undefined, isEnabled: true }, }) => {
134
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;
135
+ const pageSize = (_a = options === null || options === void 0 ? void 0 : options.pageSize) !== null && _a !== void 0 ? _a : PAGE_SIZE.medium;
136
136
  const isEnabled = (_b = options === null || options === void 0 ? void 0 : options.isEnabled) !== null && _b !== void 0 ? _b : true;
137
137
  const conversationList = useConversationStore((state) => state.conversationList);
138
138
  const config = useMemo(() => buildSessionConfig(filter, pageSize), [filter, pageSize]);
@@ -2,7 +2,8 @@ import { ISupporterResponse } from "../../types/dto";
2
2
  interface UseGetTeamSupportersParams {
3
3
  teamId: string;
4
4
  search?: string;
5
+ enabled?: boolean;
5
6
  }
6
- export declare const useGetTeamSupporters: ({ teamId, search, }: UseGetTeamSupportersParams) => import("@tanstack/react-query").UseQueryResult<ISupporterResponse[], Error>;
7
+ export declare const useGetTeamSupporters: ({ teamId, search, enabled, }: UseGetTeamSupportersParams) => import("@tanstack/react-query").UseQueryResult<ISupporterResponse[], Error>;
7
8
  export {};
8
9
  //# sourceMappingURL=useGetTeamSupporters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGetTeamSupporters.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useGetTeamSupporters.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGnE,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,oBAAoB,GAAI,qBAGlC,0BAA0B,gFAiBzB,CAAC"}
1
+ {"version":3,"file":"useGetTeamSupporters.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useGetTeamSupporters.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGnE,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,oBAAoB,GAAI,8BAIlC,0BAA0B,gFAiBzB,CAAC"}
@@ -3,7 +3,7 @@ import { QUERY_KEYS } from "../../services/query";
3
3
  import { apiInstance } from "../../services/api";
4
4
  import { ENDPOINTS } from "../../services/routes";
5
5
  import useAuthStore from "../../store/auth";
6
- export const useGetTeamSupporters = ({ teamId, search, }) => useQuery({
6
+ export const useGetTeamSupporters = ({ teamId, search, enabled = true, }) => useQuery({
7
7
  queryKey: [QUERY_KEYS.GET_TEAM_SUPPORTERS, teamId, search],
8
8
  queryFn: async () => {
9
9
  var _a;
@@ -15,6 +15,6 @@ export const useGetTeamSupporters = ({ teamId, search, }) => useQuery({
15
15
  });
16
16
  return (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data;
17
17
  },
18
- enabled: !!teamId,
18
+ enabled: !!teamId && enabled,
19
19
  placeholderData: keepPreviousData,
20
20
  });
@@ -1,5 +1,5 @@
1
1
  export declare const useIsJoinedGroup: (groupId?: string) => {
2
2
  isJoined: boolean | null;
3
- refetch: () => Promise<void>;
3
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<boolean, Error>>;
4
4
  };
5
5
  //# sourceMappingURL=useIsJoinedGroup.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"useIsJoinedGroup.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useIsJoinedGroup.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM;;;CAchD,CAAC"}
@@ -1,24 +1,18 @@
1
1
  "use client";
2
- import { useCallback, useEffect, useState } from "react";
2
+ import { useQuery } from "@tanstack/react-query";
3
3
  import { DChatSDK } from "../../constants/sdk";
4
+ import { QUERY_KEYS } from "../../services/query";
4
5
  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 {
6
+ const { data, isLoading, refetch } = useQuery({
7
+ queryKey: [QUERY_KEYS.IS_JOINED_GROUP, groupId],
8
+ enabled: Boolean(groupId),
9
+ queryFn: async () => {
12
10
  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 };
11
+ return Boolean(data);
12
+ },
13
+ });
14
+ return {
15
+ isJoined: isLoading ? null : (data !== null && data !== void 0 ? data : null),
16
+ refetch,
17
+ };
24
18
  };
@@ -1,11 +1,13 @@
1
- interface UseJoinGroupFlowParams {
1
+ interface UseGroupJoinFlowParams {
2
2
  groupId?: string;
3
- latestConversationSessionId?: string;
4
- refetchIsJoined: () => Promise<unknown>;
5
- refetchConversationSessions: () => Promise<unknown>;
3
+ sessionId?: string;
6
4
  }
7
- export declare const useJoinGroupFlow: ({ groupId, latestConversationSessionId, refetchIsJoined, refetchConversationSessions, }: UseJoinGroupFlowParams) => {
8
- handleJoinGroup: () => Promise<void>;
5
+ export declare const useJoinGroupFlow: ({ groupId, sessionId, }: UseGroupJoinFlowParams) => {
6
+ isJoined: boolean | null;
7
+ isCheckingMembership: boolean;
8
+ shouldRestrictToLastSession: boolean;
9
+ joinGroup: () => Promise<void>;
10
+ syncGroupStateAfterJoin: () => Promise<void>;
9
11
  isJoining: boolean;
10
12
  };
11
13
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"useJoinGroupFlow.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useJoinGroupFlow.ts"],"names":[],"mappings":"AAUA,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;;;CA4ExB,CAAC"}
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,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,GAAI,yBAG9B,sBAAsB;;;;;;;CA6BxB,CAAC"}
@@ -1,72 +1,34 @@
1
1
  "use client";
2
2
  import { message } from "antd";
3
- import { useCallback, useEffect, useRef, useState } from "react";
3
+ import { useCallback } from "react";
4
4
  import { useTranslation } from "react-i18next";
5
- import useConversationStore from "../../store/conversation";
6
5
  import { useJoinSession } from "./useJoinSession";
7
- const POST_JOIN_SYNC_DELAY = 500;
8
- export const useJoinGroupFlow = ({ groupId, latestConversationSessionId, refetchIsJoined, refetchConversationSessions, }) => {
6
+ import { useSyncGroupStateAfterJoin } from "./useSyncGroupStateAfterJoin";
7
+ export const useJoinGroupFlow = ({ groupId, sessionId, }) => {
9
8
  const { t } = useTranslation();
10
- const joinSyncTimerRef = useRef(null);
11
- const [isWaitingForSync, setIsWaitingForSync] = useState(false);
12
- const getCurrentGroupInfoByReq = useConversationStore((state) => state.getCurrentGroupInfoByReq);
13
- const { mutateAsync: joinSession, isPending: isJoining } = useJoinSession();
14
- const syncGroupStateAfterJoin = useCallback(async () => {
15
- if (joinSyncTimerRef.current) {
16
- clearTimeout(joinSyncTimerRef.current);
17
- }
18
- setIsWaitingForSync(true);
19
- try {
20
- await refetchIsJoined();
21
- await refetchConversationSessions();
22
- if (!groupId)
23
- return;
24
- await getCurrentGroupInfoByReq(groupId);
25
- await new Promise((resolve) => {
26
- joinSyncTimerRef.current = setTimeout(() => {
27
- resolve();
28
- }, POST_JOIN_SYNC_DELAY);
29
- });
30
- await refetchIsJoined();
31
- await refetchConversationSessions();
32
- await getCurrentGroupInfoByReq(groupId);
33
- }
34
- finally {
35
- setIsWaitingForSync(false);
36
- joinSyncTimerRef.current = null;
37
- }
38
- }, [
39
- getCurrentGroupInfoByReq,
9
+ const { isJoined, syncGroupStateAfterJoin } = useSyncGroupStateAfterJoin({
40
10
  groupId,
41
- refetchConversationSessions,
42
- refetchIsJoined,
43
- ]);
44
- const handleJoinGroup = useCallback(async () => {
45
- var _a, _b, _c, _d;
46
- if (!latestConversationSessionId)
11
+ });
12
+ const { mutateAsync: joinSession, isPending: isJoining } = useJoinSession();
13
+ const joinGroup = useCallback(async () => {
14
+ if (!sessionId)
47
15
  return;
48
16
  try {
49
- await joinSession(latestConversationSessionId);
17
+ await joinSession(sessionId);
18
+ await syncGroupStateAfterJoin();
50
19
  }
51
- catch (error) {
52
- const isDuplicate = (_d = (_c = (_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) === null || _c === void 0 ? void 0 : _c.includes) === null || _d === void 0 ? void 0 : _d.call(_c, "Duplicate key");
53
- if (!isDuplicate) {
54
- message.error(t("join_group_failed"));
55
- }
20
+ catch (_a) {
21
+ message.error(t("join_group_failed"));
56
22
  return;
57
23
  }
58
- await syncGroupStateAfterJoin();
59
24
  message.success(t("join_group_success"));
60
- }, [joinSession, latestConversationSessionId, syncGroupStateAfterJoin, t]);
61
- useEffect(() => {
62
- return () => {
63
- if (joinSyncTimerRef.current) {
64
- clearTimeout(joinSyncTimerRef.current);
65
- }
66
- };
67
- }, []);
25
+ }, [joinSession, sessionId, syncGroupStateAfterJoin, t]);
68
26
  return {
69
- handleJoinGroup,
70
- isJoining: isJoining || isWaitingForSync,
27
+ isJoined,
28
+ isCheckingMembership: isJoined === null,
29
+ shouldRestrictToLastSession: isJoined === false,
30
+ joinGroup,
31
+ syncGroupStateAfterJoin,
32
+ isJoining,
71
33
  };
72
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useJoinSession.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useJoinSession.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,eAAO,MAAM,cAAc,wGAqC1B,CAAC"}
1
+ {"version":3,"file":"useJoinSession.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useJoinSession.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,eAAO,MAAM,cAAc,wGAwC1B,CAAC"}
@@ -17,6 +17,9 @@ export const useJoinSession = () => {
17
17
  },
18
18
  onSuccess: async () => {
19
19
  await Promise.all([
20
+ queryClient.invalidateQueries({
21
+ queryKey: [QUERY_KEYS.IS_JOINED_GROUP],
22
+ }),
20
23
  queryClient.invalidateQueries({
21
24
  queryKey: [QUERY_KEYS.GET_SESSION_SUMMARY],
22
25
  }),
@@ -0,0 +1,5 @@
1
+ import { BaseResponse } from "../../types/dto";
2
+ export declare const useLeaveConversation: () => import("@tanstack/react-query").UseMutationResult<BaseResponse<boolean>, Error, {
3
+ conversationId: string;
4
+ }, unknown>;
5
+ //# sourceMappingURL=useLeaveConversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLeaveConversation.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useLeaveConversation.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAO/C,eAAO,MAAM,oBAAoB;oBAQX,MAAM;WA4B3B,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { QUERY_KEYS } from "../../services/query";
4
+ import { apiInstance } from "../../services/api";
5
+ import { ENDPOINTS } from "../../services/routes";
6
+ import useAuthStore from "../../store/auth";
7
+ import useConversationStore from "../../store/conversation";
8
+ import useSessionStore from "../../store/session";
9
+ import { SessionStatus } from "../../types/chat";
10
+ import emitter from "../../utils/events";
11
+ export const useLeaveConversation = () => {
12
+ const queryClient = useQueryClient();
13
+ return useMutation({
14
+ mutationKey: [QUERY_KEYS.LEAVE_CONVERSATION],
15
+ mutationFn: async ({ conversationId, }) => {
16
+ const res = await apiInstance.post(ENDPOINTS.chatService.leaveConversation(conversationId), {}, {
17
+ params: {
18
+ applicationType: useAuthStore.getState().applicationType,
19
+ },
20
+ });
21
+ emitter.emit("GROUP_MEMBERS_CHANGED");
22
+ return res === null || res === void 0 ? void 0 : res.data;
23
+ },
24
+ onSuccess: async () => {
25
+ useConversationStore.getState().clearSelectedConversation();
26
+ useSessionStore
27
+ .getState()
28
+ .setFilterSummary({ status: SessionStatus.IN_PROCESS });
29
+ await Promise.all([
30
+ queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.GET_SESSION_SUMMARY] }),
31
+ queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.GET_SESSION_BY_TAG_OR_STATUS] }),
32
+ ]);
33
+ },
34
+ });
35
+ };
@@ -0,0 +1,4 @@
1
+ import { ISessionResponse } from "../../types/dto";
2
+ export declare const useCreateSession: () => import("@tanstack/react-query").UseMutationResult<ISessionResponse, Error, string, unknown>;
3
+ export declare const useReopenSession: () => import("@tanstack/react-query").UseMutationResult<ISessionResponse, Error, string, unknown>;
4
+ //# sourceMappingURL=useReopenOrCreateSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReopenOrCreateSession.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useReopenOrCreateSession.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAajE,eAAO,MAAM,gBAAgB,mGAe5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,mGAe5B,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { useMutation } from "@tanstack/react-query";
3
+ import { apiInstance } from "../../services/api";
4
+ import { ENDPOINTS } from "../../services/routes";
5
+ import { QUERY_KEYS } from "../../services/query";
6
+ import useAuthStore from "../../store/auth";
7
+ export const useCreateSession = () => {
8
+ return useMutation({
9
+ mutationKey: [QUERY_KEYS.CREATE_SESSION],
10
+ mutationFn: async (conversationId) => {
11
+ const payload = {
12
+ applicationType: useAuthStore.getState().applicationType,
13
+ conversationId,
14
+ };
15
+ const res = await apiInstance.post(ENDPOINTS.chatService.createSession, payload);
16
+ return res.data.data;
17
+ },
18
+ });
19
+ };
20
+ export const useReopenSession = () => {
21
+ return useMutation({
22
+ mutationKey: [QUERY_KEYS.REOPEN_SESSION],
23
+ mutationFn: async (conversationId) => {
24
+ const payload = {
25
+ applicationType: useAuthStore.getState().applicationType,
26
+ conversationId,
27
+ };
28
+ const res = await apiInstance.post(ENDPOINTS.chatService.reopenSession, payload);
29
+ return res.data.data;
30
+ },
31
+ });
32
+ };
@@ -0,0 +1,7 @@
1
+ import type { ISessionByStatus } from "../../store/type";
2
+ export interface LatestPreview {
3
+ latestMsg: string;
4
+ latestMsgSendTime: number;
5
+ }
6
+ export declare const useSessionLatestPreview: (sessions: ISessionByStatus[]) => Map<string, LatestPreview>;
7
+ //# sourceMappingURL=useSessionLatestPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessionLatestPreview.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useSessionLatestPreview.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKzD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAOD,eAAO,MAAM,uBAAuB,GAAI,UAAU,gBAAgB,EAAE,+BAsFnE,CAAC"}
@@ -0,0 +1,82 @@
1
+ "use client";
2
+ import { useQueries, useQueryClient } from "@tanstack/react-query";
3
+ import { useEffect, useMemo } from "react";
4
+ import { QUERY_KEYS } from "../../services/query";
5
+ import emitter from "../../utils/events";
6
+ import useAuthStore from "../../store/auth";
7
+ import { fetchPullSessionMessages } from "../message/usePullSessionMessages";
8
+ const shouldPullSessionMessages = (session) => Boolean(session.conversationId &&
9
+ session.ownerId);
10
+ export const useSessionLatestPreview = (sessions) => {
11
+ const applicationType = useAuthStore((state) => state.applicationType);
12
+ const queryClient = useQueryClient();
13
+ const results = useQueries({
14
+ queries: sessions.map((session) => ({
15
+ queryKey: [
16
+ QUERY_KEYS.PULL_SESSION_MESSAGES,
17
+ session.conversationId,
18
+ session.ownerId,
19
+ ],
20
+ enabled: shouldPullSessionMessages(session),
21
+ queryFn: () => fetchPullSessionMessages({
22
+ conversationID: session.conversationId,
23
+ userID: session.ownerId,
24
+ applicationType,
25
+ }),
26
+ })),
27
+ });
28
+ useEffect(() => {
29
+ const pushNewMessageHandler = (message) => {
30
+ const session = sessions.find((item) => {
31
+ var _a, _b;
32
+ return (((_a = item.conversation) === null || _a === void 0 ? void 0 : _a.groupID) &&
33
+ item.conversation.groupID === message.groupID) ||
34
+ (((_b = item.conversation) === null || _b === void 0 ? void 0 : _b.userID) &&
35
+ (item.conversation.userID === message.recvID ||
36
+ item.conversation.userID === message.sendID));
37
+ });
38
+ if (!session)
39
+ return;
40
+ void queryClient.invalidateQueries({
41
+ queryKey: [
42
+ QUERY_KEYS.PULL_SESSION_MESSAGES,
43
+ session.conversationId,
44
+ session.ownerId,
45
+ ],
46
+ });
47
+ };
48
+ const groupMembersChangedHandler = () => {
49
+ void queryClient.invalidateQueries({
50
+ queryKey: [QUERY_KEYS.PULL_SESSION_MESSAGES],
51
+ });
52
+ };
53
+ emitter.on("PUSH_NEW_MSG", pushNewMessageHandler);
54
+ emitter.on("GROUP_MEMBERS_CHANGED", groupMembersChangedHandler);
55
+ return () => {
56
+ emitter.off("PUSH_NEW_MSG", pushNewMessageHandler);
57
+ emitter.off("GROUP_MEMBERS_CHANGED", groupMembersChangedHandler);
58
+ };
59
+ }, [sessions, queryClient]);
60
+ return useMemo(() => {
61
+ const map = new Map();
62
+ sessions.forEach((session, index) => {
63
+ var _a, _b, _c, _d;
64
+ const pullMessage = (_b = (_a = results[index]) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b[0];
65
+ const latestMsgSendTime = ((_c = session.conversation) === null || _c === void 0 ? void 0 : _c.latestMsgSendTime) || 0;
66
+ if (shouldPullSessionMessages(session) &&
67
+ pullMessage &&
68
+ pullMessage.sendTime > latestMsgSendTime) {
69
+ map.set(session.conversationId, {
70
+ latestMsg: JSON.stringify(pullMessage),
71
+ latestMsgSendTime: pullMessage.sendTime,
72
+ });
73
+ return;
74
+ }
75
+ map.set(session.conversationId, {
76
+ latestMsg: ((_d = session.conversation) === null || _d === void 0 ? void 0 : _d.latestMsg) || "",
77
+ latestMsgSendTime,
78
+ });
79
+ });
80
+ return map;
81
+ }, [sessions, results, applicationType]);
82
+ };
@@ -0,0 +1,4 @@
1
+ import { ISessionByStatus } from "../../store/type";
2
+ import type { LatestPreview } from "./useSessionLatestPreview";
3
+ export declare const useSortedSessions: (sessions: ISessionByStatus[], latestPreviewMap: Map<string, LatestPreview>) => ISessionByStatus[];
4
+ //# sourceMappingURL=useSortedSessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSortedSessions.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useSortedSessions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,eAAO,MAAM,iBAAiB,GAC5B,UAAU,gBAAgB,EAAE,EAC5B,kBAAkB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,uBAa7C,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { useMemo } from "react";
3
+ export const useSortedSessions = (sessions, latestPreviewMap) => {
4
+ const sortedSessions = useMemo(() => {
5
+ return [...sessions].sort((a, b) => {
6
+ var _a, _b, _c, _d;
7
+ const aTime = (_b = (_a = latestPreviewMap.get(a.conversationId)) === null || _a === void 0 ? void 0 : _a.latestMsgSendTime) !== null && _b !== void 0 ? _b : 0;
8
+ const bTime = (_d = (_c = latestPreviewMap.get(b.conversationId)) === null || _c === void 0 ? void 0 : _c.latestMsgSendTime) !== null && _d !== void 0 ? _d : 0;
9
+ return bTime - aTime;
10
+ });
11
+ }, [sessions, latestPreviewMap]);
12
+ return sortedSessions;
13
+ };
@@ -0,0 +1,9 @@
1
+ interface UseSyncGroupStateAfterJoinParams {
2
+ groupId?: string;
3
+ }
4
+ export declare const useSyncGroupStateAfterJoin: ({ groupId, }: UseSyncGroupStateAfterJoinParams) => {
5
+ isJoined: boolean | null;
6
+ syncGroupStateAfterJoin: () => Promise<void>;
7
+ };
8
+ export {};
9
+ //# sourceMappingURL=useSyncGroupStateAfterJoin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSyncGroupStateAfterJoin.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useSyncGroupStateAfterJoin.ts"],"names":[],"mappings":"AAaA,UAAU,gCAAgC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,0BAA0B,GAAI,cAExC,gCAAgC;;;CAmBlC,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { useCallback } from "react";
3
+ import useConversationStore from "../../store/conversation";
4
+ import { useIsJoinedGroup } from "./useIsJoinedGroup";
5
+ const JOIN_GROUP_SYNC_DELAY = 500;
6
+ const waitForJoinGroupSync = () => new Promise((resolve) => {
7
+ setTimeout(resolve, JOIN_GROUP_SYNC_DELAY);
8
+ });
9
+ export const useSyncGroupStateAfterJoin = ({ groupId, }) => {
10
+ const getCurrentGroupInfoByReq = useConversationStore((state) => state.getCurrentGroupInfoByReq);
11
+ const { isJoined, refetch: refetchIsJoined } = useIsJoinedGroup(groupId);
12
+ const syncGroupStateAfterJoin = useCallback(async () => {
13
+ await waitForJoinGroupSync();
14
+ await refetchIsJoined();
15
+ if (!groupId)
16
+ return;
17
+ await getCurrentGroupInfoByReq(groupId);
18
+ }, [getCurrentGroupInfoByReq, groupId, refetchIsJoined]);
19
+ return {
20
+ isJoined,
21
+ syncGroupStateAfterJoin,
22
+ };
23
+ };
package/dist/index.d.ts CHANGED
@@ -19,4 +19,5 @@ export { useUserStore, DChatApplicationType, useAuthStore };
19
19
  export { Platform as DChatPlatform, LogLevel as DChatLogLevel, SessionType as DChatSessionType, };
20
20
  export type { DChatInitAndLoginConfig };
21
21
  export { getDChatSDK } from "./constants/sdk";
22
+ export { PAGE_SIZE } from "./constants";
22
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAExB,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,cAAc,CAAC;AAC7C,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAGvF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,CAAC;AAI5D,OAAO,EACL,QAAQ,IAAI,aAAa,EACzB,QAAQ,IAAI,aAAa,EACzB,WAAW,IAAI,gBAAgB,GAChC,CAAC;AAEF,YAAY,EAAE,uBAAuB,EAAE,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AAExB,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,cAAc,CAAC;AAC7C,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAGvF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,CAAC;AAI5D,OAAO,EACL,QAAQ,IAAI,aAAa,EACzB,QAAQ,IAAI,aAAa,EACzB,WAAW,IAAI,gBAAgB,GAChC,CAAC;AAEF,YAAY,EAAE,uBAAuB,EAAE,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -23,3 +23,4 @@ export { useUserStore, DChatApplicationType, useAuthStore };
23
23
  // export * from "./types/sdk";
24
24
  export { Platform as DChatPlatform, LogLevel as DChatLogLevel, SessionType as DChatSessionType, };
25
25
  export { getDChatSDK } from "./constants/sdk";
26
+ export { PAGE_SIZE } from "./constants";
@@ -60,9 +60,14 @@
60
60
  "manual_assign_no_results": "Không có kết quả phù hợp",
61
61
  "manual_assign_confirm_question": "Phân công lại cho <bold>{{name}}</bold>?",
62
62
  "manual_assign_button_reassign": "Phân công lại",
63
+ "manual_assign_button_auto_reassign": "Auto reassign",
63
64
  "manual_assign_success": "Phân công thành công",
65
+ "auto_assign_success": "Tự động phân công thành công",
66
+ "auto_assign_failed": "Không có nhân viên phù hợp để phân công",
64
67
  "manual_assign_failed": "Phân công thất bại",
65
- "manual_assign_current": "Đang xử ",
68
+ "assign_to_me": "Phân công cho tôi",
69
+ "assign_to_others": "Phân công cho người khác",
70
+ "unassigned_thread_notice": "Phiên này chưa được phân công cho ai",
66
71
  "video_limit_exceeded": "Chỉ được phép tải lên 1 video duy nhất",
67
72
  "select_status": "Chọn trạng thái",
68
73
  "invalid_file_format": "{{fileName}} không đúng định dạng JPG, JPEG, PNG hoặc VIDEO",
@@ -114,9 +119,20 @@
114
119
  "replied_you": "đã trả lời bạn",
115
120
  "replied": "đã trả lời",
116
121
  "my_messages": "Tin nhắn của tôi",
122
+ "my_inbox_tab": "My inbox",
117
123
  "team_messages": "Tin nhắn nhóm",
118
124
  "join_group_required": "Bạn phải là thành viên để gửi tin nhắn",
119
125
  "join_group": "Tham gia",
120
126
  "join_group_success": "Tham gia nhóm thành công",
121
- "join_group_failed": "Tham gia nhóm thất bại"
127
+ "join_group_failed": "Tham gia nhóm thất bại",
128
+ "leave_group_confirm_title": "Rời khỏi nhóm?",
129
+ "leave_group_confirm_message": "Bạn có chắc chắn muốn rời khỏi nhóm này không?",
130
+ "leave_group_success": "Rời khỏi nhóm thành công",
131
+ "leave_group_failed": "Rời khỏi nhóm thất bại",
132
+ "leave_group_assignee_error": "Bạn đang là người được phân công cho phiên chat đang xử lý, không thể rời nhóm",
133
+ "session_closed_modal_title": "Session đã đóng!",
134
+ "session_closed_modal_description": "Hãy tạo mới hoặc mở lại session để tiếp tục gửi tin nhắn!",
135
+ "session_closed_modal_reopen": "Mở lại",
136
+ "session_closed_modal_create_new": "Tạo mới",
137
+ "session_action_error": "Không thể thực hiện tác vụ này"
122
138
  }