@droppii-org/chat-sdk 0.7.7 → 0.7.8

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 (100) hide show
  1. package/dist/components/conversation/ThreadCard.d.ts +2 -1
  2. package/dist/components/conversation/ThreadCard.d.ts.map +1 -1
  3. package/dist/components/conversation/ThreadCard.js +2 -2
  4. package/dist/components/conversation-detail/ConversationDetailHeader.d.ts +5 -1
  5. package/dist/components/conversation-detail/ConversationDetailHeader.d.ts.map +1 -1
  6. package/dist/components/conversation-detail/ConversationDetailHeader.js +3 -3
  7. package/dist/components/conversation-detail/ConversationMoreOptionPanel.d.ts.map +1 -1
  8. package/dist/components/conversation-detail/ConversationMoreOptionPanel.js +3 -1
  9. package/dist/components/conversation-detail/ThreadProfilePanel.d.ts +5 -1
  10. package/dist/components/conversation-detail/ThreadProfilePanel.d.ts.map +1 -1
  11. package/dist/components/conversation-detail/ThreadProfilePanel.js +13 -3
  12. package/dist/components/conversation-detail/profile/PinThreadLimitModal.d.ts +7 -0
  13. package/dist/components/conversation-detail/profile/PinThreadLimitModal.d.ts.map +1 -0
  14. package/dist/components/conversation-detail/profile/PinThreadLimitModal.js +14 -0
  15. package/dist/components/conversation-detail/profile/ThreadProfileActionRows.d.ts +15 -0
  16. package/dist/components/conversation-detail/profile/ThreadProfileActionRows.d.ts.map +1 -0
  17. package/dist/components/conversation-detail/profile/ThreadProfileActionRows.js +20 -0
  18. package/dist/components/conversation-detail/profile/ThreadProfileQuickActions.d.ts +11 -0
  19. package/dist/components/conversation-detail/profile/ThreadProfileQuickActions.d.ts.map +1 -0
  20. package/dist/components/conversation-detail/profile/ThreadProfileQuickActions.js +36 -0
  21. package/dist/components/conversation-detail/thread-search/ThreadSearchContent.d.ts +13 -0
  22. package/dist/components/conversation-detail/thread-search/ThreadSearchContent.d.ts.map +1 -0
  23. package/dist/components/conversation-detail/thread-search/ThreadSearchContent.js +70 -0
  24. package/dist/components/conversation-detail/thread-search/ThreadSearchPanel.d.ts +11 -0
  25. package/dist/components/conversation-detail/thread-search/ThreadSearchPanel.d.ts.map +1 -0
  26. package/dist/components/conversation-detail/thread-search/ThreadSearchPanel.js +12 -0
  27. package/dist/components/conversation-detail/thread-search/ThreadSearchResultItem.d.ts +11 -0
  28. package/dist/components/conversation-detail/thread-search/ThreadSearchResultItem.d.ts.map +1 -0
  29. package/dist/components/conversation-detail/thread-search/ThreadSearchResultItem.js +24 -0
  30. package/dist/components/conversation-detail/thread-search/utils.d.ts +8 -0
  31. package/dist/components/conversation-detail/thread-search/utils.d.ts.map +1 -0
  32. package/dist/components/conversation-detail/thread-search/utils.js +17 -0
  33. package/dist/components/conversation-inbox/ConversationInboxItem.d.ts +3 -1
  34. package/dist/components/conversation-inbox/ConversationInboxItem.d.ts.map +1 -1
  35. package/dist/components/conversation-inbox/ConversationInboxItem.js +4 -6
  36. package/dist/components/conversation-inbox/ConversationInboxList.d.ts +3 -1
  37. package/dist/components/conversation-inbox/ConversationInboxList.d.ts.map +1 -1
  38. package/dist/components/conversation-inbox/ConversationInboxList.js +2 -2
  39. package/dist/components/conversation-inbox/ConversationThreadActions.d.ts +12 -0
  40. package/dist/components/conversation-inbox/ConversationThreadActions.d.ts.map +1 -0
  41. package/dist/components/conversation-inbox/ConversationThreadActions.js +58 -0
  42. package/dist/components/conversation-inbox/index.d.ts +2 -2
  43. package/dist/components/conversation-inbox/index.d.ts.map +1 -1
  44. package/dist/components/conversation-inbox/index.js +1 -1
  45. package/dist/components/group/MemberPermissionPanel.d.ts.map +1 -1
  46. package/dist/components/group/MemberPermissionPanel.js +12 -23
  47. package/dist/components/message/toolbox/MessageToolboxMenu.d.ts +7 -0
  48. package/dist/components/message/toolbox/MessageToolboxMenu.d.ts.map +1 -1
  49. package/dist/components/message/toolbox/MessageToolboxMenu.js +1 -1
  50. package/dist/constants/moreOption.d.ts +1 -0
  51. package/dist/constants/moreOption.d.ts.map +1 -1
  52. package/dist/hooks/conversation/useBotFlow.d.ts.map +1 -1
  53. package/dist/hooks/conversation/useBotFlow.js +42 -23
  54. package/dist/hooks/conversation/useConversationTarget.d.ts +4 -0
  55. package/dist/hooks/conversation/useConversationTarget.d.ts.map +1 -0
  56. package/dist/hooks/conversation/useConversationTarget.js +23 -0
  57. package/dist/hooks/conversation/usePinConversation.d.ts +10 -0
  58. package/dist/hooks/conversation/usePinConversation.d.ts.map +1 -0
  59. package/dist/hooks/conversation/usePinConversation.js +52 -0
  60. package/dist/hooks/message/holdMessageHighlight.d.ts +6 -0
  61. package/dist/hooks/message/holdMessageHighlight.d.ts.map +1 -0
  62. package/dist/hooks/message/holdMessageHighlight.js +22 -0
  63. package/dist/hooks/message/useMessageListScroll.d.ts.map +1 -1
  64. package/dist/hooks/message/useMessageListScroll.js +13 -0
  65. package/dist/hooks/message/useSendMessage.d.ts +1 -1
  66. package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
  67. package/dist/hooks/message/useSendMessage.js +358 -285
  68. package/dist/hooks/search/useSearchThreadMessages.d.ts +222 -0
  69. package/dist/hooks/search/useSearchThreadMessages.d.ts.map +1 -0
  70. package/dist/hooks/search/useSearchThreadMessages.js +60 -0
  71. package/dist/locales/vi/conversation-inbox.json +31 -0
  72. package/dist/screens/conversation-detail/index.d.ts +5 -1
  73. package/dist/screens/conversation-detail/index.d.ts.map +1 -1
  74. package/dist/screens/conversation-detail/index.js +17 -2
  75. package/dist/screens/conversation-inbox/index.d.ts +6 -0
  76. package/dist/screens/conversation-inbox/index.d.ts.map +1 -1
  77. package/dist/screens/conversation-inbox/index.js +3 -3
  78. package/dist/services/query.d.ts +3 -0
  79. package/dist/services/query.d.ts.map +1 -1
  80. package/dist/services/query.js +3 -0
  81. package/dist/services/routes.d.ts +2 -0
  82. package/dist/services/routes.d.ts.map +1 -1
  83. package/dist/services/routes.js +2 -0
  84. package/dist/store/conversation.d.ts.map +1 -1
  85. package/dist/store/conversation.js +10 -6
  86. package/dist/store/type.d.ts +3 -0
  87. package/dist/store/type.d.ts.map +1 -1
  88. package/dist/styles/global.css +1 -1
  89. package/dist/types/conversation.d.ts +8 -0
  90. package/dist/types/conversation.d.ts.map +1 -1
  91. package/dist/utils/common.d.ts +7 -0
  92. package/dist/utils/common.d.ts.map +1 -1
  93. package/dist/utils/common.js +42 -13
  94. package/dist/utils/sendQueue.d.ts +2 -0
  95. package/dist/utils/sendQueue.d.ts.map +1 -0
  96. package/dist/utils/sendQueue.js +14 -0
  97. package/package.json +1 -1
  98. package/dist/components/conversation-inbox/ConversationMuteSwipeAction.d.ts +0 -8
  99. package/dist/components/conversation-inbox/ConversationMuteSwipeAction.d.ts.map +0 -1
  100. package/dist/components/conversation-inbox/ConversationMuteSwipeAction.js +0 -31
@@ -0,0 +1,222 @@
1
+ import { MessageType } from "@droppii-org/wasm-client-sdk";
2
+ import type { PagedMessageResponse } from "../../types/dto";
3
+ export declare const THREAD_SEARCH_CONTENT_TYPES: MessageType[];
4
+ /** Messages of one conversation matching `searchTerm`, newest first (app endpoint). */
5
+ export declare const useSearchThreadMessages: (conversationId: string, searchTerm: string) => {
6
+ results: import("../../types/dto").MessageResultItem[];
7
+ data: import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>;
8
+ error: Error;
9
+ isError: true;
10
+ isPending: false;
11
+ isLoading: false;
12
+ isLoadingError: false;
13
+ isRefetchError: true;
14
+ isSuccess: false;
15
+ isPlaceholderData: false;
16
+ status: "error";
17
+ fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
18
+ fetchPreviousPage: (options?: import("@tanstack/react-query").FetchPreviousPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
19
+ hasNextPage: boolean;
20
+ hasPreviousPage: boolean;
21
+ isFetchNextPageError: boolean;
22
+ isFetchingNextPage: boolean;
23
+ isFetchPreviousPageError: boolean;
24
+ isFetchingPreviousPage: boolean;
25
+ dataUpdatedAt: number;
26
+ errorUpdatedAt: number;
27
+ failureCount: number;
28
+ failureReason: Error | null;
29
+ errorUpdateCount: number;
30
+ isFetched: boolean;
31
+ isFetchedAfterMount: boolean;
32
+ isFetching: boolean;
33
+ isInitialLoading: boolean;
34
+ isPaused: boolean;
35
+ isRefetching: boolean;
36
+ isStale: boolean;
37
+ isEnabled: boolean;
38
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
39
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
40
+ promise: Promise<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>>;
41
+ } | {
42
+ results: import("../../types/dto").MessageResultItem[];
43
+ data: import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>;
44
+ error: null;
45
+ isError: false;
46
+ isPending: false;
47
+ isLoading: false;
48
+ isLoadingError: false;
49
+ isRefetchError: false;
50
+ isFetchNextPageError: false;
51
+ isFetchPreviousPageError: false;
52
+ isSuccess: true;
53
+ isPlaceholderData: false;
54
+ status: "success";
55
+ fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
56
+ fetchPreviousPage: (options?: import("@tanstack/react-query").FetchPreviousPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
57
+ hasNextPage: boolean;
58
+ hasPreviousPage: boolean;
59
+ isFetchingNextPage: boolean;
60
+ isFetchingPreviousPage: boolean;
61
+ dataUpdatedAt: number;
62
+ errorUpdatedAt: number;
63
+ failureCount: number;
64
+ failureReason: Error | null;
65
+ errorUpdateCount: number;
66
+ isFetched: boolean;
67
+ isFetchedAfterMount: boolean;
68
+ isFetching: boolean;
69
+ isInitialLoading: boolean;
70
+ isPaused: boolean;
71
+ isRefetching: boolean;
72
+ isStale: boolean;
73
+ isEnabled: boolean;
74
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
75
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
76
+ promise: Promise<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>>;
77
+ } | {
78
+ results: import("../../types/dto").MessageResultItem[];
79
+ data: undefined;
80
+ error: Error;
81
+ isError: true;
82
+ isPending: false;
83
+ isLoading: false;
84
+ isLoadingError: true;
85
+ isRefetchError: false;
86
+ isFetchNextPageError: false;
87
+ isFetchPreviousPageError: false;
88
+ isSuccess: false;
89
+ isPlaceholderData: false;
90
+ status: "error";
91
+ fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
92
+ fetchPreviousPage: (options?: import("@tanstack/react-query").FetchPreviousPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
93
+ hasNextPage: boolean;
94
+ hasPreviousPage: boolean;
95
+ isFetchingNextPage: boolean;
96
+ isFetchingPreviousPage: boolean;
97
+ dataUpdatedAt: number;
98
+ errorUpdatedAt: number;
99
+ failureCount: number;
100
+ failureReason: Error | null;
101
+ errorUpdateCount: number;
102
+ isFetched: boolean;
103
+ isFetchedAfterMount: boolean;
104
+ isFetching: boolean;
105
+ isInitialLoading: boolean;
106
+ isPaused: boolean;
107
+ isRefetching: boolean;
108
+ isStale: boolean;
109
+ isEnabled: boolean;
110
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
111
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
112
+ promise: Promise<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>>;
113
+ } | {
114
+ results: import("../../types/dto").MessageResultItem[];
115
+ data: undefined;
116
+ error: null;
117
+ isError: false;
118
+ isPending: true;
119
+ isLoading: true;
120
+ isLoadingError: false;
121
+ isRefetchError: false;
122
+ isFetchNextPageError: false;
123
+ isFetchPreviousPageError: false;
124
+ isSuccess: false;
125
+ isPlaceholderData: false;
126
+ status: "pending";
127
+ fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
128
+ fetchPreviousPage: (options?: import("@tanstack/react-query").FetchPreviousPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
129
+ hasNextPage: boolean;
130
+ hasPreviousPage: boolean;
131
+ isFetchingNextPage: boolean;
132
+ isFetchingPreviousPage: boolean;
133
+ dataUpdatedAt: number;
134
+ errorUpdatedAt: number;
135
+ failureCount: number;
136
+ failureReason: Error | null;
137
+ errorUpdateCount: number;
138
+ isFetched: boolean;
139
+ isFetchedAfterMount: boolean;
140
+ isFetching: boolean;
141
+ isInitialLoading: boolean;
142
+ isPaused: boolean;
143
+ isRefetching: boolean;
144
+ isStale: boolean;
145
+ isEnabled: boolean;
146
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
147
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
148
+ promise: Promise<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>>;
149
+ } | {
150
+ results: import("../../types/dto").MessageResultItem[];
151
+ data: undefined;
152
+ error: null;
153
+ isError: false;
154
+ isPending: true;
155
+ isLoadingError: false;
156
+ isRefetchError: false;
157
+ isFetchNextPageError: false;
158
+ isFetchPreviousPageError: false;
159
+ isSuccess: false;
160
+ isPlaceholderData: false;
161
+ status: "pending";
162
+ fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
163
+ fetchPreviousPage: (options?: import("@tanstack/react-query").FetchPreviousPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
164
+ hasNextPage: boolean;
165
+ hasPreviousPage: boolean;
166
+ isFetchingNextPage: boolean;
167
+ isFetchingPreviousPage: boolean;
168
+ dataUpdatedAt: number;
169
+ errorUpdatedAt: number;
170
+ failureCount: number;
171
+ failureReason: Error | null;
172
+ errorUpdateCount: number;
173
+ isFetched: boolean;
174
+ isFetchedAfterMount: boolean;
175
+ isFetching: boolean;
176
+ isLoading: boolean;
177
+ isInitialLoading: boolean;
178
+ isPaused: boolean;
179
+ isRefetching: boolean;
180
+ isStale: boolean;
181
+ isEnabled: boolean;
182
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
183
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
184
+ promise: Promise<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>>;
185
+ } | {
186
+ results: import("../../types/dto").MessageResultItem[];
187
+ data: import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>;
188
+ isError: false;
189
+ error: null;
190
+ isPending: false;
191
+ isLoading: false;
192
+ isLoadingError: false;
193
+ isRefetchError: false;
194
+ isSuccess: true;
195
+ isPlaceholderData: true;
196
+ isFetchNextPageError: false;
197
+ isFetchPreviousPageError: false;
198
+ status: "success";
199
+ fetchNextPage: (options?: import("@tanstack/react-query").FetchNextPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
200
+ fetchPreviousPage: (options?: import("@tanstack/react-query").FetchPreviousPageOptions) => Promise<import("@tanstack/react-query").InfiniteQueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
201
+ hasNextPage: boolean;
202
+ hasPreviousPage: boolean;
203
+ isFetchingNextPage: boolean;
204
+ isFetchingPreviousPage: boolean;
205
+ dataUpdatedAt: number;
206
+ errorUpdatedAt: number;
207
+ failureCount: number;
208
+ failureReason: Error | null;
209
+ errorUpdateCount: number;
210
+ isFetched: boolean;
211
+ isFetchedAfterMount: boolean;
212
+ isFetching: boolean;
213
+ isInitialLoading: boolean;
214
+ isPaused: boolean;
215
+ isRefetching: boolean;
216
+ isStale: boolean;
217
+ isEnabled: boolean;
218
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>, Error>>;
219
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
220
+ promise: Promise<import("@tanstack/react-query").InfiniteData<PagedMessageResponse, unknown>>;
221
+ };
222
+ //# sourceMappingURL=useSearchThreadMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSearchThreadMessages.d.ts","sourceRoot":"","sources":["../../../src/hooks/search/useSearchThreadMessages.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAM3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxD,eAAO,MAAM,2BAA2B,eAKvC,CAAC;AAIF,uFAAuF;AACvF,eAAO,MAAM,uBAAuB,GAClC,gBAAgB,MAAM,EACtB,YAAY,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CnB,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use client";
2
+ import { useMemo } from "react";
3
+ import { useInfiniteQuery } from "@tanstack/react-query";
4
+ import { MessageType } from "@droppii-org/wasm-client-sdk";
5
+ import { PAGE_SIZE } from "../../constants";
6
+ import { apiInstance } from "../../services/api";
7
+ import { QUERY_KEYS } from "../../services/query";
8
+ import { ENDPOINTS } from "../../services/routes";
9
+ import useAuthStore from "../../store/auth";
10
+ // Text, link, quote and mention messages; media, stickers and system messages are not searchable.
11
+ export const THREAD_SEARCH_CONTENT_TYPES = [
12
+ MessageType.TextMessage,
13
+ MessageType.UrlTextMessage,
14
+ MessageType.QuoteMessage,
15
+ MessageType.AtTextMessage,
16
+ ];
17
+ const THREAD_SEARCH_PAGE_SIZE = PAGE_SIZE.medium;
18
+ /** Messages of one conversation matching `searchTerm`, newest first (app endpoint). */
19
+ export const useSearchThreadMessages = (conversationId, searchTerm) => {
20
+ const term = searchTerm.trim();
21
+ const query = useInfiniteQuery({
22
+ initialPageParam: 1,
23
+ queryKey: [QUERY_KEYS.SEARCH_THREAD_MESSAGES, conversationId, term],
24
+ queryFn: async ({ pageParam }) => {
25
+ const res = await apiInstance.post(ENDPOINTS.chatService.searchAppMessages, {
26
+ conversationId,
27
+ searchTerm: term,
28
+ contentTypes: THREAD_SEARCH_CONTENT_TYPES,
29
+ page: pageParam,
30
+ pageSize: THREAD_SEARCH_PAGE_SIZE,
31
+ applicationType: useAuthStore.getState().applicationType,
32
+ });
33
+ return res.data;
34
+ },
35
+ // The endpoint leaves totalElements at 0, so a short page marks the end.
36
+ getNextPageParam: (lastPage, pages) => {
37
+ var _a, _b;
38
+ return ((_b = (_a = lastPage === null || lastPage === void 0 ? void 0 : lastPage.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) < THREAD_SEARCH_PAGE_SIZE
39
+ ? undefined
40
+ : pages.length + 1;
41
+ },
42
+ enabled: !!conversationId && term !== "",
43
+ retry: false,
44
+ refetchOnWindowFocus: false,
45
+ });
46
+ // New messages shift the offset pages, so a hit can come back on the next page too.
47
+ const results = useMemo(() => {
48
+ var _a, _b;
49
+ const seen = new Set();
50
+ return ((_b = (_a = query.data) === null || _a === void 0 ? void 0 : _a.pages.flatMap((page) => { var _a; return (_a = page === null || page === void 0 ? void 0 : page.data) !== null && _a !== void 0 ? _a : []; })) !== null && _b !== void 0 ? _b : []).filter((item) => {
51
+ var _a;
52
+ const id = (_a = item.chatLog) === null || _a === void 0 ? void 0 : _a.clientMsgID;
53
+ if (!id || seen.has(id))
54
+ return false;
55
+ seen.add(id);
56
+ return true;
57
+ });
58
+ }, [query.data]);
59
+ return Object.assign(Object.assign({}, query), { results });
60
+ };
@@ -85,6 +85,11 @@
85
85
  "unmute_success": "Đã bật thông báo",
86
86
  "mute_failed": "Không thể tắt thông báo. Vui lòng thử lại.",
87
87
  "unmute_failed": "Không thể bật thông báo. Vui lòng thử lại."
88
+ },
89
+ "pin": {
90
+ "pin_action": "Ghim",
91
+ "unpin_action": "Bỏ ghim",
92
+ "pinned_icon_label": "Đã ghim"
88
93
  }
89
94
  },
90
95
  "thread_detail": {
@@ -93,6 +98,32 @@
93
98
  "input_placeholder": "Nhập tin nhắn...",
94
99
  "view_only_notice": "Bạn cần tham gia nhóm để gửi tin nhắn",
95
100
  "resolve_failed": "Không thể mở cuộc trò chuyện",
101
+ "search": {
102
+ "open": "Tìm tin nhắn",
103
+ "back": "Quay lại",
104
+ "placeholder": "Tìm kiếm",
105
+ "initial": "Bạn có thể tìm kiếm theo nội dung tin nhắn",
106
+ "no_result_title": "Không tìm thấy kết quả nào",
107
+ "no_result_hint": "Hãy thử lại với cách viết khác hoặc kết hợp cụm từ khác phù hợp hơn.",
108
+ "failed": "Không tải được kết quả. Vui lòng thử lại",
109
+ "you": "Bạn"
110
+ },
111
+ "profile": {
112
+ "open": "Tuỳ chọn",
113
+ "search": "Tìm tin nhắn",
114
+ "orders": "Đơn hàng đã tạo cho {{name}}",
115
+ "create_group": "Tạo nhóm trò chuyện với {{name}}",
116
+ "add_to_group": "Thêm vào nhóm",
117
+ "pin": "Ghim trò chuyện",
118
+ "unpin": "Bỏ ghim trò chuyện",
119
+ "delete_history": "Xoá lịch sử trò chuyện",
120
+ "pin_success": "Đã ghim đoạn chat thành công",
121
+ "unpin_success": "Đã bỏ ghim đoạn chat thành công",
122
+ "pin_failed": "Có lỗi xảy ra vui lòng thử lại",
123
+ "pin_limit_title": "Không thể ghim đoạn chat",
124
+ "pin_limit_desc": "Bạn đã ghim số đoạn chat tối đa. Để ghim đoạn chat này, trước tiên bạn phải bỏ ghim đoạn chat khác.",
125
+ "pin_limit_confirm": "OK"
126
+ },
96
127
  "more_option": {
97
128
  "toggle": "Tùy chọn khác",
98
129
  "media": "Ảnh/Video",
@@ -11,7 +11,11 @@ export interface DChatConversationDetailProps extends ConversationDetailInputPro
11
11
  onCopyMessageLink?: (conversationId: string, clientMsgID: string) => void;
12
12
  /** Called instead of the SDK's default toast when a jumped-to message turns out to be revoked. */
13
13
  onSearchMessageRevoked?: () => void;
14
+ /** BIZ profile design: header ☰ icon plus quick actions and action rows in the profile panel. Defaults to false. */
15
+ showProfileActions?: boolean;
16
+ /** BIZ search in this thread: header search icon and the profile "Tìm tin nhắn" entry. Defaults to false. */
17
+ showThreadSearch?: boolean;
14
18
  }
15
- declare const DChatConversationDetail: ({ className, children, onBack, conversationId, messageId, userId, groupId, botId, onCopyMessageLink, onSearchMessageRevoked, ...inputProps }: DChatConversationDetailProps) => import("react/jsx-runtime").JSX.Element | null;
19
+ declare const DChatConversationDetail: ({ className, children, onBack, conversationId, messageId, userId, groupId, botId, onCopyMessageLink, onSearchMessageRevoked, showProfileActions, showThreadSearch, ...inputProps }: DChatConversationDetailProps) => import("react/jsx-runtime").JSX.Element | null;
16
20
  export default DChatConversationDetail;
17
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation-detail/index.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAYrF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,6CAA6C,CAAC;AAQrD,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;CACrC;AAED,QAAA,MAAM,uBAAuB,GAAI,8IAc9B,4BAA4B,mDA6Q9B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation-detail/index.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAYrF,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,mDAyS9B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -22,6 +22,7 @@ import { Icon } from "../../components/icon";
22
22
  import useAuthStore from "../../store/auth";
23
23
  import useConversationStore from "../../store/conversation";
24
24
  import ThreadProfilePanel from "../../components/conversation-detail/ThreadProfilePanel";
25
+ import ThreadSearchPanel from "../../components/conversation-detail/thread-search/ThreadSearchPanel";
25
26
  import MediaResourcePanel from "../../components/media-resources/MediaResourcePanel";
26
27
  import { MediaResourceTabKey } from "../../components/media-resources/constants";
27
28
  import { ConversationMessageList, ConversationDetailHeader, ConversationDetailInput, PinnedMessageBar, } from "../../components/conversation-detail";
@@ -33,13 +34,14 @@ import { BOT_TYPE } from "../../constants/botFlow";
33
34
  import { useResolveConversation, } from "../../hooks/conversation/useResolveConversation";
34
35
  import { nextConsultantReturnTarget, useConsultantChatNavigation, } from "../../hooks/conversation/useConsultantChatNavigation";
35
36
  import { isBotPeer, isSupportSessionAgentView } from "../../utils/conversation";
37
+ import { PeerType } from "../../types/conversation";
36
38
  import { COMPOSER_DISMISS_ZONE_ATTR } from "../../hooks/common/useOutsideTapDismiss";
37
39
  const DChatConversationDetail = (_a) => {
38
40
  var _b;
39
41
  var { className, children, onBack, conversationId, messageId, userId, groupId, botId,
40
42
  // Destructured out of the rest spread on purpose: everything left in
41
43
  // inputProps goes to ConversationDetailInput, which has no business with it.
42
- onCopyMessageLink, onSearchMessageRevoked } = _a, inputProps = __rest(_a, ["className", "children", "onBack", "conversationId", "messageId", "userId", "groupId", "botId", "onCopyMessageLink", "onSearchMessageRevoked"]);
44
+ onCopyMessageLink, onSearchMessageRevoked, showProfileActions = false, showThreadSearch = false } = _a, inputProps = __rest(_a, ["className", "children", "onBack", "conversationId", "messageId", "userId", "groupId", "botId", "onCopyMessageLink", "onSearchMessageRevoked", "showProfileActions", "showThreadSearch"]);
43
45
  const { t } = useTranslation("conversation-inbox");
44
46
  const { useUrlState = true, user } = useChatContext();
45
47
  const onNavigate = useChatNavigate();
@@ -68,6 +70,19 @@ const DChatConversationDetail = (_a) => {
68
70
  const hasMenuItems = botFlow.menuItems.length > 0;
69
71
  const [isProfileOpen, { setTrue: openProfile, setFalse: closeProfile }] = useBoolean(false);
70
72
  const [resourceTab, setResourceTab] = useState(null);
73
+ const [isSearchOpen, { setTrue: openSearch, setFalse: closeSearch }] = useBoolean(false);
74
+ const openSearchFromProfile = () => {
75
+ closeProfile();
76
+ openSearch();
77
+ };
78
+ // The search API only serves members, so a view-only viewer of a public group gets none.
79
+ // Same group check as ThreadProfilePanel: the store flag can lag on a non-group thread.
80
+ const isViewOnlyGroup = isViewOnlyMember && (conversation === null || conversation === void 0 ? void 0 : conversation.peerType) === PeerType.GROUP;
81
+ const canSearch = showThreadSearch && !isViewOnlyGroup;
82
+ // Search belongs to one thread; another thread opening in place (or losing membership) closes it.
83
+ useEffect(() => {
84
+ closeSearch();
85
+ }, [conversation === null || conversation === void 0 ? void 0 : conversation.conversationID, isViewOnlyGroup, closeSearch]);
71
86
  const { returnTarget: consultantReturnTarget, returnToBotThread, clearReturnTarget, setReturnTarget, } = useConsultantChatNavigation();
72
87
  useEffect(() => {
73
88
  const next = nextConsultantReturnTarget(consultantReturnTarget, conversation);
@@ -141,6 +156,6 @@ const DChatConversationDetail = (_a) => {
141
156
  !botFlow.flowIsEnd &&
142
157
  botFlow.shouldShowButtons &&
143
158
  botFlow.currentButtonsBlock ? (_jsx(BotButtonMessage, { buttons: botFlow.currentButtonsBlock.data.buttons, disabled: botFlow.isProcessing, onSelect: botFlow.selectButton, onRestart: botFlow.restart })) : null;
144
- return (_jsxs("div", { "data-testid": "conversation-detail-root", className: clsx("relative flex h-full w-full flex-col overflow-hidden bg-white", className), children: [_jsx(ConversationDetailHeader, { conversation: conversation, onBack: handleBack, onProfileClick: openProfile }), _jsx(PinnedMessageBar, { canUnpin: canPinMessage }), _jsxs("div", { [COMPOSER_DISMISS_ZONE_ATTR]: "", className: "relative flex min-h-0 flex-1 flex-col", children: [children !== null && children !== void 0 ? children : (_jsx(ConversationMessageList, { bottomSlot: botButtonsSlot, onCopyMessageLink: onCopyMessageLink, onSearchMessageRevoked: onSearchMessageRevoked })), _jsx(TypingIndicatorBar, { conversationId: conversation.conversationID })] }), footer, isBotThread && (_jsxs(_Fragment, { children: [_jsx(BotMenuSheet, { open: isMenuOpen, items: botFlow.menuItems, disabled: botFlow.isProcessing, onClose: closeMenu, onSelect: botFlow.selectMenuOption }), _jsx(CsSessionConfirmModal, { open: botFlow.isCsConfirmOpen, loading: botFlow.isProcessing, onCancel: botFlow.cancelMenuOption, onConfirm: botFlow.confirmEndCsSession })] })), _jsx(ThreadProfilePanel, { open: isProfileOpen, conversation: conversation, onClose: closeProfile, onSelectResource: setResourceTab }), _jsx(MediaResourcePanel, { open: resourceTab !== null, initialTab: resourceTab !== null && resourceTab !== void 0 ? resourceTab : MediaResourceTabKey.Image, onClose: () => setResourceTab(null) })] }));
159
+ return (_jsxs("div", { "data-testid": "conversation-detail-root", className: clsx("relative flex h-full w-full flex-col overflow-hidden bg-white", className), children: [_jsx(ConversationDetailHeader, { conversation: conversation, onBack: handleBack, onProfileClick: openProfile, onProfileIconClick: showProfileActions ? openProfile : undefined, onSearchClick: canSearch ? openSearch : undefined }), _jsx(PinnedMessageBar, { canUnpin: canPinMessage }), _jsxs("div", { [COMPOSER_DISMISS_ZONE_ATTR]: "", className: "relative flex min-h-0 flex-1 flex-col", children: [children !== null && children !== void 0 ? children : (_jsx(ConversationMessageList, { bottomSlot: botButtonsSlot, onCopyMessageLink: onCopyMessageLink, onSearchMessageRevoked: onSearchMessageRevoked })), _jsx(TypingIndicatorBar, { conversationId: conversation.conversationID })] }), footer, isBotThread && (_jsxs(_Fragment, { children: [_jsx(BotMenuSheet, { open: isMenuOpen, items: botFlow.menuItems, disabled: botFlow.isProcessing, onClose: closeMenu, onSelect: botFlow.selectMenuOption }), _jsx(CsSessionConfirmModal, { open: botFlow.isCsConfirmOpen, loading: botFlow.isProcessing, onCancel: botFlow.cancelMenuOption, onConfirm: botFlow.confirmEndCsSession })] })), _jsx(ThreadProfilePanel, { open: isProfileOpen, conversation: conversation, onClose: closeProfile, onSelectResource: setResourceTab, showActions: showProfileActions, onSearch: canSearch ? openSearchFromProfile : undefined }), showThreadSearch && (_jsx(ThreadSearchPanel, { open: isSearchOpen, conversation: conversation, onClose: closeSearch, onSearchMessageRevoked: onSearchMessageRevoked }, conversation.conversationID)), _jsx(MediaResourcePanel, { open: resourceTab !== null, initialTab: resourceTab !== null && resourceTab !== void 0 ? resourceTab : MediaResourceTabKey.Image, onClose: () => setResourceTab(null) })] }));
145
160
  };
146
161
  export default DChatConversationDetail;
@@ -20,6 +20,12 @@ export interface DChatConversationInboxProps {
20
20
  onSearchMessageRevoked?: () => void;
21
21
  /** Shows the sticker picker entry in the thread composer. Defaults to true. */
22
22
  showSticker?: boolean;
23
+ /** Forwarded to the detail screen — see DChatConversationDetailProps.showProfileActions. */
24
+ showProfileActions?: boolean;
25
+ /** BIZ thread list: Ghim / Bỏ ghim in the swipe actions plus a right-click menu (mute, pin). Defaults to false. */
26
+ showPinThread?: boolean;
27
+ /** Forwarded to the detail screen — see DChatConversationDetailProps.showThreadSearch. */
28
+ showThreadSearch?: boolean;
23
29
  }
24
30
  declare const DChatConversationInbox: (props: DChatConversationInboxProps) => import("react/jsx-runtime").JSX.Element;
25
31
  export default DChatConversationInbox;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation-inbox/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,MAAM,WAAW,2BAA2B;IAC1C,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,6FAA6F;IAC7F,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC;;;;OAIG;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,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAsOD,QAAA,MAAM,sBAAsB,GAAI,OAAO,2BAA2B,4CAQjE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation-inbox/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,MAAM,WAAW,2BAA2B;IAC1C,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,6FAA6F;IAC7F,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC;;;;OAIG;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,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mHAAmH;IACnH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AA4OD,QAAA,MAAM,sBAAsB,GAAI,OAAO,2BAA2B,4CAQjE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -77,7 +77,7 @@ const useInboxConversationList = (chatCategory) => {
77
77
  const isApplicationTypeValid = Object.values(DChatApplicationType).includes(applicationType);
78
78
  return Object.assign(Object.assign({}, useConversationList({ enabled: isApplicationTypeValid, chatCategory })), { isApplicationTypeValid });
79
79
  };
80
- const DChatConversationInboxBody = ({ onSelectThread, className, moreOptions, showSearch = true, headerTitle, headerRightSlot, onCopyMessageLink, onSearchMessageRevoked, showSticker, target, conversationList, }) => {
80
+ const DChatConversationInboxBody = ({ onSelectThread, className, moreOptions, showSearch = true, headerTitle, headerRightSlot, onCopyMessageLink, onSearchMessageRevoked, showSticker, showProfileActions, showPinThread, showThreadSearch, target, conversationList, }) => {
81
81
  const { t } = useTranslation("conversation-inbox");
82
82
  const selectedConversationId = useConversationStore((state) => state.selectedConversationId);
83
83
  const removedFromGroupModalOpen = useConversationStore((state) => state.removedFromGroupModalOpen);
@@ -99,13 +99,13 @@ const DChatConversationInboxBody = ({ onSelectThread, className, moreOptions, sh
99
99
  groupId ||
100
100
  botId);
101
101
  if (hasConversationTarget) {
102
- return (_jsx(DChatConversationDetail, { className: className, moreOptions: moreOptions, conversationId: threadId !== null && threadId !== void 0 ? threadId : undefined, userId: userId, groupId: groupId, botId: botId, onCopyMessageLink: onCopyMessageLink, onSearchMessageRevoked: onSearchMessageRevoked, messageId: messageId, showSticker: showSticker }));
102
+ return (_jsx(DChatConversationDetail, { className: className, moreOptions: moreOptions, conversationId: threadId !== null && threadId !== void 0 ? threadId : undefined, userId: userId, groupId: groupId, botId: botId, onCopyMessageLink: onCopyMessageLink, onSearchMessageRevoked: onSearchMessageRevoked, messageId: messageId, showSticker: showSticker, showProfileActions: showProfileActions, showThreadSearch: showThreadSearch }));
103
103
  }
104
104
  return (_jsxs("div", { "data-testid": "conversation-inbox-root", className: clsx(
105
105
  // `relative` + `overflow-hidden` keep ContactSearchPanel's Drawer
106
106
  // (getContainer={false}) inside this column instead of escaping to
107
107
  // the viewport — same containment the conversation detail root uses.
108
- "relative flex h-full w-full flex-col overflow-hidden bg-white", className), children: [_jsx(ConversationInboxHeader, { onOpenSearch: showSearch ? openSearch : undefined, title: headerTitle, rightSlot: headerRightSlot }), !conversationList.isApplicationTypeValid ? (_jsx("div", { className: "flex flex-1 items-center justify-center py-12", children: _jsx(Empty, { image: _jsx("div", { className: "flex justify-center", children: _jsx(Icon, { icon: "chat-square-b", size: 80, className: "text-[var(--dc-color-primary-light)]" }) }), description: t("empty.no_conversations") }) })) : (_jsx(ConversationInboxList, { items: conversationList.items, isLoading: conversationList.isLoading, isFetchingNextPage: conversationList.isFetchingNextPage, hasNextPage: conversationList.hasNextPage, onLoadMore: conversationList.fetchNextPage, onSelectThread: onSelectThread })), _jsx(ContactSearchPanel, { open: isSearchOpen, onClose: closeSearch })] }));
108
+ "relative flex h-full w-full flex-col overflow-hidden bg-white", className), children: [_jsx(ConversationInboxHeader, { onOpenSearch: showSearch ? openSearch : undefined, title: headerTitle, rightSlot: headerRightSlot }), !conversationList.isApplicationTypeValid ? (_jsx("div", { className: "flex flex-1 items-center justify-center py-12", children: _jsx(Empty, { image: _jsx("div", { className: "flex justify-center", children: _jsx(Icon, { icon: "chat-square-b", size: 80, className: "text-[var(--dc-color-primary-light)]" }) }), description: t("empty.no_conversations") }) })) : (_jsx(ConversationInboxList, { items: conversationList.items, isLoading: conversationList.isLoading, isFetchingNextPage: conversationList.isFetchingNextPage, hasNextPage: conversationList.hasNextPage, onLoadMore: conversationList.fetchNextPage, onSelectThread: onSelectThread, showPinThread: showPinThread })), _jsx(ContactSearchPanel, { open: isSearchOpen, onClose: closeSearch })] }));
109
109
  };
110
110
  // ChatProvider's useUrlState prop picks which target-resolution variant
111
111
  // mounts — kept as two full components (not one with a conditional hook)
@@ -3,6 +3,7 @@ export declare const QUERY_KEYS: {
3
3
  GET_SESSION_SUMMARY: string;
4
4
  GET_SESSION_BY_TAG_OR_STATUS: string;
5
5
  SEARCH_MESSAGE: string;
6
+ SEARCH_THREAD_MESSAGES: string;
6
7
  UPDATE_SESSION: string;
7
8
  FETCH_EXTERNAL_LINK: string;
8
9
  FETCH_URL_METADATA: string;
@@ -26,6 +27,8 @@ export declare const QUERY_KEYS: {
26
27
  SESSION_LATEST_MESSAGE: string;
27
28
  CREATE_CONVERSATION: string;
28
29
  GET_CONVERSATION_DETAIL: string;
30
+ GET_CONVERSATION_TARGET: string;
31
+ PIN_CONVERSATION: string;
29
32
  RUN_BOT_FLOW: string;
30
33
  RESET_BOT_FLOW: string;
31
34
  CLOSE_BOT_SESSION: string;
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/services/query.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDtB,CAAC"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/services/query.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDtB,CAAC"}
@@ -3,6 +3,7 @@ export const QUERY_KEYS = {
3
3
  GET_SESSION_SUMMARY: "GET_SESSION_SUMMARY",
4
4
  GET_SESSION_BY_TAG_OR_STATUS: "GET_SESSION_BY_TAG_OR_STATUS",
5
5
  SEARCH_MESSAGE: "SEARCH_MESSAGE",
6
+ SEARCH_THREAD_MESSAGES: "SEARCH_THREAD_MESSAGES",
6
7
  UPDATE_SESSION: "UPDATE_SESSION",
7
8
  FETCH_EXTERNAL_LINK: "FETCH_EXTERNAL_LINK",
8
9
  FETCH_URL_METADATA: "FETCH_URL_METADATA",
@@ -26,6 +27,8 @@ export const QUERY_KEYS = {
26
27
  SESSION_LATEST_MESSAGE: "SESSION_LATEST_MESSAGE",
27
28
  CREATE_CONVERSATION: "CREATE_CONVERSATION",
28
29
  GET_CONVERSATION_DETAIL: "GET_CONVERSATION_DETAIL",
30
+ GET_CONVERSATION_TARGET: "GET_CONVERSATION_TARGET",
31
+ PIN_CONVERSATION: "PIN_CONVERSATION",
29
32
  RUN_BOT_FLOW: "RUN_BOT_FLOW",
30
33
  RESET_BOT_FLOW: "RESET_BOT_FLOW",
31
34
  CLOSE_BOT_SESSION: "CLOSE_BOT_SESSION",
@@ -37,6 +37,7 @@ export declare const ENDPOINTS: {
37
37
  searchPdpPortalGroups: string;
38
38
  createConversation: string;
39
39
  getConversationDetail: (conversationId: string) => string;
40
+ getConversationTarget: (conversationId: string) => string;
40
41
  runBotFlow: (conversationId: string) => string;
41
42
  resetBotFlow: (conversationId: string) => string;
42
43
  closeBotSession: (conversationId: string) => string;
@@ -45,6 +46,7 @@ export declare const ENDPOINTS: {
45
46
  getConversationByBotId: (botId: string) => string;
46
47
  getUrlMetadata: string;
47
48
  getMessageResources: string;
49
+ searchAppMessages: string;
48
50
  searchContacts: string;
49
51
  getStickerCategories: string;
50
52
  getStickersByCategory: (categoryId: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/services/routes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;mCAMS,MAAM;;0CAGC,MAAM,UAAU,MAAM;6BAEnC,MAAM;;oDAEiB,MAAM;uCAEnB,MAAM;kCAEX,MAAM;;oCAGJ,MAAM;mCAEP,MAAM;uCAEF,MAAM;;;;;;;;;iCAUZ,MAAM;4CAEK,MAAM;mCAEf,MAAM;yCAEA,MAAM;gCAEf,MAAM;;;;;;;;gDAYU,MAAM;qCAEjB,MAAM;uCAEJ,MAAM;0CAEH,MAAM;yCAEP,MAAM;8BAEjB,MAAM;wCACI,MAAM;;;;;4CAMF,MAAM;;;;;;;;;;;;CAa7C,CAAC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/services/routes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;mCAMS,MAAM;;0CAGC,MAAM,UAAU,MAAM;6BAEnC,MAAM;;oDAEiB,MAAM;uCAEnB,MAAM;kCAEX,MAAM;;oCAGJ,MAAM;mCAEP,MAAM;uCAEF,MAAM;;;;;;;;;iCAUZ,MAAM;4CAEK,MAAM;mCAEf,MAAM;yCAEA,MAAM;gCAEf,MAAM;;;;;;;;gDAYU,MAAM;gDAEN,MAAM;qCAEjB,MAAM;uCAEJ,MAAM;0CAEH,MAAM;yCAEP,MAAM;8BAEjB,MAAM;wCACI,MAAM;;;;;;4CAOF,MAAM;;;;;;;;;;;;CAa7C,CAAC"}
@@ -37,6 +37,7 @@ export const ENDPOINTS = {
37
37
  searchPdpPortalGroups: "/chat-service/v1/pdp-portal/conversations/groups/query",
38
38
  createConversation: "/chat-service/v1/app/conversations",
39
39
  getConversationDetail: (conversationId) => `/chat-service/v1/app/conversations/${conversationId}`,
40
+ getConversationTarget: (conversationId) => `/chat-service/v1/app/conversations/${conversationId}/target`,
40
41
  runBotFlow: (conversationId) => `/chat-service/v1/app/conversations/${conversationId}/bot-flows/run`,
41
42
  resetBotFlow: (conversationId) => `/chat-service/v1/app/conversations/${conversationId}/bot-flows/reset`,
42
43
  closeBotSession: (conversationId) => `/chat-service/v1/app/conversations/${conversationId}/session/close`,
@@ -45,6 +46,7 @@ export const ENDPOINTS = {
45
46
  getConversationByBotId: (botId) => `/chat-service/v1/app/bots/${botId}/conversation`,
46
47
  getUrlMetadata: "/chat-service/v1/utils/url-metadata",
47
48
  getMessageResources: "/chat-service/v1/app/messages/resources",
49
+ searchAppMessages: "/chat-service/v1/app/messages/search",
48
50
  searchContacts: "/chat-service/v1/app/contacts/search",
49
51
  getStickerCategories: "/chat-service/v1/app/sticker-categories",
50
52
  getStickersByCategory: (categoryId) => `/chat-service/v1/app/sticker-categories/${categoryId}/stickers`,
@@ -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;AAY3C,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,gFAmhBvB,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;AAY3C,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,gFA4hBvB,CAAC;AAEJ,eAAe,oBAAoB,CAAC"}
@@ -37,14 +37,13 @@ export const setUrlNavigate = (fn) => {
37
37
  const useConversationStore = create((set, get) => ({
38
38
  conversationData: null,
39
39
  setConversationData: (data, dataSearchClientMsgID, options) => {
40
+ var _a;
40
41
  void get().updateCurrentConversation(data, options);
41
- set({
42
- conversationData: data,
43
- selectedSourceId: (data === null || data === void 0 ? void 0 : data.conversationType) === SessionType.Group
42
+ set(Object.assign(Object.assign({ conversationData: data }, ((data === null || data === void 0 ? void 0 : data.conversationID) !== ((_a = get().conversationData) === null || _a === void 0 ? void 0 : _a.conversationID)
43
+ ? { heldHighlightClientMsgID: "" }
44
+ : {})), { selectedSourceId: (data === null || data === void 0 ? void 0 : data.conversationType) === SessionType.Group
44
45
  ? data === null || data === void 0 ? void 0 : data.groupID
45
- : data === null || data === void 0 ? void 0 : data.userID,
46
- searchClientMsgID: dataSearchClientMsgID,
47
- });
46
+ : data === null || data === void 0 ? void 0 : data.userID, searchClientMsgID: dataSearchClientMsgID }));
48
47
  },
49
48
  selectedConversationId: "",
50
49
  setSelectedConversationId: (threadId) => {
@@ -350,6 +349,7 @@ const useConversationStore = create((set, get) => ({
350
349
  conversationData: null,
351
350
  selectedConversationId: "",
352
351
  selectedSourceId: "",
352
+ heldHighlightClientMsgID: "",
353
353
  pendingResolveTarget: null,
354
354
  currentConversation: undefined,
355
355
  quotedMessage: null,
@@ -383,6 +383,10 @@ const useConversationStore = create((set, get) => ({
383
383
  setSearchClientMsgID: (clientMsgID) => {
384
384
  set({ searchClientMsgID: clientMsgID });
385
385
  },
386
+ heldHighlightClientMsgID: "",
387
+ setHeldHighlightClientMsgID: (clientMsgID) => {
388
+ set({ heldHighlightClientMsgID: clientMsgID });
389
+ },
386
390
  //quoted message
387
391
  quotedMessage: null,
388
392
  setQuotedMessage: (message) => {
@@ -88,6 +88,9 @@ export interface ConversationStore {
88
88
  }) => void;
89
89
  searchClientMsgID: string;
90
90
  setSearchClientMsgID: (clientMsgID: string) => void;
91
+ /** Jump target that keeps its highlight 5 s (in-thread search) instead of the short pulse. */
92
+ heldHighlightClientMsgID: string;
93
+ setHeldHighlightClientMsgID: (clientMsgID: string) => void;
91
94
  quotedMessage: MessageItem | null;
92
95
  setQuotedMessage: (message: MessageItem | null) => void;
93
96
  pinnedMessageList: MessageItem[];
@@ -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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"}