@droppii-org/chat-sdk 0.8.1 → 0.8.2

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 (165) hide show
  1. package/dist/components/canned-response/cannedTrigger.d.ts +2 -0
  2. package/dist/components/canned-response/cannedTrigger.d.ts.map +1 -0
  3. package/dist/components/canned-response/cannedTrigger.js +3 -0
  4. package/dist/components/canned-response/insertCannedContent.js +2 -2
  5. package/dist/components/conversation/ConversationByGroupItem.js +1 -1
  6. package/dist/components/conversation/ConversationBySessionItem.js +4 -4
  7. package/dist/components/conversation/internalNotePreview.d.ts +1 -1
  8. package/dist/components/conversation/internalNotePreview.d.ts.map +1 -1
  9. package/dist/components/conversation/internalNotePreview.js +22 -3
  10. package/dist/components/conversation/rowTime.d.ts +2 -2
  11. package/dist/components/conversation/rowTime.d.ts.map +1 -1
  12. package/dist/components/conversation/rowTime.js +2 -4
  13. package/dist/components/conversation-detail/ConversationDetailInput.d.ts.map +1 -1
  14. package/dist/components/conversation-detail/ConversationDetailInput.js +8 -3
  15. package/dist/components/conversation-detail/ConversationMessageList.d.ts.map +1 -1
  16. package/dist/components/conversation-detail/ConversationMessageList.js +6 -3
  17. package/dist/components/conversation-detail/bot/BotMenuSheet.d.ts.map +1 -1
  18. package/dist/components/conversation-detail/bot/BotMenuSheet.js +1 -1
  19. package/dist/components/conversation-inbox/ConversationInboxList.d.ts.map +1 -1
  20. package/dist/components/conversation-inbox/ConversationInboxList.js +4 -0
  21. package/dist/components/conversation-inbox/InboxBootStatus.d.ts.map +1 -1
  22. package/dist/components/conversation-inbox/InboxBootStatus.js +10 -2
  23. package/dist/components/group/CreateGroupForm.d.ts.map +1 -1
  24. package/dist/components/group/CreateGroupForm.js +2 -1
  25. package/dist/components/group/CreateGroupFormCrmView.d.ts.map +1 -1
  26. package/dist/components/group/CreateGroupFormCrmView.js +1 -1
  27. package/dist/components/group/GroupMemberPickerCrm.d.ts.map +1 -1
  28. package/dist/components/group/GroupMemberPickerCrm.js +1 -1
  29. package/dist/components/media-collection/FileCollection.d.ts.map +1 -1
  30. package/dist/components/media-collection/FileCollection.js +2 -1
  31. package/dist/components/media-collection/ImageCollection.d.ts.map +1 -1
  32. package/dist/components/media-collection/ImageCollection.js +2 -1
  33. package/dist/components/media-collection/LinkCollection.d.ts.map +1 -1
  34. package/dist/components/media-collection/LinkCollection.js +14 -26
  35. package/dist/components/media-collection/VideoCollection.d.ts.map +1 -1
  36. package/dist/components/media-collection/VideoCollection.js +2 -1
  37. package/dist/components/media-resources/ResourceScrollContainer.d.ts.map +1 -1
  38. package/dist/components/media-resources/ResourceScrollContainer.js +34 -2
  39. package/dist/components/message/GroupMembersDrawer.d.ts.map +1 -1
  40. package/dist/components/message/GroupMembersDrawer.js +2 -3
  41. package/dist/components/message/MessageList.d.ts.map +1 -1
  42. package/dist/components/message/MessageList.js +15 -4
  43. package/dist/components/message/footer/ActionBar.d.ts.map +1 -1
  44. package/dist/components/message/footer/ActionBar.js +10 -44
  45. package/dist/components/message/footer/CannedResponsePlugin.d.ts.map +1 -1
  46. package/dist/components/message/footer/CannedResponsePlugin.js +3 -2
  47. package/dist/components/message/footer/EnterHandler.d.ts.map +1 -1
  48. package/dist/components/message/footer/EnterHandler.js +10 -47
  49. package/dist/components/message/footer/FilePreview.d.ts.map +1 -1
  50. package/dist/components/message/footer/FilePreview.js +2 -1
  51. package/dist/components/message/footer/LinkInputPreview.d.ts +1 -1
  52. package/dist/components/message/footer/LinkInputPreview.d.ts.map +1 -1
  53. package/dist/components/message/footer/LinkInputPreview.js +8 -1
  54. package/dist/components/message/footer/MediaUploadButtons.d.ts.map +1 -1
  55. package/dist/components/message/footer/MediaUploadButtons.js +4 -7
  56. package/dist/components/message/footer/index.d.ts.map +1 -1
  57. package/dist/components/message/footer/index.js +57 -16
  58. package/dist/components/message/footer/mention/useMentionOptions.d.ts.map +1 -1
  59. package/dist/components/message/footer/mention/useMentionOptions.js +2 -6
  60. package/dist/components/message/footer/resetEditorAfterSend.d.ts +7 -0
  61. package/dist/components/message/footer/resetEditorAfterSend.d.ts.map +1 -0
  62. package/dist/components/message/footer/resetEditorAfterSend.js +62 -0
  63. package/dist/components/message/groupMemberMenuCrm.d.ts +4 -4
  64. package/dist/components/message/groupMemberMenuCrm.d.ts.map +1 -1
  65. package/dist/components/message/groupMemberMenuCrm.js +73 -60
  66. package/dist/components/message/item/SystemLogMessage.d.ts.map +1 -1
  67. package/dist/components/message/item/SystemLogMessage.js +5 -2
  68. package/dist/components/search-conversation/SearchConversationAsGroups.js +1 -1
  69. package/dist/components/search-conversation/SearchConversationAsMessages.js +1 -1
  70. package/dist/components/search-conversation/SearchConversationMyInbox.js +1 -1
  71. package/dist/components/thread/GroupInfoBodyCrm.d.ts.map +1 -1
  72. package/dist/components/thread/GroupInfoBodyCrm.js +2 -2
  73. package/dist/components/thread/GroupThreadInfo.d.ts.map +1 -1
  74. package/dist/components/thread/GroupThreadInfo.js +2 -6
  75. package/dist/components/thread/ManualAssignPopover.d.ts.map +1 -1
  76. package/dist/components/thread/ManualAssignPopover.js +6 -8
  77. package/dist/components/thread/SessionDetailCard.d.ts.map +1 -1
  78. package/dist/components/thread/SessionDetailCard.js +3 -3
  79. package/dist/components/thread/SessionSection.d.ts.map +1 -1
  80. package/dist/components/thread/SessionSection.js +3 -9
  81. package/dist/components/thread/SessionTagPicker.d.ts +3 -1
  82. package/dist/components/thread/SessionTagPicker.d.ts.map +1 -1
  83. package/dist/components/thread/SessionTagPicker.js +2 -2
  84. package/dist/components/thread/sessionDateFormat.d.ts +2 -0
  85. package/dist/components/thread/sessionDateFormat.d.ts.map +1 -1
  86. package/dist/components/thread/sessionDateFormat.js +6 -0
  87. package/dist/constants/dateFormat.d.ts +2 -0
  88. package/dist/constants/dateFormat.d.ts.map +1 -0
  89. package/dist/constants/dateFormat.js +2 -0
  90. package/dist/hooks/common/useFetchUrlMetadata.d.ts +1 -0
  91. package/dist/hooks/common/useFetchUrlMetadata.d.ts.map +1 -1
  92. package/dist/hooks/conversation/useBotFlow.d.ts.map +1 -1
  93. package/dist/hooks/conversation/useBotFlow.js +64 -12
  94. package/dist/hooks/conversation/useCloseBotSession.d.ts +2 -0
  95. package/dist/hooks/conversation/useCloseBotSession.d.ts.map +1 -1
  96. package/dist/hooks/conversation/useCloseBotSession.js +17 -1
  97. package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
  98. package/dist/hooks/global/useGlobalEvent.js +148 -16
  99. package/dist/hooks/global/useLoginHealth.d.ts +3 -0
  100. package/dist/hooks/global/useLoginHealth.d.ts.map +1 -0
  101. package/dist/hooks/global/useLoginHealth.js +55 -0
  102. package/dist/hooks/group/useCreateGroup.d.ts.map +1 -1
  103. package/dist/hooks/group/useCreateGroup.js +75 -6
  104. package/dist/hooks/init/useChatBootPhase.d.ts +2 -0
  105. package/dist/hooks/init/useChatBootPhase.d.ts.map +1 -1
  106. package/dist/hooks/init/useChatBootPhase.js +11 -6
  107. package/dist/hooks/message/useMessage.d.ts.map +1 -1
  108. package/dist/hooks/message/useMessage.js +97 -28
  109. package/dist/hooks/message/usePinnedMessages.d.ts.map +1 -1
  110. package/dist/hooks/message/usePinnedMessages.js +13 -2
  111. package/dist/hooks/message/useRevokeMessage.d.ts.map +1 -1
  112. package/dist/hooks/message/useRevokeMessage.js +25 -0
  113. package/dist/hooks/message/useSendMessage.d.ts +15 -12
  114. package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
  115. package/dist/hooks/message/useSendMessage.js +199 -133
  116. package/dist/hooks/search/useSearchMessage.d.ts.map +1 -1
  117. package/dist/hooks/search/useSearchMessage.js +57 -3
  118. package/dist/hooks/session/useConversationSessionState.d.ts.map +1 -1
  119. package/dist/hooks/session/useConversationSessionState.js +4 -1
  120. package/dist/hooks/session/useSessionLatestPreview.d.ts.map +1 -1
  121. package/dist/hooks/session/useSessionLatestPreview.js +34 -4
  122. package/dist/hooks/user/useAuth.d.ts +1 -1
  123. package/dist/hooks/user/useAuth.d.ts.map +1 -1
  124. package/dist/hooks/user/useAuth.js +31 -15
  125. package/dist/index.d.ts +1 -0
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +1 -0
  128. package/dist/locales/vi/boot.json +5 -1
  129. package/dist/locales/vi/common.json +34 -15
  130. package/dist/locales/vi/conversation-inbox.json +2 -1
  131. package/dist/screens/conversation-detail/index.d.ts.map +1 -1
  132. package/dist/screens/conversation-detail/index.js +6 -0
  133. package/dist/screens/desk-message/DeskBootCard.d.ts.map +1 -1
  134. package/dist/screens/desk-message/DeskBootCard.js +6 -4
  135. package/dist/store/boot.d.ts +5 -0
  136. package/dist/store/boot.d.ts.map +1 -1
  137. package/dist/store/boot.js +11 -1
  138. package/dist/store/conversation.d.ts.map +1 -1
  139. package/dist/store/conversation.js +5 -1
  140. package/dist/store/type.d.ts +3 -1
  141. package/dist/store/type.d.ts.map +1 -1
  142. package/dist/styles/global.css +1 -1
  143. package/dist/types/chat.d.ts +1 -1
  144. package/dist/types/chat.d.ts.map +1 -1
  145. package/dist/utils/common.d.ts.map +1 -1
  146. package/dist/utils/common.js +4 -1
  147. package/dist/utils/fileValidation.d.ts +7 -0
  148. package/dist/utils/fileValidation.d.ts.map +1 -1
  149. package/dist/utils/fileValidation.js +37 -13
  150. package/dist/utils/latestMessagePreviewable.d.ts +2 -0
  151. package/dist/utils/latestMessagePreviewable.d.ts.map +1 -0
  152. package/dist/utils/latestMessagePreviewable.js +18 -0
  153. package/dist/utils/mentionMembers.d.ts +3 -0
  154. package/dist/utils/mentionMembers.d.ts.map +1 -0
  155. package/dist/utils/mentionMembers.js +29 -0
  156. package/dist/utils/messageLog.d.ts +2 -2
  157. package/dist/utils/messageLog.d.ts.map +1 -1
  158. package/dist/utils/messageLog.js +129 -40
  159. package/dist/utils/notifiableMessage.d.ts +7 -0
  160. package/dist/utils/notifiableMessage.d.ts.map +1 -0
  161. package/dist/utils/notifiableMessage.js +26 -0
  162. package/dist/utils/withSdkTimeout.d.ts +11 -0
  163. package/dist/utils/withSdkTimeout.d.ts.map +1 -0
  164. package/dist/utils/withSdkTimeout.js +30 -0
  165. package/package.json +1 -1
@@ -5,8 +5,18 @@ import { useEffect, useMemo } from "react";
5
5
  import { QUERY_KEYS } from "../../services/query";
6
6
  import emitter from "../../utils/events";
7
7
  import { DChatSDK } from "../../constants/sdk";
8
- const LATEST_MESSAGE_COUNT = 1;
9
- const isMissingLatestMessage = (session) => { var _a; return Boolean(session.conversationId) && !((_a = session.conversation) === null || _a === void 0 ? void 0 : _a.latestMsg); };
8
+ import { isPreviewableLatestMessage } from "../../utils/latestMessagePreviewable";
9
+ // Recent history scanned for a previewable message when the newest one is a log.
10
+ const LATEST_MESSAGE_COUNT = 20;
11
+ const SESSION_PREVIEW_STALE_MS = 60000;
12
+ const needsHistoryLookup = (session) => {
13
+ var _a;
14
+ return Boolean(session.conversationId) &&
15
+ !isPreviewableLatestMessage((_a = session.conversation) === null || _a === void 0 ? void 0 : _a.latestMsg);
16
+ };
17
+ // Newest message the row can actually show; id-less entries are the server's
18
+ // placeholder for a seq with no stored message. Core returns this window
19
+ // oldest-first, so the newest match is found from the end.
10
20
  const fetchSessionLatestMessage = async (conversationID) => {
11
21
  var _a;
12
22
  const { data } = await DChatSDK.getAdvancedHistoryMessageList({
@@ -15,14 +25,25 @@ const fetchSessionLatestMessage = async (conversationID) => {
15
25
  conversationID,
16
26
  viewType: ViewType.History,
17
27
  });
18
- return (_a = data === null || data === void 0 ? void 0 : data.messageList) === null || _a === void 0 ? void 0 : _a[0];
28
+ const list = (_a = data === null || data === void 0 ? void 0 : data.messageList) !== null && _a !== void 0 ? _a : [];
29
+ for (let index = list.length - 1; index >= 0; index -= 1) {
30
+ const message = list[index];
31
+ if (message.clientMsgID && isPreviewableLatestMessage(JSON.stringify(message))) {
32
+ return message;
33
+ }
34
+ }
35
+ return null;
19
36
  };
20
37
  export const useSessionLatestPreview = (sessions) => {
21
38
  const queryClient = useQueryClient();
22
39
  const results = useQueries({
23
40
  queries: sessions.map((session) => ({
24
41
  queryKey: [QUERY_KEYS.SESSION_LATEST_MESSAGE, session.conversationId],
25
- enabled: isMissingLatestMessage(session),
42
+ enabled: needsHistoryLookup(session),
43
+ // PUSH_NEW_MSG / GROUP_MEMBERS_CHANGED invalidate explicitly, so rows need
44
+ // not re-pull history on every focus or remount.
45
+ staleTime: SESSION_PREVIEW_STALE_MS,
46
+ refetchOnWindowFocus: false,
26
47
  queryFn: () => fetchSessionLatestMessage(session.conversationId),
27
48
  })),
28
49
  });
@@ -62,6 +83,15 @@ export const useSessionLatestPreview = (sessions) => {
62
83
  var _a, _b, _c;
63
84
  const latestMessage = (_a = results[index]) === null || _a === void 0 ? void 0 : _a.data;
64
85
  const latestMsgSendTime = ((_b = session.conversation) === null || _b === void 0 ? void 0 : _b.latestMsgSendTime) || 0;
86
+ // The conversation's own latest message is a log or marker: the newest
87
+ // real message found in history stands in for it, with its own time.
88
+ if (needsHistoryLookup(session) && (latestMessage === null || latestMessage === void 0 ? void 0 : latestMessage.clientMsgID)) {
89
+ map.set(session.conversationId, {
90
+ latestMsg: JSON.stringify(latestMessage),
91
+ latestMsgSendTime: latestMessage.sendTime,
92
+ });
93
+ return;
94
+ }
65
95
  // A seq with no stored message comes back as an id-less placeholder
66
96
  // carrying an older message's sendTime — never a preview candidate.
67
97
  if ((latestMessage === null || latestMessage === void 0 ? void 0 : latestMessage.clientMsgID) &&
@@ -1,4 +1,4 @@
1
1
  export declare const useDChatAuth: () => {
2
- logout: () => Promise<import("@droppii-org/wasm-client-sdk").WsResponse<unknown>>;
2
+ logout: () => Promise<import("@droppii-org/wasm-client-sdk").WsResponse<unknown> | undefined>;
3
3
  };
4
4
  //# sourceMappingURL=useAuth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../src/hooks/user/useAuth.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY;;CA8BxB,CAAC"}
1
+ {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../src/hooks/user/useAuth.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,YAAY;;CAmCxB,CAAC"}
@@ -5,27 +5,43 @@ import useBootStore from "../../store/boot";
5
5
  import useConversationStore from "../../store/conversation";
6
6
  import useMessageDraftStore from "../../store/messageDraft";
7
7
  import useTypingStore from "../../store/typing";
8
+ // Core answers 10004/10005 (resource not loaded) once a kick logged it out.
9
+ const isNotLoggedInError = (error) => {
10
+ var _a;
11
+ const code = (_a = error === null || error === void 0 ? void 0 : error.errCode) !== null && _a !== void 0 ? _a : error === null || error === void 0 ? void 0 : error.code;
12
+ return code === 10004 || code === 10005;
13
+ };
8
14
  export const useDChatAuth = () => {
9
15
  const initAuthStore = useAuthStore((state) => state.initAuthStore);
10
16
  const resetConversationStore = useConversationStore((state) => state.resetConversationStore);
11
17
  const clearAllDrafts = useMessageDraftStore((state) => state.clearAllDrafts);
12
18
  const logout = async () => {
13
- const res = await DChatSDK.logout();
14
19
  const applicationType = useAuthStore.getState().applicationType;
15
- resetConversationStore();
16
- useBootStore.getState().reset();
17
- clearAllDrafts();
18
- useTypingStore.getState().clearTypers();
19
- initAuthStore({
20
- chatToken: "",
21
- accessToken: "",
22
- apiAddress: "",
23
- wsAddress: "",
24
- platformID: Platform.Web,
25
- userID: "",
26
- applicationType,
27
- });
28
- return res;
20
+ try {
21
+ return await DChatSDK.logout();
22
+ }
23
+ catch (error) {
24
+ // After a kick core already logged itself out, so "not logged in" is the goal state.
25
+ if (!isNotLoggedInError(error))
26
+ throw error;
27
+ return undefined;
28
+ }
29
+ finally {
30
+ // The stores must reset even when core refuses, or the next login stays on the stale boot state.
31
+ resetConversationStore();
32
+ useBootStore.getState().reset();
33
+ clearAllDrafts();
34
+ useTypingStore.getState().clearTypers();
35
+ initAuthStore({
36
+ chatToken: "",
37
+ accessToken: "",
38
+ apiAddress: "",
39
+ wsAddress: "",
40
+ platformID: Platform.Web,
41
+ userID: "",
42
+ applicationType,
43
+ });
44
+ }
29
45
  };
30
46
  return { logout };
31
47
  };
package/dist/index.d.ts CHANGED
@@ -53,6 +53,7 @@ export { ChatCategory, ChatType, PeerType, } from "./types/conversation";
53
53
  export type { ConversationListItem, CreateConversationData, ConversationMember, BotConversationDetail, BotMainMenuItem, } from "./types/conversation";
54
54
  export { isBotPeer, resolveConversationBotId } from "./utils/conversation";
55
55
  export { parseLatestMessage } from "./utils/common";
56
+ export { isNotifiableLatestMessage } from "./utils/notifiableMessage";
56
57
  export { isInCsSession } from "./utils/botFlow";
57
58
  export { fetchBotConversationDetail, } from "./hooks/conversation/useBotConversationDetail";
58
59
  export { fetchConversationByBotId, } from "./hooks/conversation/useResolveConversation";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -52,6 +52,7 @@ export { ChatCategory, ChatType, PeerType, } from "./types/conversation";
52
52
  //Bot flow / CS session
53
53
  export { isBotPeer, resolveConversationBotId } from "./utils/conversation";
54
54
  export { parseLatestMessage } from "./utils/common";
55
+ export { isNotifiableLatestMessage } from "./utils/notifiableMessage";
55
56
  export { isInCsSession } from "./utils/botFlow";
56
57
  export { fetchBotConversationDetail, } from "./hooks/conversation/useBotConversationDetail";
57
58
  export { fetchConversationByBotId, } from "./hooks/conversation/useResolveConversation";
@@ -13,6 +13,8 @@
13
13
  },
14
14
  "slow": "Mạng đang chậm hơn bình thường. Livechat vẫn đang tải, bạn không cần làm gì thêm.",
15
15
  "error_hint": "Kiểm tra kết nối mạng rồi bấm Thử lại. Nếu vẫn lỗi, báo bộ phận kỹ thuật: dừng ở bước {{step}}.",
16
+ "kicked_title": "Tài khoản đã đăng nhập ở nơi khác",
17
+ "kicked_hint": "Tài khoản của bạn vừa được đăng nhập trên thiết bị hoặc tab khác nên phiên này đã bị ngắt. Bấm Thử lại để đăng nhập lại ở đây.",
16
18
  "background_sync": "Đang đồng bộ các cuộc trò chuyện còn lại"
17
19
  },
18
20
  "inbox": {
@@ -22,7 +24,9 @@
22
24
  "sync": "Vui lòng chờ trong giây lát…",
23
25
  "slow": "Lần đầu mở có thể mất một chút thời gian. Những lần sau sẽ nhanh hơn.",
24
26
  "error_title": "Chưa tải được tin nhắn",
25
- "error_hint": "Kiểm tra kết nối mạng rồi thử lại."
27
+ "error_hint": "Kiểm tra kết nối mạng rồi thử lại.",
28
+ "kicked_title": "Tài khoản đã đăng nhập ở nơi khác",
29
+ "kicked_hint": "Tài khoản của bạn vừa được đăng nhập trên thiết bị hoặc tab khác. Bấm Thử lại để đăng nhập lại ở đây."
26
30
  },
27
31
  "retry": "Thử lại",
28
32
  "sync_progress_label": "Tiến độ đồng bộ tin nhắn"
@@ -21,6 +21,7 @@
21
21
  "group_visibility_private": "Riêng tư",
22
22
  "group_visibility_public": "Công khai",
23
23
  "no_conversation": "Không tìm thấy cuộc trò chuyện",
24
+ "search_no_result": "Không tìm thấy kết quả phù hợp.",
24
25
  "download": "Tải xuống",
25
26
  "active_sessions": "Đang mở",
26
27
  "closed_sessions": "Đã hoàn thành",
@@ -67,6 +68,7 @@
67
68
  "update_note_failed": "Cập nhật ghi chú thất bại",
68
69
  "copied_to_clipboard": "Đã sao chép",
69
70
  "message_send_failed": "Gửi tin nhắn thất bại, bạn vui lòng <bold>nhấn để gửi lại</bold>",
71
+ "message_send_pending": "Tin nhắn vẫn đang được gửi, vui lòng chờ trước khi gửi lại",
70
72
  "message_send_failed_no_retry": "Gửi tin nhắn thất bại",
71
73
  "context_menu_reply": "Trả lời",
72
74
  "context_menu_pin": "Ghim",
@@ -80,7 +82,7 @@
80
82
  "unpin_message_success": "Đã bỏ ghim tin nhắn",
81
83
  "unpin_message_failed": "Bỏ ghim tin nhắn thất bại",
82
84
  "pinned_from_text": "Tin nhắn từ {{name}}",
83
- "pinned_from_link": "Từ {{name}}",
85
+ "pinned_from_link": "Tin nhắn từ {{name}}",
84
86
  "pinned_from_image": "Hình ảnh từ {{name}}",
85
87
  "pinned_from_video": "Video từ {{name}}",
86
88
  "pinned_from_file": "Tài liệu từ {{name}}",
@@ -117,25 +119,32 @@
117
119
  "invalid_image_format": "{{fileName}} không đúng định dạng JPG, JPEG, PNG",
118
120
  "invalid_file_format": "{{fileName}} không đúng định dạng JPG, JPEG, PNG hoặc VIDEO",
119
121
  "file_size_exceeded": "{{fileName}} có kích thước tập tin vượt quá {{maxSize}}MB",
120
- "avatar_invalid_format": "Vui lòng dùng tệp PNG, JPG, JPEG, WEBP",
122
+ "obefe_file_size_exceeded": "'{{fileName}}' có kích thước tập tin vượt quá {{maxSize}}MB",
123
+ "avatar_invalid_format": "Vui lòng dùng file PNG, JPG, JPEG, WEBP",
121
124
  "avatar_size_exceeded": "Vui lòng dùng ảnh dưới {{maxSize}}MB",
125
+ "biz_image_size_exceeded": "Hình ảnh tải lên không hợp lệ. Kích thước hình ảnh không được vượt quá {{maxSize}}mb",
126
+ "biz_video_size_exceeded": "Video tải lên không hợp lệ. Kích thước video không được vượt quá {{maxSize}}MB",
127
+ "biz_document_size_exceeded": "Tệp tải lên không hợp lệ. Kích thước tệp không được vượt quá {{maxSize}}MB",
128
+ "biz_image_invalid_format": "Hình ảnh tải lên không hợp lệ. Chỉ hỗ trợ định dạng JPG, JPEG, PNG",
129
+ "biz_media_invalid_format": "Hình ảnh hoặc video tải lên không hợp lệ. Chỉ hỗ trợ định dạng JPG, JPEG, PNG hoặc VIDEO",
130
+ "biz_document_invalid_format": "Tệp tải lên không hợp lệ. Chỉ hỗ trợ định dạng file word, pdf",
122
131
  "file_processing_error": "Đã xảy ra lỗi khi xử lý tệp",
123
132
  "invalid_document_format": "{{fileName}} không đúng định dạng (chỉ hỗ trợ PDF, DOC, DOCX)",
124
133
  "view_message": "Xem tin nhắn",
125
134
  "search_message_title": "Tìm kiếm tin nhắn",
126
135
  "msg_type_image": "[Hình ảnh]",
127
136
  "msg_type_voice": "[Tin nhắn thoại]",
128
- "msg_type_file": "[Tập tin]",
137
+ "msg_type_file": "[File]",
129
138
  "msg_type_video": "[Video]",
130
- "msg_type_sticker": "[Nhãn dán]",
139
+ "msg_type_sticker": "[Sticker]",
131
140
  "msg_type_unsupported": "Tin nhắn không khả dụng",
132
141
  "msg_type_order": "[Đơn hàng] {{orderCode}}",
133
142
  "group_notification_created": "{{name}} đã tạo nhóm",
134
143
  "group_notification_info_updated": "{{name}} đã cập nhật thông tin nhóm",
135
- "group_notification_name_updated": "{{name}} đã đổi tên nhóm thành \"{{groupName}}\"",
144
+ "group_notification_name_updated": "{{name}} đã đổi tên nhóm thành {{groupName}}",
136
145
  "group_notification_announcement_updated": "{{name}} đã cập nhật thông báo nhóm",
137
146
  "group_notification_member_quit": "{{name}} đã rời nhóm",
138
- "group_notification_owner_transferred": "{{name}} đã chuyển quyền trưởng nhóm cho {{newOwner}}",
147
+ "group_notification_owner_transferred": "{{name}} đã chuyển quyền chủ nhóm cho {{newOwner}}",
139
148
  "group_notification_member_kicked": "{{name}} đã xóa {{members}} khỏi nhóm",
140
149
  "group_notification_member_invited": "{{name}} đã thêm {{members}} vào nhóm",
141
150
  "group_notification_member_enter": "{{name}} đã tham gia nhóm",
@@ -145,18 +154,28 @@
145
154
  "group_notification_member_cancel_muted": "{{name}} đã bật lại quyền gửi tin nhắn của {{target}}",
146
155
  "group_notification_muted": "{{name}} đã tắt quyền gửi tin nhắn của cả nhóm",
147
156
  "group_notification_cancel_muted": "{{name}} đã bật lại quyền gửi tin nhắn của cả nhóm",
148
- "group_notification_member_set_admin": "{{name}} đã chỉ định {{target}} làm quản trị viên",
157
+ "group_notification_member_set_admin": "{{name}} đã đặt {{target}} làm quản trị viên",
149
158
  "group_notification_message_pinned": "{{name}} đã ghim một tin nhắn",
150
159
  "group_notification_message_unpinned": "{{name}} đã bỏ ghim một tin nhắn",
151
160
  "invalid_message": "Tin nhắn không hợp lệ",
152
161
  "consultant_chat_button": "Nhắn với người hướng dẫn",
153
162
  "session_started": "Phiên chat đã bắt đầu",
154
163
  "session_ended": "Phiên chat đã kết thúc",
164
+ "system_log_viewer": "bạn",
165
+ "system_log_viewer_start": "Bạn",
166
+ "system_log_self": "chính mình",
167
+ "system_log_actor_reassign": "{{actor}} đã bỏ phân công {{old}} và phân công cho {{new}}",
168
+ "system_log_actor_first_assign": "{{actor}} đã phân công cho {{new}}",
169
+ "system_log_auto_assign": "Hệ thống đã phân công cho {{new}}",
170
+ "system_log_supporter_join": "{{new}} đã tham gia nhóm",
171
+ "system_log_auto_reassign": "Phân công tự động: hệ thống đã bỏ phân công {{old}} và phân công cho {{new}}",
172
+ "system_log_remove_member": "Hệ thống đã xóa {{old}} khỏi nhóm",
173
+ "system_log_supporter_leave": "{{actor}} đã rời khỏi nhóm",
155
174
  "new_message": "Bạn có tin nhắn mới",
156
175
  "close_session_success": "Đóng phiên chat thành công",
157
176
  "close_session_failed": "Đóng phiên chat thất bại",
158
177
  "session_active": "Đang hoạt động",
159
- "session_add_tag_placeholder": "Thêm thẻ...",
178
+ "session_add_tag_placeholder": "Thêm thẻ…",
160
179
  "session_issue_detail_placeholder": "Thêm vấn đề cụ thể…",
161
180
  "session_note_placeholder": "Thêm ghi chú…",
162
181
  "session_close_button": "Kết thúc phiên",
@@ -176,12 +195,12 @@
176
195
  "mute_member_success": "Đã tắt quyền gửi tin nhắn",
177
196
  "unmute_member_success": "Đã bật lại quyền gửi tin nhắn",
178
197
  "send_message": "Gửi tin nhắn",
179
- "transfer_owner": "Chuyển quyền sở hữu nhóm",
180
- "transfer_owner_success": "Đã chuyển quyền sở hữu nhóm",
181
- "transfer_owner_confirm_title": "Chuyển quyền sở hữu nhóm",
182
- "transfer_owner_confirm_message": "Bạn có chắc muốn chuyển quyền sở hữu nhóm cho {{name}}?",
183
- "assign_as_admin": "Chỉ định làm quản trị viên",
184
- "assign_as_admin_success": "Đã chỉ định làm quản trị viên",
198
+ "transfer_owner": "Chuyển quyền chủ nhóm",
199
+ "transfer_owner_success": "Đã chuyển quyền chủ nhóm",
200
+ "transfer_owner_confirm_title": "Chuyển quyền chủ nhóm",
201
+ "transfer_owner_confirm_message": "Bạn có chắc muốn chuyển quyền chủ nhóm cho {{name}}?",
202
+ "assign_as_admin": "Cấp quyền quản trị viên",
203
+ "assign_as_admin_success": "Đã cấp quyền quản trị viên",
185
204
  "assign_admin_confirm_title": "Cấp quyền quản trị viên",
186
205
  "assign_admin_confirm_message": "Bạn chắc chắn muốn cấp quyền quản trị viên cho \"{{name}}\"?",
187
206
  "agree": "Đồng ý",
@@ -460,7 +479,7 @@
460
479
  "group_owner_chip": "Chủ nhóm",
461
480
  "send_disabled_chip": "Đã tắt gửi tin",
462
481
  "member_actions_for": "Thao tác với {{name}}",
463
- "transfer_owner_hint": "Bạn sẽ trở thành thành viên thường",
482
+ "transfer_owner_hint": "Bạn sẽ trở thành quản trị viên",
464
483
  "need_remove_member_permission": "Cần quyền xoá thành viên",
465
484
  "cannot_remove_group_owner": "Không thể xoá chủ nhóm",
466
485
  "leave_group_assignee_reason": "Bạn đang được phân công phiên chat đang xử lý",
@@ -43,7 +43,7 @@
43
43
  "members_label": "Thành viên",
44
44
  "members_owner_note": "· bạn là chủ nhóm",
45
45
  "search_label": "Tìm người",
46
- "search_by_name": "Tìm theo tên hoặc tên đăng nhập",
46
+ "search_by_name": "Tìm theo tên",
47
47
  "selected_title": "Đã chọn · {{count}}",
48
48
  "remove_selected": "Bỏ chọn {{name}}",
49
49
  "selected_footer": "{{count}} thành viên được chọn",
@@ -152,6 +152,7 @@
152
152
  "inactive_notice": "Người dùng này không còn khả dụng",
153
153
  "menu": {
154
154
  "title": "Gợi ý",
155
+ "description": "Bạn cần hỗ trợ gì?",
155
156
  "trigger": "Gợi ý khác",
156
157
  "open_menu": "Xem gợi ý khác"
157
158
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation-detail/index.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAarF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,6CAA6C,CAAC;AASrD,MAAM,WAAW,4BACf,SAAQ,4BAA4B,EAClC,4BAA4B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1E,kGAAkG;IAClG,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,oHAAoH;IACpH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,6GAA6G;IAC7G,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,QAAA,MAAM,uBAAuB,GAAI,oLAgB9B,4BAA4B,mDAuT9B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation-detail/index.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAarF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,6CAA6C,CAAC;AASrD,MAAM,WAAW,4BACf,SAAQ,4BAA4B,EAClC,4BAA4B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1E,kGAAkG;IAClG,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,oHAAoH;IACpH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,6GAA6G;IAC7G,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,QAAA,MAAM,uBAAuB,GAAI,oLAgB9B,4BAA4B,mDAiU9B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -20,6 +20,7 @@ import clsx from "clsx";
20
20
  import { Empty, Spin } from "antd";
21
21
  import { Icon } from "../../components/icon";
22
22
  import useAuthStore from "../../store/auth";
23
+ import useBootStore from "../../store/boot";
23
24
  import useConversationStore from "../../store/conversation";
24
25
  import ThreadProfilePanel from "../../components/conversation-detail/ThreadProfilePanel";
25
26
  import ThreadSearchPanel from "../../components/conversation-detail/thread-search/ThreadSearchPanel";
@@ -55,6 +56,7 @@ const DChatConversationDetail = (_a) => {
55
56
  const clearSelectedConversation = useConversationStore((state) => state.clearSelectedConversation);
56
57
  const setPendingResolveTarget = useConversationStore((state) => state.setPendingResolveTarget);
57
58
  const canLoadChatData = useCanLoadChatData();
59
+ const isKicked = useBootStore((state) => state.isKicked);
58
60
  const { isResolving, error } = useResolveConversation({
59
61
  conversationId,
60
62
  userId,
@@ -148,6 +150,10 @@ const DChatConversationDetail = (_a) => {
148
150
  }
149
151
  }
150
152
  };
153
+ // Signed in elsewhere: show the retry state even when the thread was already open.
154
+ if (isKicked) {
155
+ return (_jsx("div", { className: "flex h-full w-full items-center justify-center bg-white", children: _jsx(ConversationDetailBootStatus, {}) }));
156
+ }
151
157
  if (isResolving) {
152
158
  return (_jsx("div", { className: "flex h-full w-full items-center justify-center bg-white", children: canLoadChatData ? _jsx(Spin, {}) : _jsx(ConversationDetailBootStatus, {}) }));
153
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DeskBootCard.d.ts","sourceRoot":"","sources":["../../../src/screens/desk-message/DeskBootCard.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAkEnE,yGAAyG;AACzG,QAAA,MAAM,YAAY,GAAI,UAAU;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,mDAgFtD,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"DeskBootCard.d.ts","sourceRoot":"","sources":["../../../src/screens/desk-message/DeskBootCard.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAkEnE,yGAAyG;AACzG,QAAA,MAAM,YAAY,GAAI,UAAU;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,mDAkFtD,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -58,10 +58,12 @@ const DeskBootCard = ({ boot }) => {
58
58
  }, [isError]);
59
59
  if (boot.phase === "ready")
60
60
  return null;
61
- const title = t(`desk.title.${isError ? "error" : boot.phase}`);
62
- const errorHint = t("desk.error_hint", {
63
- step: t(`desk.steps.${(_a = boot.failedStep) !== null && _a !== void 0 ? _a : "engine"}`),
64
- });
61
+ const title = boot.isKicked
62
+ ? t("desk.kicked_title")
63
+ : t(`desk.title.${isError ? "error" : boot.phase}`);
64
+ const errorHint = boot.isKicked
65
+ ? t("desk.kicked_hint")
66
+ : t("desk.error_hint", { step: t(`desk.steps.${(_a = boot.failedStep) !== null && _a !== void 0 ? _a : "engine"}`) });
65
67
  const stepStates = getStepStates(boot);
66
68
  const showPercent = boot.phase === "sync" && boot.syncProgress > SYNC_PERCENT_MIN;
67
69
  return (_jsxs("div", { "data-cp-name": "DeskBootCard", "data-phase": boot.phase, className: clsx("flex w-full max-w-[340px] flex-col gap-4 rounded-2xl border border-gray-25 bg-white p-6 shadow-sm transition-opacity duration-200", !boot.isStatusVisible && "opacity-0"), children: [_jsx("p", { role: "status", "aria-live": "polite", className: "sr-only", children: boot.isStatusVisible ? (isError ? `${title}. ${errorHint}` : title) : "" }), _jsx(BootMark, { isError: isError }), _jsx("p", { "aria-hidden": "true", className: "text-lg font-semibold text-gray-900", children: title }), _jsx("ol", { className: "flex flex-col gap-2.5", children: STEPS.map((step, index) => (_jsxs("li", { "aria-current": ["active", "error"].includes(stepStates[index]) ? "step" : undefined, className: clsx("flex items-center gap-2.5 text-sm", STEP_TEXT_CLASS[stepStates[index]]), children: [_jsx(StepMarker, { state: stepStates[index] }), _jsx("span", { className: "flex-1", children: t(`desk.steps.${step}`) }), step === "sync" && showPercent && (_jsxs("span", { className: "text-[13px] font-semibold tabular-nums text-primary-400", children: [boot.syncProgress, "%"] }))] }, step))) }), !isError && (_jsx(BootProgressBar, { mode: boot.phase === "sync" && boot.syncProgress > 0 ? "progress" : "indeterminate", value: boot.syncProgress, label: t("sync_progress_label") })), boot.isSlow && !isError && (_jsx("p", { className: "rounded-lg bg-warning-25 px-3 py-2 text-[13px] leading-normal text-warning-900", children: t("desk.slow") })), isError && (_jsxs("div", { ref: errorRef, className: "flex flex-col gap-3.5", children: [_jsx("p", { "aria-hidden": "true", className: "text-[13px] leading-normal text-gray-600", children: errorHint }), _jsx(Button, { type: "primary", className: "self-start", onClick: () => window.location.reload(), children: t("retry") })] }))] }));
@@ -15,6 +15,10 @@ interface BootStore {
15
15
  /** A conversation list load finished after the first sync, so an empty list really is empty. */
16
16
  isListSettled: boolean;
17
17
  failedStep: ChatBootFailedStep | null;
18
+ /** The account signed in on another device; only a logout, reload or a different user clears it. */
19
+ isKicked: boolean;
20
+ /** Who was kicked; null (unknown) counts as every user. Token rotation never lifts a kick. */
21
+ kickedUserID: string | null;
18
22
  /** 0-100 from OnSyncServerProgress (only sent while a fresh device syncs). */
19
23
  syncProgress: number;
20
24
  /** Kind of the first sync after login while it runs; cleared once it finishes or fails. */
@@ -26,6 +30,7 @@ interface BootStore {
26
30
  markConnecting: () => void;
27
31
  markConnected: () => void;
28
32
  markFailed: (step: ChatBootFailedStep) => void;
33
+ markKicked: (userID?: string) => void;
29
34
  markSyncStarted: (isReinstall: boolean) => void;
30
35
  setSyncProgress: (progress: number) => void;
31
36
  markFirstSyncDone: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/store/boot.ts"],"names":[],"mappings":"AAEA,sDAAsD;AACtD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtD,wGAAwG;AACxG,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,aAAa,CAAC;AAE3D,yGAAyG;AACzG,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,UAAU,SAAS;IACjB,gFAAgF;IAChF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,yGAAyG;IACzG,eAAe,EAAE,OAAO,CAAC;IACzB,6FAA6F;IAC7F,aAAa,EAAE,OAAO,CAAC;IACvB,gGAAgG;IAChG,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACtC,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,wEAAwE;IACxE,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC;AAcD,KAAK,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,eAAe,GAAG,cAAc,CAAC,CAAC;AAE3F,+GAA+G;AAC/G,eAAO,MAAM,2BAA2B,GAAI,OAAO,aAAa,YAC4B,CAAC;AAE7F,8GAA8G;AAC9G,eAAO,MAAM,sBAAsB,GAAI,OAAO,aAAa,YAGvB,CAAC;AAErC,yGAAyG;AACzG,QAAA,MAAM,YAAY,wEA2Bf,CAAC;AAEJ,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/store/boot.ts"],"names":[],"mappings":"AAEA,sDAAsD;AACtD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtD,wGAAwG;AACxG,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,aAAa,CAAC;AAE3D,yGAAyG;AACzG,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,UAAU,SAAS;IACjB,gFAAgF;IAChF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,yGAAyG;IACzG,eAAe,EAAE,OAAO,CAAC;IACzB,6FAA6F;IAC7F,aAAa,EAAE,OAAO,CAAC;IACvB,gGAAgG;IAChG,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACtC,oGAAoG;IACpG,QAAQ,EAAE,OAAO,CAAC;IAClB,8FAA8F;IAC9F,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,wEAAwE;IACxE,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC;AAgBD,KAAK,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,eAAe,GAAG,cAAc,CAAC,CAAC;AAE3F,+GAA+G;AAC/G,eAAO,MAAM,2BAA2B,GAAI,OAAO,aAAa,YAC4B,CAAC;AAE7F,8GAA8G;AAC9G,eAAO,MAAM,sBAAsB,GAAI,OAAO,aAAa,YAGvB,CAAC;AAErC,yGAAyG;AACzG,QAAA,MAAM,YAAY,wEAkCf,CAAC;AAEJ,eAAe,YAAY,CAAC"}
@@ -8,6 +8,8 @@ const initialState = {
8
8
  isSyncStalled: false,
9
9
  isListSettled: false,
10
10
  failedStep: null,
11
+ isKicked: false,
12
+ kickedUserID: null,
11
13
  syncProgress: 0,
12
14
  firstSyncKind: null,
13
15
  isFirstScreenReady: false,
@@ -23,7 +25,15 @@ const useBootStore = create((set, get) => (Object.assign(Object.assign({}, initi
23
25
  if (get().userID === userID)
24
26
  return;
25
27
  set(Object.assign(Object.assign({}, initialState), { userID }));
26
- }, reset: () => set(initialState), markConnecting: () => set({ failedStep: null }), markConnected: () => set({ hasConnected: true, failedStep: null }), markFailed: (step) => set({ failedStep: step }), markSyncStarted: (isReinstall) => {
28
+ }, reset: () => set(initialState),
29
+ // A kick is final: a stray connect event must not hide the signed-in-elsewhere state.
30
+ markConnecting: () => {
31
+ if (!get().isKicked)
32
+ set({ failedStep: null });
33
+ }, markConnected: () => {
34
+ if (!get().isKicked)
35
+ set({ hasConnected: true, failedStep: null });
36
+ }, markFailed: (step) => set({ failedStep: step }), markKicked: (userID) => set({ failedStep: "engine", isKicked: true, kickedUserID: userID !== null && userID !== void 0 ? userID : null }), markSyncStarted: (isReinstall) => {
27
37
  // Syncs after a reconnect don't change how the first one runs.
28
38
  if (get().isFirstSyncDone || get().firstSyncKind)
29
39
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/store/conversation.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAiB3C,eAAO,MAAM,kBAAkB,GAAI,SAAS,OAAO,SAElD,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,oFAOpB,CAAC;AAUX,eAAO,MAAM,cAAc,GAAI,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,SAEhE,CAAC;AAEF,QAAA,MAAM,oBAAoB,gFA0hBvB,CAAC;AAEJ,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/store/conversation.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAiB3C,eAAO,MAAM,kBAAkB,GAAI,SAAS,OAAO,SAElD,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,oFAOpB,CAAC;AAUX,eAAO,MAAM,cAAc,GAAI,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,SAEhE,CAAC;AAEF,QAAA,MAAM,oBAAoB,gFAoiBvB,CAAC;AAEJ,eAAe,oBAAoB,CAAC"}
@@ -58,6 +58,7 @@ const useConversationStore = create((set, get) => ({
58
58
  pinnedMessageList: [],
59
59
  pinnedTotalCount: 0,
60
60
  pinnedRemainingCount: 0,
61
+ pinnedBackendTotalCount: 0,
61
62
  pinnedListIsEnd: false,
62
63
  })));
63
64
  },
@@ -361,6 +362,7 @@ const useConversationStore = create((set, get) => ({
361
362
  pinnedMessageList: [],
362
363
  pinnedTotalCount: 0,
363
364
  pinnedRemainingCount: 0,
365
+ pinnedBackendTotalCount: 0,
364
366
  pinnedListIsEnd: false,
365
367
  isViewOnlyMember: false,
366
368
  nonMemberGroupID: null,
@@ -401,12 +403,14 @@ const useConversationStore = create((set, get) => ({
401
403
  pinnedMessageList: [],
402
404
  pinnedTotalCount: 0,
403
405
  pinnedRemainingCount: 0,
406
+ pinnedBackendTotalCount: 0,
404
407
  pinnedListIsEnd: false,
405
- setPinnedMessageData: (messageList, totalCount, remainingCount, isEnd) => {
408
+ setPinnedMessageData: (messageList, totalCount, remainingCount, isEnd, backendTotalCount) => {
406
409
  set({
407
410
  pinnedMessageList: messageList,
408
411
  pinnedTotalCount: totalCount,
409
412
  pinnedRemainingCount: remainingCount,
413
+ pinnedBackendTotalCount: backendTotalCount !== null && backendTotalCount !== void 0 ? backendTotalCount : totalCount,
410
414
  pinnedListIsEnd: isEnd,
411
415
  });
412
416
  },
@@ -96,8 +96,10 @@ export interface ConversationStore {
96
96
  pinnedMessageList: MessageItem[];
97
97
  pinnedTotalCount: number;
98
98
  pinnedRemainingCount: number;
99
+ /** Backend pin total including pins hidden from this viewer; drives the limit check. */
100
+ pinnedBackendTotalCount: number;
99
101
  pinnedListIsEnd: boolean;
100
- setPinnedMessageData: (messageList: MessageItem[], totalCount: number, remainingCount: number, isEnd: boolean) => void;
102
+ setPinnedMessageData: (messageList: MessageItem[], totalCount: number, remainingCount: number, isEnd: boolean, backendTotalCount?: number) => void;
101
103
  updatePinnedMessage: (message: Partial<MessageItem> & {
102
104
  clientMsgID: string;
103
105
  }) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/store/type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/store/type.ts"],"names":[],"mappings":"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"}