@droppii-org/chat-mobile 0.2.23 → 0.2.24
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.
- package/lib/module/config/uploadLimits.js +13 -0
- package/lib/module/config/uploadLimits.js.map +1 -0
- package/lib/module/hooks/useChatCompose.js +142 -0
- package/lib/module/hooks/useChatCompose.js.map +1 -0
- package/lib/module/hooks/useImageAttachment.js +71 -151
- package/lib/module/hooks/useImageAttachment.js.map +1 -1
- package/lib/module/hooks/useSendAttachment.js +2 -2
- package/lib/module/hooks/useSendAttachment.js.map +1 -1
- package/lib/module/hooks/useVideoAttachment.js +4 -4
- package/lib/module/hooks/useVideoAttachment.js.map +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatComposer.js +50 -185
- package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatDetail.js +16 -137
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
- package/lib/module/screens/chat-detail/index.js +0 -1
- package/lib/module/screens/chat-detail/index.js.map +1 -1
- package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js +2 -2
- package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js.map +1 -1
- package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js +3 -3
- package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js.map +1 -1
- package/lib/module/services/attachmentHandlers/videoAttachmentHandler.js +2 -1
- package/lib/module/services/attachmentHandlers/videoAttachmentHandler.js.map +1 -1
- package/lib/module/services/attachmentOrchestrator.js +6 -5
- package/lib/module/services/attachmentOrchestrator.js.map +1 -1
- package/lib/module/utils/imageUtils.js +3 -3
- package/lib/module/utils/imageUtils.js.map +1 -1
- package/lib/module/utils/pLimit.js +19 -0
- package/lib/module/utils/pLimit.js.map +1 -0
- package/lib/module/utils/videoThumbnail.js +8 -3
- package/lib/module/utils/videoThumbnail.js.map +1 -1
- package/lib/module/utils/videoThumbnailUpload.js +76 -0
- package/lib/module/utils/videoThumbnailUpload.js.map +1 -0
- package/lib/typescript/src/config/uploadLimits.d.ts +7 -0
- package/lib/typescript/src/config/uploadLimits.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useChatCompose.d.ts +27 -0
- package/lib/typescript/src/hooks/useChatCompose.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useImageAttachment.d.ts +2 -2
- package/lib/typescript/src/hooks/useImageAttachment.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useSendAttachment.d.ts +1 -1
- package/lib/typescript/src/hooks/useSendAttachment.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useVideoAttachment.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +0 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts +5 -2
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/index.d.ts +0 -2
- package/lib/typescript/src/screens/chat-detail/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/types.d.ts +1 -35
- package/lib/typescript/src/screens/chat-detail/types.d.ts.map +1 -1
- package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts.map +1 -1
- package/lib/typescript/src/services/attachmentHandlers/imageAttachmentHandler.d.ts.map +1 -1
- package/lib/typescript/src/services/attachmentHandlers/videoAttachmentHandler.d.ts.map +1 -1
- package/lib/typescript/src/services/attachmentOrchestrator.d.ts +1 -1
- package/lib/typescript/src/services/attachmentOrchestrator.d.ts.map +1 -1
- package/lib/typescript/src/utils/imageUtils.d.ts.map +1 -1
- package/lib/typescript/src/utils/pLimit.d.ts +6 -0
- package/lib/typescript/src/utils/pLimit.d.ts.map +1 -0
- package/lib/typescript/src/utils/videoThumbnail.d.ts.map +1 -1
- package/lib/typescript/src/utils/videoThumbnailUpload.d.ts +11 -0
- package/lib/typescript/src/utils/videoThumbnailUpload.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/config/uploadLimits.ts +11 -0
- package/src/hooks/useChatCompose.ts +186 -0
- package/src/hooks/useImageAttachment.ts +110 -197
- package/src/hooks/useSendAttachment.ts +3 -6
- package/src/hooks/useVideoAttachment.ts +4 -4
- package/src/index.tsx +1 -5
- package/src/screens/chat-detail/ChatComposer.tsx +88 -240
- package/src/screens/chat-detail/ChatDetail.tsx +24 -195
- package/src/screens/chat-detail/index.ts +1 -5
- package/src/screens/chat-detail/types.ts +1 -38
- package/src/services/attachmentHandlers/fileAttachmentHandler.ts +3 -2
- package/src/services/attachmentHandlers/imageAttachmentHandler.ts +6 -3
- package/src/services/attachmentHandlers/videoAttachmentHandler.ts +2 -1
- package/src/services/attachmentOrchestrator.ts +6 -8
- package/src/utils/imageUtils.ts +3 -4
- package/src/utils/pLimit.ts +20 -0
- package/src/utils/videoThumbnail.ts +10 -3
- package/src/utils/videoThumbnailUpload.ts +103 -0
- package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js +0 -288
- package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js.map +0 -1
- package/lib/module/utils/giftedChatMessage.js +0 -90
- package/lib/module/utils/giftedChatMessage.js.map +0 -1
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts +0 -26
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts.map +0 -1
- package/lib/typescript/src/utils/giftedChatMessage.d.ts +0 -10
- package/lib/typescript/src/utils/giftedChatMessage.d.ts.map +0 -1
- package/src/screens/chat-detail/hooks/useAttachmentSendHandler.ts +0 -386
- package/src/utils/giftedChatMessage.ts +0 -137
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import RNFS from 'react-native-fs';
|
|
4
|
+
import VideoThumbnailUtil from "./videoThumbnail.js";
|
|
5
|
+
import { ImageUploadAPI } from "../services/imageUpload.js";
|
|
6
|
+
import UIUtils from "./ui.js";
|
|
7
|
+
export async function generateAndUploadVideoThumbnails(videos) {
|
|
8
|
+
const thumbnails = {};
|
|
9
|
+
const failed = [];
|
|
10
|
+
for (let idx = 0; idx < videos.length; idx++) {
|
|
11
|
+
const vidItem = videos[idx];
|
|
12
|
+
// Key by uploadedUrl so callers can look up by the same value.
|
|
13
|
+
const videoId = vidItem.uploadedUrl || `video-${idx}`;
|
|
14
|
+
let cachedVideoPath = null;
|
|
15
|
+
try {
|
|
16
|
+
let videoDuration = vidItem.image.duration ?? 0;
|
|
17
|
+
if (videoDuration <= 0 || videoDuration > 3600000) {
|
|
18
|
+
videoDuration = 5000;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Clamp upper bound to avoid negative timeMs on clips shorter than 1s.
|
|
22
|
+
const timeMs = Math.min(Math.max(1000, Math.floor(videoDuration * 0.35)), Math.max(0, videoDuration - 1000));
|
|
23
|
+
|
|
24
|
+
// Copy the picker-returned path to CachesDirectory before generating a
|
|
25
|
+
// thumbnail. On iOS the picker can return Photos-library paths that
|
|
26
|
+
// react-native-create-thumbnail cannot open directly; a copy to a
|
|
27
|
+
// stable app-owned location is required.
|
|
28
|
+
const filename = vidItem.image.filename || 'video.mp4';
|
|
29
|
+
const ext = filename.split('.').pop() || 'mp4';
|
|
30
|
+
const cachedFileName = `thumb-src-${idx}-${Date.now()}.${ext}`;
|
|
31
|
+
cachedVideoPath = `${RNFS.CachesDirectoryPath}/${cachedFileName}`;
|
|
32
|
+
await RNFS.copyFile(vidItem.image.path, cachedVideoPath);
|
|
33
|
+
const thumbnail = await VideoThumbnailUtil.generateThumbnail(cachedVideoPath, {
|
|
34
|
+
time: timeMs,
|
|
35
|
+
quality: 80,
|
|
36
|
+
cacheId: `thumb-${idx}-${Date.now()}`
|
|
37
|
+
});
|
|
38
|
+
if (!thumbnail) throw new Error('Failed to generate thumbnail');
|
|
39
|
+
const baseName = filename.split('.')[0] || `video-${idx}`;
|
|
40
|
+
const uploaded = await ImageUploadAPI.uploadImageFile({
|
|
41
|
+
path: thumbnail.path,
|
|
42
|
+
filename: `thumb-${baseName}.jpg`,
|
|
43
|
+
size: 0,
|
|
44
|
+
width: thumbnail.width || 320,
|
|
45
|
+
height: thumbnail.height || 180,
|
|
46
|
+
mime: 'image/jpeg'
|
|
47
|
+
}, () => {});
|
|
48
|
+
if (!uploaded?.url) throw new Error('No thumbnail URL returned');
|
|
49
|
+
thumbnails[videoId] = {
|
|
50
|
+
url: uploaded.url,
|
|
51
|
+
size: uploaded.size || 0
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// Clean up the local thumbnail file after a successful upload.
|
|
55
|
+
VideoThumbnailUtil.cleanupThumbnail(thumbnail.path).catch(err => console.warn('[videoThumbnailUpload] Thumbnail cleanup failed:', err));
|
|
56
|
+
} catch (error) {
|
|
57
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
58
|
+
console.error('[videoThumbnailUpload] Failed for video:', idx, msg);
|
|
59
|
+
failed.push(vidItem.image.filename || `video-${idx}`);
|
|
60
|
+
// Do NOT insert a poison entry — callers treat a missing key as "no thumbnail".
|
|
61
|
+
} finally {
|
|
62
|
+
if (cachedVideoPath) {
|
|
63
|
+
RNFS.unlink(cachedVideoPath).catch(err => console.warn('[videoThumbnailUpload] Temp copy cleanup failed:', err));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (failed.length > 0) {
|
|
68
|
+
UIUtils.toast.open({
|
|
69
|
+
title: 'Thumbnail Generation Failed',
|
|
70
|
+
message: `Failed for: ${failed.join(', ')}. Videos will be sent without thumbnails.`,
|
|
71
|
+
theme: 'warning'
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return thumbnails;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=videoThumbnailUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["RNFS","VideoThumbnailUtil","ImageUploadAPI","UIUtils","generateAndUploadVideoThumbnails","videos","thumbnails","failed","idx","length","vidItem","videoId","uploadedUrl","cachedVideoPath","videoDuration","image","duration","timeMs","Math","min","max","floor","filename","ext","split","pop","cachedFileName","Date","now","CachesDirectoryPath","copyFile","path","thumbnail","generateThumbnail","time","quality","cacheId","Error","baseName","uploaded","uploadImageFile","size","width","height","mime","url","cleanupThumbnail","catch","err","console","warn","error","msg","message","String","push","unlink","toast","open","title","join","theme"],"sourceRoot":"../../../src","sources":["utils/videoThumbnailUpload.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadLimits.d.ts","sourceRoot":"","sources":["../../../../src/config/uploadLimits.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAIX,eAAO,MAAM,kBAAkB,IAAI,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ImageWithUploadStatus } from './useImageAttachment';
|
|
2
|
+
export declare function useChatCompose(): {
|
|
3
|
+
text: string;
|
|
4
|
+
setText: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
5
|
+
selectedImages: ImageWithUploadStatus[];
|
|
6
|
+
selectedFiles: import("./useFileAttachment").FileWithUploadStatus[];
|
|
7
|
+
isImagePreviewVisible: boolean;
|
|
8
|
+
isFilePreviewVisible: boolean;
|
|
9
|
+
addImages: (multipleMode?: boolean) => Promise<void>;
|
|
10
|
+
addFiles: () => Promise<void>;
|
|
11
|
+
removeImage: (index: number) => void;
|
|
12
|
+
removeFile: (id: string) => void;
|
|
13
|
+
showLinkPreview: boolean;
|
|
14
|
+
urlMetadata: {
|
|
15
|
+
url: string;
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
image?: string;
|
|
19
|
+
};
|
|
20
|
+
isMetadataLoading: boolean;
|
|
21
|
+
dismissPreview: () => void;
|
|
22
|
+
isUploading: boolean;
|
|
23
|
+
canSend: boolean;
|
|
24
|
+
send: () => Promise<void>;
|
|
25
|
+
clearAll: () => void;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=useChatCompose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChatCompose.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useChatCompose.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAW9B,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;EAyK7B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ImageOrVideo as PickedImage } from 'react-native-image-crop-picker';
|
|
2
2
|
export interface ImageWithUploadStatus {
|
|
3
3
|
image: PickedImage;
|
|
4
4
|
uploadProgress: number;
|
|
@@ -11,7 +11,7 @@ export interface ImageWithUploadStatus {
|
|
|
11
11
|
export interface UseImageAttachmentReturn {
|
|
12
12
|
selectedImages: ImageWithUploadStatus[];
|
|
13
13
|
isImagePreviewVisible: boolean;
|
|
14
|
-
handleImageAttach: () => Promise<void>;
|
|
14
|
+
handleImageAttach: (multipleMode?: boolean) => Promise<void>;
|
|
15
15
|
handleImageRemove: (index: number) => void;
|
|
16
16
|
clearAllImages: () => void;
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useImageAttachment.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useImageAttachment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"useImageAttachment.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useImageAttachment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,IAAI,WAAW,EAE5B,MAAM,gCAAgC,CAAC;AAUxC,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,WAAW,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,qBAAqB,EAAE,CAAC;IACxC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,kBAAkB,QAAO,wBAqNrC,CAAC"}
|
|
@@ -46,7 +46,7 @@ export type AttachmentItem = ImageItem | VideoItem | FileItem;
|
|
|
46
46
|
export interface UseSendAttachmentReturn {
|
|
47
47
|
isLoading: boolean;
|
|
48
48
|
error: string | null;
|
|
49
|
-
send(items: AttachmentItem[], options?: Partial<AttachmentSendOptions
|
|
49
|
+
send(items: AttachmentItem[], options?: Partial<AttachmentSendOptions>): Promise<boolean>;
|
|
50
50
|
clearError(): void;
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSendAttachment.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useSendAttachment.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CACF,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"useSendAttachment.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useSendAttachment.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CACF,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACvC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,UAAU,IAAI,IAAI,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,uBAAuB,CA8N3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVideoAttachment.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useVideoAttachment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useVideoAttachment.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useVideoAttachment.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,qBAAqB;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,qBAAqB,EAAE,CAAC;IACxC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,kBAAkB,QAAO,wBAsSrC,CAAC"}
|
|
@@ -23,7 +23,5 @@ export { Inbox } from './screens/inbox';
|
|
|
23
23
|
export { default as MediaViewerScreen } from './screens/MediaView';
|
|
24
24
|
export { ChatDetail, ChatDetailHeader, ChatComposer, ChatQuickActions, ChatAttachmentPanel, DEFAULT_Chat_QUICK_ACTIONS, DEFAULT_ATTACHMENT_ACTIONS, } from './screens/chat-detail';
|
|
25
25
|
export type { DChatActionItem, DChatActionIconProvider, DChatQuickAction, DChatAttachmentAction, ChatDetailProps, ChatDetailHeaderProps, ChatListProps, ChatComposerProps, ChatQuickActionsProps, ChatQuickActionsRenderParams, ChatAttachmentPanelProps, } from './screens/chat-detail';
|
|
26
|
-
export type { DGiftedChatMessage } from './utils/giftedChatMessage';
|
|
27
|
-
export { mapOpenIMMessageToGiftedChat, mapOpenIMMessagesToGiftedChat, } from './utils/giftedChatMessage';
|
|
28
26
|
export type { PeerType } from '@droppii/openim-rn-client-sdk';
|
|
29
27
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
interface ChatComposerInternalProps {
|
|
2
|
+
isEmptyMessage?: boolean;
|
|
3
|
+
}
|
|
4
|
+
export declare const ChatComposer: import("react").MemoExoticComponent<({ isEmptyMessage }: ChatComposerInternalProps) => import("react").JSX.Element>;
|
|
5
|
+
export {};
|
|
3
6
|
//# sourceMappingURL=ChatComposer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatComposer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChatComposer.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatComposer.tsx"],"names":[],"mappings":"AAmCA,UAAU,yBAAyB;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,YAAY,2DACM,yBAAyB,iCAkPvD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ChatDetailProps } from './types';
|
|
2
|
-
declare const ChatDetail: import("react").MemoExoticComponent<({ conversationId, enabled, title, subtitle, avatarUri, avatarFullName, showAddMember, getSubtitle, onBack, onPressSearch, onPressAddMember, onPressMenu, onPressAvatar,
|
|
2
|
+
declare const ChatDetail: import("react").MemoExoticComponent<({ conversationId, enabled, title, subtitle, avatarUri, avatarFullName, showAddMember, getSubtitle, onBack, onPressSearch, onPressAddMember, onPressMenu, onPressAvatar, onPressUrl, customMessageItemFactory, }: ChatDetailProps) => import("react").JSX.Element>;
|
|
3
3
|
export default ChatDetail;
|
|
4
4
|
//# sourceMappingURL=ChatDetail.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatDetail.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatDetail.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChatDetail.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/ChatDetail.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI/C,QAAA,MAAM,UAAU,wPAiBX,eAAe,iCAoGnB,CAAC;AAQF,eAAe,UAAU,CAAC"}
|
|
@@ -6,7 +6,5 @@ export { ChatAttachmentPanel } from './ChatAttachmentPanel';
|
|
|
6
6
|
export { DEFAULT_Chat_QUICK_ACTIONS, DEFAULT_ATTACHMENT_ACTIONS, DEFAULT_ATTACHMENT_PANEL_HEIGHT, } from './constants';
|
|
7
7
|
export { getConversationTitle, getConversationAvatarUri, getConversationSubtitle, shouldShowAddMember, } from './conversationHeader.utils';
|
|
8
8
|
export type { DChatActionItem, DChatActionIconProvider, DChatQuickAction, DChatAttachmentAction, ChatDetailProps, ChatDetailHeaderProps, ChatListProps, ChatComposerProps, ChatQuickActionsProps, ChatQuickActionsRenderParams, ChatAttachmentPanelProps, } from './types';
|
|
9
|
-
export type { DGiftedChatMessage } from '../../utils/giftedChatMessage';
|
|
10
9
|
export { DChatMessageType, CUSTOM_MESSAGE_DATA_TYPE, } from '../../types/message';
|
|
11
|
-
export { mapOpenIMMessageToGiftedChat, mapOpenIMMessagesToGiftedChat, } from '../../utils/giftedChatMessage';
|
|
12
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
import type { MediaItem } from '../../hooks/useMediaViewer';
|
|
3
3
|
import type { DMessageItem } from '../../types/chat';
|
|
4
|
-
import type { IUrlMetadata } from '../../types/common';
|
|
5
4
|
import type { ConversationItem } from '@droppii/openim-rn-client-sdk';
|
|
6
5
|
export type DChatActionIconProvider = 'MaterialCommunityIcons' | 'DroppiiNew';
|
|
7
6
|
export interface DChatActionItem {
|
|
@@ -46,23 +45,7 @@ export interface ChatAttachmentPanelProps {
|
|
|
46
45
|
renderAction?: (action: DChatAttachmentAction, onPress: () => void) => ReactNode;
|
|
47
46
|
}
|
|
48
47
|
export interface ChatComposerProps {
|
|
49
|
-
|
|
50
|
-
placeholder?: string;
|
|
51
|
-
onChangeText?: (text?: string) => void;
|
|
52
|
-
onSend?: (urlMetadata?: IUrlMetadata) => void;
|
|
53
|
-
onPressAttach?: () => void;
|
|
54
|
-
onPressEmoji?: () => void;
|
|
55
|
-
onMessageSent?: (message: DMessageItem) => void;
|
|
56
|
-
showQuickActions?: boolean;
|
|
57
|
-
quickActions?: DChatQuickAction[];
|
|
58
|
-
attachmentActions?: DChatAttachmentAction[];
|
|
59
|
-
onQuickActionPress?: (action: DChatQuickAction) => void;
|
|
60
|
-
onAttachmentAction?: (action: DChatAttachmentAction) => void;
|
|
61
|
-
renderQuickAction?: ChatQuickActionsProps['renderAction'];
|
|
62
|
-
renderQuickActions?: ChatQuickActionsProps['renderQuickActions'];
|
|
63
|
-
renderAttachmentAction?: ChatAttachmentPanelProps['renderAction'];
|
|
64
|
-
attachmentColumns?: number;
|
|
65
|
-
isEmptyMessage: boolean;
|
|
48
|
+
isEmptyMessage?: boolean;
|
|
66
49
|
}
|
|
67
50
|
export interface ChatListProps {
|
|
68
51
|
messages?: DMessageItem[];
|
|
@@ -87,23 +70,6 @@ export interface ChatDetailProps extends Omit<ChatDetailHeaderProps, 'title' | '
|
|
|
87
70
|
avatarFullName?: string;
|
|
88
71
|
showAddMember?: boolean;
|
|
89
72
|
getSubtitle?: (conversation: ConversationItem) => string | undefined;
|
|
90
|
-
renderChat?: (item: DMessageItem) => ReactNode;
|
|
91
|
-
showQuickActions?: boolean;
|
|
92
|
-
showAttachmentActions?: boolean;
|
|
93
|
-
quickActions?: DChatQuickAction[];
|
|
94
|
-
getQuickActions?: (conversation: ConversationItem) => DChatQuickAction[] | undefined;
|
|
95
|
-
attachmentActions?: DChatAttachmentAction[];
|
|
96
|
-
inputPlaceholder?: string;
|
|
97
|
-
onChangeInput?: (text: string) => void;
|
|
98
|
-
onSend?: () => void;
|
|
99
|
-
onPressAttach?: () => void;
|
|
100
|
-
onPressEmoji?: () => void;
|
|
101
|
-
onQuickActionPress?: (action: DChatQuickAction) => void;
|
|
102
|
-
onAttachmentAction?: (action: DChatAttachmentAction) => void;
|
|
103
|
-
renderQuickAction?: ChatQuickActionsProps['renderAction'];
|
|
104
|
-
renderQuickActions?: ChatQuickActionsProps['renderQuickActions'];
|
|
105
|
-
renderAttachmentAction?: ChatAttachmentPanelProps['renderAction'];
|
|
106
|
-
attachmentColumns?: number;
|
|
107
73
|
onPressUrl?: (url: string) => void;
|
|
108
74
|
customMessageItemFactory?: (item: DMessageItem) => ReactNode;
|
|
109
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/screens/chat-detail/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileAttachmentHandler.d.ts","sourceRoot":"","sources":["../../../../../src/services/attachmentHandlers/fileAttachmentHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"fileAttachmentHandler.d.ts","sourceRoot":"","sources":["../../../../../src/services/attachmentHandlers/fileAttachmentHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,eAAO,MAAM,aAAa,QAAqB,CAAC;AAEhD,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,QAAQ,CACN,UAAU,EAAE,UAAU,GACrB;QAAE,KAAK,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAkC/C,YAAY,CAChB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;CAsBrB;;AAED,wBAA2C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageAttachmentHandler.d.ts","sourceRoot":"","sources":["../../../../../src/services/attachmentHandlers/imageAttachmentHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"imageAttachmentHandler.d.ts","sourceRoot":"","sources":["../../../../../src/services/attachmentHandlers/imageAttachmentHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAIxE,eAAO,MAAM,sBAAsB,EAAE,kBA6DpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoAttachmentHandler.d.ts","sourceRoot":"","sources":["../../../../../src/services/attachmentHandlers/videoAttachmentHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"videoAttachmentHandler.d.ts","sourceRoot":"","sources":["../../../../../src/services/attachmentHandlers/videoAttachmentHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAuB;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAoC;IAE3E,QAAQ,CACN,UAAU,EAAE,UAAU,GACrB;QAAE,KAAK,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAqC/C,YAAY,CAChB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC;CA8CzB;;AAED,wBAA4C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Attachment, AttachmentSendOptions, AttachmentSendResult } from '../types/attachment';
|
|
2
2
|
export declare namespace AttachmentOrchestratorService {
|
|
3
|
-
function sendPreparedAttachments(attachments: Attachment[], uploadedUrls: Record<string, string>, options?: AttachmentSendOptions
|
|
3
|
+
function sendPreparedAttachments(attachments: Attachment[], uploadedUrls: Record<string, string>, options?: AttachmentSendOptions): Promise<AttachmentSendResult>;
|
|
4
4
|
}
|
|
5
5
|
//# sourceMappingURL=attachmentOrchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachmentOrchestrator.d.ts","sourceRoot":"","sources":["../../../../src/services/attachmentOrchestrator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"attachmentOrchestrator.d.ts","sourceRoot":"","sources":["../../../../src/services/attachmentOrchestrator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAS7B,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;CAwLF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageUtils.d.ts","sourceRoot":"","sources":["../../../../src/utils/imageUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"imageUtils.d.ts","sourceRoot":"","sources":["../../../../src/utils/imageUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAItD,eAAO,MAAM,YAAY,QAAO,MAE/B,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,GAAG,SAAS,KAAG,OAI1D,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAAI,YAAY,GAAG,KAAG,OAInD,CAAC;AA+BF,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAG9C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,WAAW,MAAM,KAAG,MAkB/C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAM9C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,SAAS,KAAG,MAAM,GAAG,IAiB5D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,KAAG,MAExD,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run `items` through `fn` with at most `concurrency` items in-flight at once.
|
|
3
|
+
* Errors per-item are swallowed — wrap `fn` if you need to capture them.
|
|
4
|
+
*/
|
|
5
|
+
export declare function pLimit<T>(items: T[], fn: (item: T, index: number) => Promise<void>, concurrency: number): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=pLimit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pLimit.d.ts","sourceRoot":"","sources":["../../../../src/utils/pLimit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAC5B,KAAK,EAAE,CAAC,EAAE,EACV,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAC7C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoThumbnail.d.ts","sourceRoot":"","sources":["../../../../src/utils/videoThumbnail.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"videoThumbnail.d.ts","sourceRoot":"","sources":["../../../../src/utils/videoThumbnail.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAmED,eAAO,MAAM,kBAAkB;mCAEhB,MAAM,YACR,gBAAgB,KACxB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;sCA4DM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;0CAYhD,MAAM,EAAE,YACX,gBAAgB,KACxB,OAAO,CAAC,eAAe,EAAE,CAAC;CAe9B,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Video as PickedVideo } from 'react-native-image-crop-picker';
|
|
2
|
+
import type { ImageWithUploadStatus } from '../hooks/useImageAttachment';
|
|
3
|
+
export type VideoWithUploadStatus = Omit<ImageWithUploadStatus, 'image'> & {
|
|
4
|
+
image: PickedVideo;
|
|
5
|
+
};
|
|
6
|
+
export interface VideoThumbnailResult {
|
|
7
|
+
url: string;
|
|
8
|
+
size: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function generateAndUploadVideoThumbnails(videos: VideoWithUploadStatus[]): Promise<Record<string, VideoThumbnailResult>>;
|
|
11
|
+
//# sourceMappingURL=videoThumbnailUpload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videoThumbnailUpload.d.ts","sourceRoot":"","sources":["../../../../src/utils/videoThumbnailUpload.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,GAAG;IACzE,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,qBAAqB,EAAE,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAoF/C"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const MB = 1024 * 1024;
|
|
2
|
+
|
|
3
|
+
export const UPLOAD_LIMITS = {
|
|
4
|
+
image: 5 * MB,
|
|
5
|
+
video: 200 * MB,
|
|
6
|
+
file: 50 * MB,
|
|
7
|
+
} as const;
|
|
8
|
+
|
|
9
|
+
// Max concurrent thumbnail generations and file uploads.
|
|
10
|
+
// Keep low to avoid OOM on low-end devices.
|
|
11
|
+
export const UPLOAD_CONCURRENCY = 2;
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
2
|
+
import ImagePicker from 'react-native-image-crop-picker';
|
|
3
|
+
import {
|
|
4
|
+
useImageAttachment,
|
|
5
|
+
type ImageWithUploadStatus,
|
|
6
|
+
} from './useImageAttachment';
|
|
7
|
+
import { useFileAttachment } from './useFileAttachment';
|
|
8
|
+
import { useLinkPreview } from './useLinkPreview/useLinkPreview';
|
|
9
|
+
import { useSendAttachment } from './useSendAttachment';
|
|
10
|
+
import { useSendMessage } from './message/useSendMessage';
|
|
11
|
+
import { isVideoFromPicker } from '../utils/imageUtils';
|
|
12
|
+
import {
|
|
13
|
+
generateAndUploadVideoThumbnails,
|
|
14
|
+
type VideoWithUploadStatus,
|
|
15
|
+
} from '../utils/videoThumbnailUpload';
|
|
16
|
+
|
|
17
|
+
export function useChatCompose() {
|
|
18
|
+
const [text, setText] = useState('');
|
|
19
|
+
|
|
20
|
+
const imageAttachment = useImageAttachment();
|
|
21
|
+
const fileAttachment = useFileAttachment();
|
|
22
|
+
const linkPreview = useLinkPreview(text);
|
|
23
|
+
const { send: sendAttachments } = useSendAttachment();
|
|
24
|
+
const { sendMessage } = useSendMessage();
|
|
25
|
+
|
|
26
|
+
const isUploading = useMemo(
|
|
27
|
+
() =>
|
|
28
|
+
imageAttachment.selectedImages.some(
|
|
29
|
+
(img: ImageWithUploadStatus) => img.isUploading
|
|
30
|
+
) || fileAttachment.selectedFiles.some((f) => f.isUploading || !!f.error),
|
|
31
|
+
[imageAttachment.selectedImages, fileAttachment.selectedFiles]
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const canSend = useMemo(
|
|
35
|
+
() =>
|
|
36
|
+
(text.trim().length > 0 ||
|
|
37
|
+
imageAttachment.selectedImages.length > 0 ||
|
|
38
|
+
fileAttachment.selectedFiles.length > 0) &&
|
|
39
|
+
!isUploading,
|
|
40
|
+
[
|
|
41
|
+
text,
|
|
42
|
+
imageAttachment.selectedImages,
|
|
43
|
+
fileAttachment.selectedFiles,
|
|
44
|
+
isUploading,
|
|
45
|
+
]
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const send = useCallback(async () => {
|
|
49
|
+
const { selectedImages, clearAllImages } = imageAttachment;
|
|
50
|
+
const { selectedFiles, clearAllFiles } = fileAttachment;
|
|
51
|
+
const urlMeta = linkPreview.isVisible ? linkPreview.metadata : undefined;
|
|
52
|
+
|
|
53
|
+
// --- Attachments ---
|
|
54
|
+
if (selectedImages.length > 0 || selectedFiles.length > 0) {
|
|
55
|
+
const actualImages = selectedImages.filter(
|
|
56
|
+
(img: ImageWithUploadStatus) => !isVideoFromPicker(img.image)
|
|
57
|
+
);
|
|
58
|
+
const videos = selectedImages.filter((img: ImageWithUploadStatus) =>
|
|
59
|
+
isVideoFromPicker(img.image)
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
const uploadedImages = actualImages.filter(
|
|
63
|
+
(img: ImageWithUploadStatus) => img.uploadedUrl
|
|
64
|
+
);
|
|
65
|
+
const uploadedVideos = videos.filter(
|
|
66
|
+
(v) => v.uploadedUrl
|
|
67
|
+
) as unknown as VideoWithUploadStatus[];
|
|
68
|
+
|
|
69
|
+
// Generate + upload thumbnails for gallery videos
|
|
70
|
+
let videoThumbnails: Record<string, { url: string; size: number }> = {};
|
|
71
|
+
if (uploadedVideos.length > 0) {
|
|
72
|
+
videoThumbnails =
|
|
73
|
+
await generateAndUploadVideoThumbnails(uploadedVideos);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Send images + videos
|
|
77
|
+
if (uploadedImages.length > 0 || uploadedVideos.length > 0) {
|
|
78
|
+
const attachmentItems = [
|
|
79
|
+
...uploadedImages.map((img: ImageWithUploadStatus) => ({
|
|
80
|
+
...img,
|
|
81
|
+
type: 'image' as const,
|
|
82
|
+
})),
|
|
83
|
+
...uploadedVideos.map(
|
|
84
|
+
(vid: VideoWithUploadStatus, vidIdx: number) => {
|
|
85
|
+
const videoId = vid.uploadedUrl || `video-${vidIdx}`;
|
|
86
|
+
const thumb = videoThumbnails[videoId];
|
|
87
|
+
return {
|
|
88
|
+
type: 'video' as const,
|
|
89
|
+
video: {
|
|
90
|
+
path: vid.image.path,
|
|
91
|
+
filename: vid.image.filename ?? undefined,
|
|
92
|
+
size: vid.image.size ?? undefined,
|
|
93
|
+
width: vid.image.width ?? undefined,
|
|
94
|
+
height: vid.image.height ?? undefined,
|
|
95
|
+
duration: vid.image.duration ?? undefined,
|
|
96
|
+
},
|
|
97
|
+
uploadProgress: vid.uploadProgress,
|
|
98
|
+
error: vid.error,
|
|
99
|
+
isUploading: vid.isUploading,
|
|
100
|
+
uploadedUrl: vid.uploadedUrl,
|
|
101
|
+
thumbnailUrl: thumb?.url,
|
|
102
|
+
thumbnailSize: thumb?.size,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
),
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
const success = await sendAttachments(attachmentItems, undefined);
|
|
109
|
+
if (success) {
|
|
110
|
+
// Release all picker temp files to free native memory.
|
|
111
|
+
ImagePicker.clean().catch(() => {});
|
|
112
|
+
clearAllImages();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Send each file as its own message
|
|
117
|
+
const uploadedFiles = selectedFiles.filter(
|
|
118
|
+
(f) => f.uploadedUrl && !f.error
|
|
119
|
+
);
|
|
120
|
+
for (const file of uploadedFiles) {
|
|
121
|
+
await sendAttachments(
|
|
122
|
+
[
|
|
123
|
+
{
|
|
124
|
+
type: 'file' as const,
|
|
125
|
+
file: { path: file.uri, filename: file.name, size: file.size },
|
|
126
|
+
uploadProgress: 100,
|
|
127
|
+
error: null,
|
|
128
|
+
isUploading: false,
|
|
129
|
+
uploadedUrl: file.uploadedUrl,
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
undefined
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
if (uploadedFiles.length > 0) clearAllFiles();
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// --- Text / link preview ---
|
|
139
|
+
if (text.trim() || urlMeta) {
|
|
140
|
+
await sendMessage({
|
|
141
|
+
files: [],
|
|
142
|
+
plainText: text.trim(),
|
|
143
|
+
urlMetadata: urlMeta,
|
|
144
|
+
});
|
|
145
|
+
setText('');
|
|
146
|
+
}
|
|
147
|
+
}, [
|
|
148
|
+
imageAttachment,
|
|
149
|
+
fileAttachment,
|
|
150
|
+
linkPreview.isVisible,
|
|
151
|
+
linkPreview.metadata,
|
|
152
|
+
sendAttachments,
|
|
153
|
+
sendMessage,
|
|
154
|
+
text,
|
|
155
|
+
]);
|
|
156
|
+
|
|
157
|
+
return {
|
|
158
|
+
// Text
|
|
159
|
+
text,
|
|
160
|
+
setText,
|
|
161
|
+
// Attachments
|
|
162
|
+
selectedImages: imageAttachment.selectedImages,
|
|
163
|
+
selectedFiles: fileAttachment.selectedFiles,
|
|
164
|
+
isImagePreviewVisible: imageAttachment.isImagePreviewVisible,
|
|
165
|
+
isFilePreviewVisible: fileAttachment.isFilePreviewVisible,
|
|
166
|
+
addImages: imageAttachment.handleImageAttach,
|
|
167
|
+
addFiles: fileAttachment.handleFileAttach,
|
|
168
|
+
removeImage: imageAttachment.handleImageRemove,
|
|
169
|
+
removeFile: fileAttachment.handleFileRemove,
|
|
170
|
+
// Link preview
|
|
171
|
+
showLinkPreview: linkPreview.isVisible,
|
|
172
|
+
urlMetadata: linkPreview.metadata,
|
|
173
|
+
isMetadataLoading: linkPreview.isLoading,
|
|
174
|
+
dismissPreview: linkPreview.dismiss,
|
|
175
|
+
// Status
|
|
176
|
+
isUploading,
|
|
177
|
+
canSend,
|
|
178
|
+
// Actions
|
|
179
|
+
send,
|
|
180
|
+
clearAll: () => {
|
|
181
|
+
imageAttachment.clearAllImages();
|
|
182
|
+
fileAttachment.clearAllFiles();
|
|
183
|
+
setText('');
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
}
|