@droppii-org/chat-mobile 0.2.51 → 0.2.52

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 (134) hide show
  1. package/lib/module/assets/images/index.js +2 -1
  2. package/lib/module/assets/images/index.js.map +1 -1
  3. package/lib/module/assets/images/resource-center-empty-box.png +0 -0
  4. package/lib/module/components/MediaViewerModal.js +2 -1
  5. package/lib/module/components/MediaViewerModal.js.map +1 -1
  6. package/lib/module/components/MergedImageGrid.js +1 -0
  7. package/lib/module/components/MergedImageGrid.js.map +1 -1
  8. package/lib/module/config/api-endpoints.js +2 -1
  9. package/lib/module/config/api-endpoints.js.map +1 -1
  10. package/lib/module/core/notification/pushToken.js +7 -7
  11. package/lib/module/core/notification/pushToken.js.map +1 -1
  12. package/lib/module/hooks/query-keys.js +4 -0
  13. package/lib/module/hooks/query-keys.js.map +1 -1
  14. package/lib/module/hooks/resourceCenter/useThreadResources.js +116 -0
  15. package/lib/module/hooks/resourceCenter/useThreadResources.js.map +1 -0
  16. package/lib/module/hooks/useImageAttachment.js +0 -2
  17. package/lib/module/hooks/useImageAttachment.js.map +1 -1
  18. package/lib/module/hooks/useMediaViewer.js +4 -1
  19. package/lib/module/hooks/useMediaViewer.js.map +1 -1
  20. package/lib/module/hooks/useSendAttachment.js +4 -1
  21. package/lib/module/hooks/useSendAttachment.js.map +1 -1
  22. package/lib/module/index.js +1 -0
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/module/screens/MediaView/index.js +104 -42
  25. package/lib/module/screens/MediaView/index.js.map +1 -1
  26. package/lib/module/screens/ResourceCenter/FileResourceRow.js +80 -0
  27. package/lib/module/screens/ResourceCenter/FileResourceRow.js.map +1 -0
  28. package/lib/module/screens/ResourceCenter/GridRenderer.js +83 -0
  29. package/lib/module/screens/ResourceCenter/GridRenderer.js.map +1 -0
  30. package/lib/module/screens/ResourceCenter/GridThumbnail.js +97 -0
  31. package/lib/module/screens/ResourceCenter/GridThumbnail.js.map +1 -0
  32. package/lib/module/screens/ResourceCenter/LinkResourceRow.js +81 -0
  33. package/lib/module/screens/ResourceCenter/LinkResourceRow.js.map +1 -0
  34. package/lib/module/screens/ResourceCenter/ListRenderer.js +60 -0
  35. package/lib/module/screens/ResourceCenter/ListRenderer.js.map +1 -0
  36. package/lib/module/screens/ResourceCenter/ResourceCenterTabBar.js +75 -0
  37. package/lib/module/screens/ResourceCenter/ResourceCenterTabBar.js.map +1 -0
  38. package/lib/module/screens/ResourceCenter/ResourceCenterTabScene.js +122 -0
  39. package/lib/module/screens/ResourceCenter/ResourceCenterTabScene.js.map +1 -0
  40. package/lib/module/screens/ResourceCenter/ResourceEmptyState.js +36 -0
  41. package/lib/module/screens/ResourceCenter/ResourceEmptyState.js.map +1 -0
  42. package/lib/module/screens/ResourceCenter/index.js +104 -0
  43. package/lib/module/screens/ResourceCenter/index.js.map +1 -0
  44. package/lib/module/screens/ResourceCenter/types.js +25 -0
  45. package/lib/module/screens/ResourceCenter/types.js.map +1 -0
  46. package/lib/module/services/attachmentOrchestrator.js +19 -4
  47. package/lib/module/services/attachmentOrchestrator.js.map +1 -1
  48. package/lib/module/services/resourceCenter.js +102 -0
  49. package/lib/module/services/resourceCenter.js.map +1 -0
  50. package/lib/module/translation/resources/i18n.js +8 -1
  51. package/lib/module/translation/resources/i18n.js.map +1 -1
  52. package/lib/module/types/attachment.js +2 -0
  53. package/lib/module/types/chat.js +20 -0
  54. package/lib/module/types/chat.js.map +1 -1
  55. package/lib/module/utils/url.js +11 -0
  56. package/lib/module/utils/url.js.map +1 -1
  57. package/lib/typescript/src/assets/images/index.d.ts +1 -0
  58. package/lib/typescript/src/assets/images/index.d.ts.map +1 -1
  59. package/lib/typescript/src/components/MediaViewerModal.d.ts +3 -1
  60. package/lib/typescript/src/components/MediaViewerModal.d.ts.map +1 -1
  61. package/lib/typescript/src/components/MergedImageGrid.d.ts.map +1 -1
  62. package/lib/typescript/src/config/api-endpoints.d.ts +1 -0
  63. package/lib/typescript/src/config/api-endpoints.d.ts.map +1 -1
  64. package/lib/typescript/src/hooks/query-keys.d.ts +4 -0
  65. package/lib/typescript/src/hooks/query-keys.d.ts.map +1 -1
  66. package/lib/typescript/src/hooks/resourceCenter/useThreadResources.d.ts +21 -0
  67. package/lib/typescript/src/hooks/resourceCenter/useThreadResources.d.ts.map +1 -0
  68. package/lib/typescript/src/hooks/useImageAttachment.d.ts.map +1 -1
  69. package/lib/typescript/src/hooks/useMediaViewer.d.ts +5 -1
  70. package/lib/typescript/src/hooks/useMediaViewer.d.ts.map +1 -1
  71. package/lib/typescript/src/hooks/useSendAttachment.d.ts.map +1 -1
  72. package/lib/typescript/src/index.d.ts +2 -0
  73. package/lib/typescript/src/index.d.ts.map +1 -1
  74. package/lib/typescript/src/screens/MediaView/index.d.ts.map +1 -1
  75. package/lib/typescript/src/screens/ResourceCenter/FileResourceRow.d.ts +7 -0
  76. package/lib/typescript/src/screens/ResourceCenter/FileResourceRow.d.ts.map +1 -0
  77. package/lib/typescript/src/screens/ResourceCenter/GridRenderer.d.ts +14 -0
  78. package/lib/typescript/src/screens/ResourceCenter/GridRenderer.d.ts.map +1 -0
  79. package/lib/typescript/src/screens/ResourceCenter/GridThumbnail.d.ts +10 -0
  80. package/lib/typescript/src/screens/ResourceCenter/GridThumbnail.d.ts.map +1 -0
  81. package/lib/typescript/src/screens/ResourceCenter/LinkResourceRow.d.ts +8 -0
  82. package/lib/typescript/src/screens/ResourceCenter/LinkResourceRow.d.ts.map +1 -0
  83. package/lib/typescript/src/screens/ResourceCenter/ListRenderer.d.ts +16 -0
  84. package/lib/typescript/src/screens/ResourceCenter/ListRenderer.d.ts.map +1 -0
  85. package/lib/typescript/src/screens/ResourceCenter/ResourceCenterTabBar.d.ts +3 -0
  86. package/lib/typescript/src/screens/ResourceCenter/ResourceCenterTabBar.d.ts.map +1 -0
  87. package/lib/typescript/src/screens/ResourceCenter/ResourceCenterTabScene.d.ts +16 -0
  88. package/lib/typescript/src/screens/ResourceCenter/ResourceCenterTabScene.d.ts.map +1 -0
  89. package/lib/typescript/src/screens/ResourceCenter/ResourceEmptyState.d.ts +6 -0
  90. package/lib/typescript/src/screens/ResourceCenter/ResourceEmptyState.d.ts.map +1 -0
  91. package/lib/typescript/src/screens/ResourceCenter/index.d.ts +4 -0
  92. package/lib/typescript/src/screens/ResourceCenter/index.d.ts.map +1 -0
  93. package/lib/typescript/src/screens/ResourceCenter/types.d.ts +28 -0
  94. package/lib/typescript/src/screens/ResourceCenter/types.d.ts.map +1 -0
  95. package/lib/typescript/src/services/attachmentOrchestrator.d.ts.map +1 -1
  96. package/lib/typescript/src/services/resourceCenter.d.ts +9 -0
  97. package/lib/typescript/src/services/resourceCenter.d.ts.map +1 -0
  98. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
  99. package/lib/typescript/src/types/attachment.d.ts +2 -0
  100. package/lib/typescript/src/types/attachment.d.ts.map +1 -1
  101. package/lib/typescript/src/types/chat.d.ts +58 -0
  102. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  103. package/lib/typescript/src/utils/url.d.ts +7 -0
  104. package/lib/typescript/src/utils/url.d.ts.map +1 -1
  105. package/package.json +1 -1
  106. package/src/assets/images/index.ts +1 -0
  107. package/src/assets/images/resource-center-empty-box.png +0 -0
  108. package/src/components/MediaViewerModal.tsx +8 -3
  109. package/src/components/MergedImageGrid.tsx +1 -0
  110. package/src/config/api-endpoints.ts +2 -0
  111. package/src/core/notification/pushToken.ts +7 -7
  112. package/src/hooks/query-keys.ts +6 -0
  113. package/src/hooks/resourceCenter/useThreadResources.ts +124 -0
  114. package/src/hooks/useImageAttachment.ts +1 -2
  115. package/src/hooks/useMediaViewer.ts +21 -7
  116. package/src/hooks/useSendAttachment.ts +4 -1
  117. package/src/index.tsx +2 -0
  118. package/src/screens/MediaView/index.tsx +117 -54
  119. package/src/screens/ResourceCenter/FileResourceRow.tsx +99 -0
  120. package/src/screens/ResourceCenter/GridRenderer.tsx +104 -0
  121. package/src/screens/ResourceCenter/GridThumbnail.tsx +98 -0
  122. package/src/screens/ResourceCenter/LinkResourceRow.tsx +96 -0
  123. package/src/screens/ResourceCenter/ListRenderer.tsx +81 -0
  124. package/src/screens/ResourceCenter/ResourceCenterTabBar.tsx +89 -0
  125. package/src/screens/ResourceCenter/ResourceCenterTabScene.tsx +142 -0
  126. package/src/screens/ResourceCenter/ResourceEmptyState.tsx +39 -0
  127. package/src/screens/ResourceCenter/index.tsx +129 -0
  128. package/src/screens/ResourceCenter/types.ts +56 -0
  129. package/src/services/attachmentOrchestrator.ts +15 -2
  130. package/src/services/resourceCenter.ts +137 -0
  131. package/src/translation/resources/i18n.ts +7 -0
  132. package/src/types/attachment.ts +3 -0
  133. package/src/types/chat.ts +73 -0
  134. package/src/utils/url.ts +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/screens/ResourceCenter/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,0BAA0B,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,eAAO,MAAM,aAAa,EAAE,iBAAiB,EAyB5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"attachmentOrchestrator.d.ts","sourceRoot":"","sources":["../../../../src/services/attachmentOrchestrator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAW7B,yBAAiB,6BAA6B,CAAC;IAC7C,SAAsB,uBAAuB,CAC3C,WAAW,EAAE,UAAU,EAAE,EACzB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE,qBAAkD,GAC1D,OAAO,CAAC,oBAAoB,CAAC,CA6F/B;CAiNF"}
1
+ {"version":3,"file":"attachmentOrchestrator.d.ts","sourceRoot":"","sources":["../../../../src/services/attachmentOrchestrator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAY7B,yBAAiB,6BAA6B,CAAC;IAC7C,SAAsB,uBAAuB,CAC3C,WAAW,EAAE,UAAU,EAAE,EACzB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE,qBAAkD,GAC1D,OAAO,CAAC,oBAAoB,CAAC,CA8F/B;CA4NF"}
@@ -0,0 +1,9 @@
1
+ import { type DThreadResource, type DThreadResourceRequest } from '../types/chat';
2
+ export declare namespace ResourceCenterService {
3
+ const fetchThreadResources: (req: DThreadResourceRequest) => Promise<{
4
+ items: DThreadResource[];
5
+ page: number;
6
+ hasMore: boolean;
7
+ }>;
8
+ }
9
+ //# sourceMappingURL=resourceCenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceCenter.d.ts","sourceRoot":"","sources":["../../../../src/services/resourceCenter.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,eAAe,EAGpB,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AA+GvB,yBAAiB,qBAAqB,CAAC;IAC9B,MAAM,oBAAoB,GAC/B,KAAK,sBAAsB,KAC1B,OAAO,CAAC;QAAE,KAAK,EAAE,eAAe,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAWtE,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/translation/resources/i18n.ts"],"names":[],"mappings":";;;AAiGA,wBAEE"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/translation/resources/i18n.ts"],"names":[],"mappings":";;;AAwGA,wBAEE"}
@@ -1,3 +1,4 @@
1
+ import type { DChatApplicationType } from './chat';
1
2
  export type AttachmentType = 'image' | 'video' | 'file' | 'audio' | 'document';
2
3
  export interface BaseAttachment {
3
4
  id: string;
@@ -57,6 +58,7 @@ export interface AttachmentUploadStatus {
57
58
  export type BatchStrategy = 'individual' | 'merged' | 'grouped';
58
59
  export interface AttachmentSendOptions {
59
60
  strategy: BatchStrategy;
61
+ applicationType?: DChatApplicationType;
60
62
  includeCaption?: string;
61
63
  uploadConcurrency?: number;
62
64
  retryFailedUploads?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../../src/types/attachment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../../src/types/attachment.ts"],"names":[],"mappings":"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"}
@@ -209,5 +209,63 @@ export type CustomMessagePayload = {
209
209
  type: typeof CustomMessageType.Product;
210
210
  data: Record<string, unknown>;
211
211
  };
212
+ export declare enum DThreadResourceContentType {
213
+ IMAGE = 102,
214
+ VIDEO = 104,
215
+ FILE = 105,
216
+ URL_TEXT = 160
217
+ }
218
+ export interface DThreadResourceRequest {
219
+ recvID: string;
220
+ contentType: DThreadResourceContentType;
221
+ page: number;
222
+ pageSize: number;
223
+ applicationType: DChatApplicationType;
224
+ chatType: 'SINGLE' | 'GROUP';
225
+ }
226
+ /**
227
+ * Fully verified 2026-07-26 against `POST chat-service/v1/app/messages/resources`
228
+ * (staging) for all 4 content types (IMAGE/VIDEO/FILE/URL_TEXT) — see
229
+ * `ResourceCenterService.parseThreadResourceItem` for the exact raw-row → this-shape
230
+ * mapping. All field names matched the original OpenIM-elem-based assumptions exactly.
231
+ */
232
+ export interface DThreadResource {
233
+ id: string;
234
+ contentType: DThreadResourceContentType;
235
+ isRevoked: boolean;
236
+ sourceUrl?: string;
237
+ thumbnailUrl?: string;
238
+ fileName?: string;
239
+ fileSize?: number;
240
+ mimeType?: string;
241
+ linkUrl?: string;
242
+ linkTitle?: string;
243
+ linkDomain?: string;
244
+ linkImageUrl?: string;
245
+ linkDescription?: string;
246
+ duration?: number;
247
+ createdAt?: number;
248
+ }
249
+ /**
250
+ * `BaseResponse<DThreadResourceListResponse>.data` is a plain array of raw rows
251
+ * (`{ chatLog, isRevoked, tag, displayTag }`), NOT `{ items: [...] }` — corrected
252
+ * after fetching a real response (initial assumption was wrong).
253
+ */
254
+ export type DThreadResourceListResponse = DThreadResourceRawRow[];
255
+ export interface DThreadResourceRawRow {
256
+ chatLog: {
257
+ clientMsgID: string;
258
+ serverMsgID: string;
259
+ contentType: number;
260
+ content: string;
261
+ ex: string;
262
+ sendTime: number;
263
+ createTime: number;
264
+ isRevoked: boolean;
265
+ };
266
+ isRevoked: boolean;
267
+ tag: unknown;
268
+ displayTag: unknown;
269
+ }
212
270
  export {};
213
271
  //# sourceMappingURL=chat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../../src/types/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../../src/types/chat.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,10 @@
1
1
  export declare function extractUrls(text: string): string[];
2
2
  export declare function normalizeUrl(url: string): string;
3
+ /**
4
+ * The resource-center API's `urlMetadata` doesn't include a separate domain field
5
+ * (confirmed against a real staging response — only `title`/`description`/`image`/
6
+ * `url`) — derive it from the full URL instead of relying on `new URL()` (avoids a
7
+ * dependency on a global `URL` polyfill being present on every RN engine target).
8
+ */
9
+ export declare function extractDomain(url: string): string;
3
10
  //# sourceMappingURL=url.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../../src/utils/url.ts"],"names":[],"mappings":"AA+BA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAElD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAKvC"}
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../../src/utils/url.ts"],"names":[],"mappings":"AA+BA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAElD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAKvC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGjD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@droppii-org/chat-mobile",
3
- "version": "0.2.51",
3
+ "version": "0.2.52",
4
4
  "description": "Droppii chat mobile",
5
5
  "keywords": [
6
6
  "react-native",
@@ -10,6 +10,7 @@ const Images = {
10
10
  TAG_MALL: require('./tag_mall.png'),
11
11
  ICON_DROPPII: require('./icon_droppii.png'),
12
12
  BTN_RESEND: require('./btn_resend.png'),
13
+ RESOURCE_CENTER_EMPTY_BOX: require('./resource-center-empty-box.png'),
13
14
  };
14
15
 
15
16
  export default Images;
@@ -4,7 +4,11 @@ import MediaViewerScreen from '../screens/MediaView';
4
4
  import { useMediaViewer, type MediaItem } from '../hooks/useMediaViewer';
5
5
 
6
6
  export interface MediaViewerModalHandle {
7
- show: (items: MediaItem[], index?: number) => void;
7
+ show: (
8
+ items: MediaItem[],
9
+ index?: number,
10
+ options?: { pagination?: boolean }
11
+ ) => void;
8
12
  }
9
13
 
10
14
  interface MediaViewerModalProps {
@@ -15,7 +19,8 @@ export const MediaViewerModal = forwardRef<
15
19
  MediaViewerModalHandle,
16
20
  MediaViewerModalProps
17
21
  >(({ onDismiss }, ref) => {
18
- const { visible, mediaList, initIndex, show, hide } = useMediaViewer();
22
+ const { visible, mediaList, initIndex, pagination, show, hide } =
23
+ useMediaViewer();
19
24
 
20
25
  // Expose show method to parent via ref
21
26
  useImperativeHandle(
@@ -53,7 +58,7 @@ export const MediaViewerModal = forwardRef<
53
58
  <MediaViewerScreen
54
59
  images={images}
55
60
  initIndex={initIndex}
56
- pagination={images.length > 1}
61
+ pagination={pagination && images.length > 1}
57
62
  onDismiss={handleDismiss}
58
63
  download
59
64
  />
@@ -190,6 +190,7 @@ export const MergedImageGrid = memo(
190
190
  width={cellSize}
191
191
  height={cellHeight}
192
192
  style={styles.image}
193
+ transition="fade"
193
194
  onLoadEnd={() => handleImageLoadEnd(index)}
194
195
  />
195
196
 
@@ -20,6 +20,7 @@ export interface ApiEndpoints {
20
20
  stickerCategories: string;
21
21
  stickersByCategory: string;
22
22
  stickerHistory: string;
23
+ messagesResources: string;
23
24
  }
24
25
 
25
26
  const DEFAULT_ENDPOINTS: ApiEndpoints = {
@@ -31,6 +32,7 @@ const DEFAULT_ENDPOINTS: ApiEndpoints = {
31
32
  stickerCategories: '/chat-service/v1/app/sticker-categories',
32
33
  stickersByCategory: '/chat-service/v1/app/sticker-categories',
33
34
  stickerHistory: '/chat-service/v1/app/stickers/history',
35
+ messagesResources: '/chat-service/v1/app/messages/resources',
34
36
  };
35
37
 
36
38
  let endpoints: ApiEndpoints = { ...DEFAULT_ENDPOINTS };
@@ -16,13 +16,13 @@ const uploadFcmToken = async (
16
16
  project: DChatProject,
17
17
  expireTime: number
18
18
  ): Promise<void> => {
19
- console.log('[chat-mobile] uploadFcmToken', {
20
- platformID,
21
- fcmToken,
22
- account: userID,
23
- project,
24
- expireTime,
25
- });
19
+ // console.log('[chat-mobile] uploadFcmToken', {
20
+ // platformID,
21
+ // fcmToken,
22
+ // account: userID,
23
+ // project,
24
+ // expireTime,
25
+ // });
26
26
  const token = useUserStore.getState().token;
27
27
  if (!token) {
28
28
  console.warn(
@@ -44,3 +44,9 @@ export const stickerQueryKeys = {
44
44
  [...stickerQueryKeys.all, 'category', categoryId] as const,
45
45
  recent: () => [...stickerQueryKeys.all, 'recent'] as const,
46
46
  };
47
+
48
+ export const resourceCenterQueryKeys = {
49
+ all: ['threadResources'] as const,
50
+ byType: (recvID: string, contentType: number) =>
51
+ [...resourceCenterQueryKeys.all, recvID, contentType] as const,
52
+ };
@@ -0,0 +1,124 @@
1
+ import { useInfiniteQuery, useQueryClient } from '@tanstack/react-query';
2
+ import { useCallback, useMemo, useState } from 'react';
3
+ import { resourceCenterQueryKeys } from '../query-keys';
4
+ import { useChatContext } from '../../context';
5
+ import { ResourceCenterService } from '../../services/resourceCenter';
6
+ import type {
7
+ DThreadResource,
8
+ DThreadResourceContentType,
9
+ } from '../../types/chat';
10
+
11
+ const PAGE_SIZE = 15;
12
+
13
+ /**
14
+ * U5 resolved against a real staging response: revoked (recalled) messages ARE
15
+ * still returned by `/messages/resources` with `isRevoked: true` — BE does NOT
16
+ * pre-filter them. This client-side check is load-bearing, not defense-in-depth.
17
+ * `deleted`/`hidden` flags weren't observed in the tested rows — if BE adds them
18
+ * later, extend this predicate.
19
+ */
20
+ const isVisibleResource = (item: DThreadResource): boolean => !item.isRevoked;
21
+
22
+ export const useThreadResources = (
23
+ recvID: string,
24
+ contentType: DThreadResourceContentType,
25
+ chatType: 'SINGLE' | 'GROUP'
26
+ ) => {
27
+ const { applicationType } = useChatContext();
28
+ const queryClient = useQueryClient();
29
+ const queryKey = resourceCenterQueryKeys.byType(recvID, contentType);
30
+
31
+ const {
32
+ data,
33
+ isLoading,
34
+ isError,
35
+ hasNextPage,
36
+ fetchNextPage,
37
+ isFetchingNextPage,
38
+ refetch,
39
+ } = useInfiniteQuery({
40
+ queryKey,
41
+ // `initialPageParam` is a react-query v5-only option — this library's
42
+ // `@tanstack/react-query` peer dep is unpinned (`"*"`), so a host app on v4
43
+ // (confirmed: biz-mobile pins 4.40.1) silently ignores this option and the
44
+ // first fetch's `pageParam` comes back `undefined`, not `1`. The `?? 1`
45
+ // fallback below is what actually makes page 1 work under v4 — do not remove
46
+ // it even though it looks redundant next to `initialPageParam`.
47
+ initialPageParam: 1,
48
+ queryFn: ({ pageParam }) =>
49
+ ResourceCenterService.fetchThreadResources({
50
+ recvID,
51
+ contentType,
52
+ chatType,
53
+ page: pageParam ?? 1,
54
+ pageSize: PAGE_SIZE,
55
+ applicationType,
56
+ }),
57
+ getNextPageParam: (lastPage) =>
58
+ lastPage.hasMore ? lastPage.page + 1 : undefined,
59
+ enabled: !!recvID && !!chatType,
60
+ });
61
+
62
+ // De-dupe by `id` across pages — offset pagination (`page`/`pageSize`) can hand
63
+ // back the same item twice if new messages land in the thread between page
64
+ // fetches (classic offset-pagination drift), which LegendList's `keyExtractor`
65
+ // requires be unique or it throws ("overlapping key" / missing items & gaps).
66
+ const items = useMemo(() => {
67
+ const seen = new Set<string>();
68
+ const deduped: DThreadResource[] = [];
69
+ for (const page of data?.pages ?? []) {
70
+ for (const item of page.items) {
71
+ if (seen.has(item.id)) continue;
72
+ seen.add(item.id);
73
+ if (isVisibleResource(item)) deduped.push(item);
74
+ }
75
+ }
76
+ return deduped;
77
+ }, [data]);
78
+
79
+ // Pull-to-refresh should (a) only re-fetch page 1, not every already-loaded
80
+ // page, and (b) keep the currently-shown items visible while that fetch is in
81
+ // flight — no flash to empty/loading. Neither `refetch()` nor `resetQueries()`
82
+ // give us both:
83
+ // - `refetch()` on an infinite query re-fetches ALL loaded pages (wasteful).
84
+ // - `resetQueries()` clears cached data FIRST, then fetches — causes exactly
85
+ // the empty-state flash we don't want.
86
+ // - `refetch({ refetchPage })` (page-1-only) is a react-query v4-only option,
87
+ // removed in v5 — another cross-version footgun like `initialPageParam`.
88
+ // So: fetch page 1 directly via the service, then splice it into the cache
89
+ // with `setQueryData` — `data`/`items` never go empty in between, and exactly
90
+ // one request is made regardless of how many pages were already loaded.
91
+ const [isRefreshingFirstPage, setIsRefreshingFirstPage] = useState(false);
92
+
93
+ const refreshFirstPage = useCallback(async () => {
94
+ setIsRefreshingFirstPage(true);
95
+ try {
96
+ const firstPage = await ResourceCenterService.fetchThreadResources({
97
+ recvID,
98
+ contentType,
99
+ chatType,
100
+ page: 1,
101
+ pageSize: PAGE_SIZE,
102
+ applicationType,
103
+ });
104
+ queryClient.setQueryData(queryKey, {
105
+ pages: [firstPage],
106
+ pageParams: [1],
107
+ });
108
+ } finally {
109
+ setIsRefreshingFirstPage(false);
110
+ }
111
+ }, [queryClient, queryKey, recvID, contentType, chatType, applicationType]);
112
+
113
+ return {
114
+ items,
115
+ isLoading,
116
+ isError,
117
+ hasMore: !!hasNextPage,
118
+ loadMore: fetchNextPage,
119
+ isFetchingNextPage,
120
+ isRefetching: isRefreshingFirstPage,
121
+ refetch,
122
+ refreshFirstPage,
123
+ };
124
+ };
@@ -171,8 +171,7 @@ export const useImageAttachment = (): UseImageAttachmentReturn => {
171
171
  const maxSize = isVideoFromPicker(item)
172
172
  ? UPLOAD_LIMITS.video
173
173
  : UPLOAD_LIMITS.image;
174
- console.log('maxSize', maxSize);
175
- console.log('item.size', item.size);
174
+
176
175
  return (item.size || 0) <= maxSize;
177
176
  };
178
177
 
@@ -5,11 +5,20 @@ export interface MediaItem {
5
5
  isVideo?: boolean;
6
6
  }
7
7
 
8
+ export interface ShowMediaViewerOptions {
9
+ pagination?: boolean;
10
+ }
11
+
8
12
  export interface UseMediaViewerReturn {
9
13
  visible: boolean;
10
14
  mediaList: MediaItem[];
11
15
  initIndex: number;
12
- show: (items: MediaItem[], index?: number) => void;
16
+ pagination: boolean;
17
+ show: (
18
+ items: MediaItem[],
19
+ index?: number,
20
+ options?: ShowMediaViewerOptions
21
+ ) => void;
13
22
  hide: () => void;
14
23
  }
15
24
 
@@ -17,16 +26,21 @@ export function useMediaViewer(): UseMediaViewerReturn {
17
26
  const [visible, setVisible] = useState(false);
18
27
  const [mediaList, setMediaList] = useState<MediaItem[]>([]);
19
28
  const [initIndex, setInitIndex] = useState(0);
29
+ const [pagination, setPagination] = useState(true);
20
30
 
21
- const show = useCallback((items: MediaItem[], index = 0) => {
22
- setMediaList(items);
23
- setInitIndex(index);
24
- setVisible(true);
25
- }, []);
31
+ const show = useCallback(
32
+ (items: MediaItem[], index = 0, options?: ShowMediaViewerOptions) => {
33
+ setMediaList(items);
34
+ setInitIndex(index);
35
+ setPagination(options?.pagination ?? true);
36
+ setVisible(true);
37
+ },
38
+ []
39
+ );
26
40
 
27
41
  const hide = useCallback(() => {
28
42
  setVisible(false);
29
43
  }, []);
30
44
 
31
- return { visible, mediaList, initIndex, show, hide };
45
+ return { visible, mediaList, initIndex, pagination, show, hide };
32
46
  }
@@ -2,6 +2,7 @@ import { useCallback, useState } from 'react';
2
2
  import { AttachmentOrchestratorService } from '../services/attachmentOrchestrator';
3
3
  import type { Attachment, AttachmentSendOptions } from '../types/attachment';
4
4
  import { getMimeType } from '../utils/imageUtils';
5
+ import { useChatContext } from '../context';
5
6
 
6
7
  export interface ImageItem {
7
8
  type: 'image';
@@ -70,6 +71,7 @@ export interface UseSendAttachmentReturn {
70
71
  export function useSendAttachment(): UseSendAttachmentReturn {
71
72
  const [isLoading, setIsLoading] = useState(false);
72
73
  const [error, setError] = useState<string | null>(null);
74
+ const applicationType = useChatContext().applicationType;
73
75
 
74
76
  const send = useCallback(
75
77
  async (
@@ -242,6 +244,7 @@ export function useSendAttachment(): UseSendAttachmentReturn {
242
244
  uploadedUrls,
243
245
  {
244
246
  strategy: 'individual',
247
+ applicationType,
245
248
  ...options,
246
249
  }
247
250
  );
@@ -278,7 +281,7 @@ export function useSendAttachment(): UseSendAttachmentReturn {
278
281
  console.log('[useSendAttachment] Finished');
279
282
  }
280
283
  },
281
- []
284
+ [applicationType]
282
285
  );
283
286
 
284
287
  const clearError = useCallback(() => setError(null), []);
package/src/index.tsx CHANGED
@@ -28,6 +28,8 @@ export { AttachmentPreview } from './components/AttachmentPreview';
28
28
  export { MediaViewerModal } from './components/MediaViewerModal';
29
29
  export { Inbox } from './screens/inbox';
30
30
  export { default as MediaViewerScreen } from './screens/MediaView';
31
+ export { default as ResourceCenterScreen } from './screens/ResourceCenter';
32
+ export type { ResourceCenterScreenProps } from './screens/ResourceCenter/types';
31
33
  export * from './screens/chat-detail';
32
34
 
33
35
  export type {