@droppii-org/chat-mobile 0.2.14 → 0.2.16
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/components/ThreadCard/ThreadCard.js +2 -1
- package/lib/module/components/ThreadCard/ThreadCard.js.map +1 -1
- package/lib/module/components/messages/imageMessage/index.js.map +1 -1
- package/lib/module/hooks/useImageAttachment.js +34 -63
- package/lib/module/hooks/useImageAttachment.js.map +1 -1
- package/lib/module/hooks/useLinkPreview/useFetchUrlMetadata.js +3 -2
- package/lib/module/hooks/useLinkPreview/useFetchUrlMetadata.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/screens/MediaView/index.js +1 -1
- package/lib/module/screens/chat-detail/ChatComposer.js +10 -3
- package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
- package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js +66 -25
- package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js.map +1 -1
- package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js +6 -3
- package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js.map +1 -1
- package/lib/module/services/auth.js +69 -0
- package/lib/module/services/auth.js.map +1 -1
- package/lib/module/services/imageUpload.js +84 -58
- package/lib/module/services/imageUpload.js.map +1 -1
- package/lib/module/utils/chatImageDimens.js +18 -1
- package/lib/module/utils/chatImageDimens.js.map +1 -1
- package/lib/module/utils/dateTimeUtils.js +44 -0
- package/lib/module/utils/dateTimeUtils.js.map +1 -0
- package/lib/module/utils/device.js +2 -1
- package/lib/module/utils/device.js.map +1 -1
- package/lib/module/utils/imageUtils.js +4 -2
- package/lib/module/utils/imageUtils.js.map +1 -1
- package/lib/module/{components/ThreadCard/thread-card.utils.js → utils/messageUtils.js} +18 -42
- package/lib/module/utils/messageUtils.js.map +1 -0
- package/lib/module/utils/videoThumbnail.js +11 -5
- package/lib/module/utils/videoThumbnail.js.map +1 -1
- package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/imageMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useImageAttachment.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useLinkPreview/useFetchUrlMetadata.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts.map +1 -1
- package/lib/typescript/src/services/attachmentHandlers/imageAttachmentHandler.d.ts.map +1 -1
- package/lib/typescript/src/services/auth.d.ts +32 -0
- package/lib/typescript/src/services/auth.d.ts.map +1 -1
- package/lib/typescript/src/services/imageUpload.d.ts.map +1 -1
- package/lib/typescript/src/utils/chatImageDimens.d.ts +1 -0
- package/lib/typescript/src/utils/chatImageDimens.d.ts.map +1 -1
- package/lib/typescript/src/utils/dateTimeUtils.d.ts +6 -0
- package/lib/typescript/src/utils/dateTimeUtils.d.ts.map +1 -0
- package/lib/typescript/src/utils/device.d.ts.map +1 -1
- package/lib/typescript/src/utils/imageUtils.d.ts.map +1 -1
- package/lib/typescript/src/utils/messageUtils.d.ts +8 -0
- package/lib/typescript/src/utils/messageUtils.d.ts.map +1 -0
- package/lib/typescript/src/utils/videoThumbnail.d.ts +1 -0
- package/lib/typescript/src/utils/videoThumbnail.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/components/ThreadCard/ThreadCard.tsx +2 -1
- package/src/components/messages/imageMessage/index.tsx +0 -1
- package/src/hooks/useImageAttachment.ts +45 -70
- package/src/hooks/useLinkPreview/useFetchUrlMetadata.ts +3 -2
- package/src/index.tsx +8 -1
- package/src/screens/MediaView/index.tsx +1 -1
- package/src/screens/chat-detail/ChatComposer.tsx +9 -3
- package/src/screens/chat-detail/hooks/useAttachmentSendHandler.ts +81 -25
- package/src/services/attachmentHandlers/imageAttachmentHandler.ts +11 -1
- package/src/services/auth.ts +77 -0
- package/src/services/imageUpload.ts +116 -73
- package/src/utils/chatImageDimens.ts +21 -1
- package/src/utils/dateTimeUtils.ts +48 -0
- package/src/utils/device.ts +1 -0
- package/src/utils/imageUtils.ts +10 -2
- package/src/{components/ThreadCard/thread-card.utils.ts → utils/messageUtils.ts} +18 -56
- package/src/utils/videoThumbnail.ts +14 -3
- package/lib/module/components/ThreadCard/thread-card.utils.js.map +0 -1
- package/lib/typescript/src/components/ThreadCard/thread-card.utils.d.ts +0 -4
- package/lib/typescript/src/components/ThreadCard/thread-card.utils.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","RNFS","isVideoFromPicker","VideoThumbnailUtil","ImageUploadAPI","UIUtils","useAttachmentSendHandler","selectedImages","sendAttachments","clearAllImages","onSend","onMessageSent","textMessage","urlMetadata","onSendText","handleSend","console","log","selectedImagesCount","length","selectedImagesData","map","img","filename","image","isUploading","uploadedUrl","uploadProgress","actualImages","filter","videosFromGallery","actualImagesCount","videosFromGalleryCount","videosFromGalleryList","v","uploadedImages","uploadedVideosFromGallery","vid","galleryVideoThumbnails","vidItem","cachedVideoPath","originalVideoPath","path","videoDuration","duration","videoMime","mime","ext","split","pop","cachedFileName","Date","now","Math","random","toString","slice","DocumentDirectoryPath","from","to","copyFile","timeMs","min","floor","quality","videoPath","thumbnail","generateThumbnail","time","Error","width","height","baseName","uploadedThumbnail","uploadImageFile","size","progress","percentage","url","error","
|
|
1
|
+
{"version":3,"names":["useCallback","RNFS","isVideoFromPicker","VideoThumbnailUtil","ImageUploadAPI","UIUtils","useAttachmentSendHandler","selectedImages","sendAttachments","clearAllImages","onSend","onMessageSent","textMessage","urlMetadata","onSendText","handleSend","console","log","selectedImagesCount","length","selectedImagesData","map","img","filename","image","isUploading","uploadedUrl","uploadProgress","actualImages","filter","videosFromGallery","actualImagesCount","videosFromGalleryCount","videosFromGalleryList","v","uploadedImages","uploadedVideosFromGallery","vid","galleryVideoThumbnails","failedVideos","idx","vidItem","videoId","cachedVideoPath","originalVideoPath","path","videoDuration","duration","videoMime","mime","index","warn","ext","split","pop","cachedFileName","Date","now","Math","random","toString","slice","DocumentDirectoryPath","from","to","copyFile","timeMs","min","max","floor","quality","videoPath","thumbnail","generateThumbnail","time","cacheId","Error","width","height","baseName","uploadedThumbnail","uploadImageFile","size","progress","videoIndex","percentage","url","error","errorMsg","message","String","push","unlink","err","toast","open","title","join","theme","allUploadedVideos","forEach","vidIdx","thumbnailUrl","videoUrl","attachmentItems","type","video","thumbnailSize","imagesCount","videosCount","hasTextMessage","success","undefined","hasPreview","previewUrl"],"sourceRoot":"../../../../../src","sources":["screens/chat-detail/hooks/useAttachmentSendHandler.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,7 +10,7 @@ export const ImageAttachmentHandler = {
|
|
|
10
10
|
reason: 'Image exceeds 5MB limit'
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
|
-
const validMimes = ['image/jpeg', 'image/png', 'image/webp', 'image/jpg'];
|
|
13
|
+
const validMimes = ['image/jpeg', 'image/png', 'image/webp', 'image/jpg', 'image/heic', 'image/heif'];
|
|
14
14
|
if (!validMimes.includes(attachment.sourceFile.mimeType)) {
|
|
15
15
|
return {
|
|
16
16
|
valid: false,
|
|
@@ -31,6 +31,7 @@ export const ImageAttachmentHandler = {
|
|
|
31
31
|
console.log('[ImageAttachmentHandler] Building payload for', {
|
|
32
32
|
filename: attachment.sourceFile.filename,
|
|
33
33
|
url: uploadedUrl
|
|
34
|
+
// path: attachment.sourceFile.path,
|
|
34
35
|
});
|
|
35
36
|
const picInfo = {
|
|
36
37
|
uuid: generateUUID(),
|
|
@@ -43,10 +44,12 @@ export const ImageAttachmentHandler = {
|
|
|
43
44
|
const payload = {
|
|
44
45
|
sourcePicture: picInfo,
|
|
45
46
|
bigPicture: picInfo,
|
|
46
|
-
snapshotPicture: picInfo
|
|
47
|
+
snapshotPicture: picInfo,
|
|
48
|
+
sourcePath: attachment.sourceFile.path // Required by OpenIM SDK to attach image to message
|
|
47
49
|
};
|
|
48
50
|
console.log('[ImageAttachmentHandler] Payload created for', {
|
|
49
|
-
fileName: attachment.sourceFile.filename
|
|
51
|
+
fileName: attachment.sourceFile.filename,
|
|
52
|
+
sourcePath: attachment.sourceFile.path
|
|
50
53
|
});
|
|
51
54
|
return payload;
|
|
52
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["generateUUID","ImageAttachmentHandler","validate","attachment","MAX_SIZE","sourceFile","size","valid","reason","validMimes","includes","mimeType","metadata","width","height","buildPayload","uploadedUrl","console","log","filename","url","picInfo","uuid","type","payload","sourcePicture","bigPicture","snapshotPicture","fileName"],"sourceRoot":"../../../../src","sources":["services/attachmentHandlers/imageAttachmentHandler.ts"],"mappings":";;AAEA,SAASA,YAAY,QAAQ,2BAAwB;AAErD,OAAO,MAAMC,sBAA0C,GAAG;EACxDC,QAAQA,CAACC,UAA2B,EAAE;IACpC,MAAMC,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;IAChC,IAAID,UAAU,CAACE,UAAU,CAACC,IAAI,GAAGF,QAAQ,EAAE;MACzC,OAAO;QAAEG,KAAK,EAAE,KAAK;QAAEC,MAAM,EAAE;MAA0B,CAAC;IAC5D;IAEA,MAAMC,UAAU,GAAG,
|
|
1
|
+
{"version":3,"names":["generateUUID","ImageAttachmentHandler","validate","attachment","MAX_SIZE","sourceFile","size","valid","reason","validMimes","includes","mimeType","metadata","width","height","buildPayload","uploadedUrl","console","log","filename","url","picInfo","uuid","type","payload","sourcePicture","bigPicture","snapshotPicture","sourcePath","path","fileName"],"sourceRoot":"../../../../src","sources":["services/attachmentHandlers/imageAttachmentHandler.ts"],"mappings":";;AAEA,SAASA,YAAY,QAAQ,2BAAwB;AAErD,OAAO,MAAMC,sBAA0C,GAAG;EACxDC,QAAQA,CAACC,UAA2B,EAAE;IACpC,MAAMC,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;IAChC,IAAID,UAAU,CAACE,UAAU,CAACC,IAAI,GAAGF,QAAQ,EAAE;MACzC,OAAO;QAAEG,KAAK,EAAE,KAAK;QAAEC,MAAM,EAAE;MAA0B,CAAC;IAC5D;IAEA,MAAMC,UAAU,GAAG,CACjB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,CACb;IACD,IAAI,CAACA,UAAU,CAACC,QAAQ,CAACP,UAAU,CAACE,UAAU,CAACM,QAAQ,CAAC,EAAE;MACxD,OAAO;QACLJ,KAAK,EAAE,KAAK;QACZC,MAAM,EAAE,uBAAuBL,UAAU,CAACE,UAAU,CAACM,QAAQ;MAC/D,CAAC;IACH;IAEA,IAAIR,UAAU,CAACS,QAAQ,CAACC,KAAK,IAAI,CAAC,IAAIV,UAAU,CAACS,QAAQ,CAACE,MAAM,IAAI,CAAC,EAAE;MACrE,OAAO;QAAEP,KAAK,EAAE,KAAK;QAAEC,MAAM,EAAE;MAA2B,CAAC;IAC7D;IAEA,OAAO;MAAED,KAAK,EAAE;IAAK,CAAC;EACxB,CAAC;EAED,MAAMQ,YAAYA,CAACZ,UAA2B,EAAEa,WAAmB,EAAE;IACnEC,OAAO,CAACC,GAAG,CAAC,+CAA+C,EAAE;MAC3DC,QAAQ,EAAEhB,UAAU,CAACE,UAAU,CAACc,QAAQ;MACxCC,GAAG,EAAEJ;MACL;IACF,CAAC,CAAC;IAEF,MAAMK,OAAO,GAAG;MACdC,IAAI,EAAEtB,YAAY,CAAC,CAAC;MACpBuB,IAAI,EAAEpB,UAAU,CAACE,UAAU,CAACM,QAAQ;MACpCL,IAAI,EAAEH,UAAU,CAACE,UAAU,CAACC,IAAI;MAChCO,KAAK,EAAEV,UAAU,CAACS,QAAQ,CAACC,KAAK;MAChCC,MAAM,EAAEX,UAAU,CAACS,QAAQ,CAACE,MAAM;MAClCM,GAAG,EAAEJ;IACP,CAAC;IAED,MAAMQ,OAAO,GAAG;MACdC,aAAa,EAAEJ,OAAO;MACtBK,UAAU,EAAEL,OAAO;MACnBM,eAAe,EAAEN,OAAO;MACxBO,UAAU,EAAEzB,UAAU,CAACE,UAAU,CAACwB,IAAI,CAAE;IAC1C,CAAC;IAEDZ,OAAO,CAACC,GAAG,CAAC,8CAA8C,EAAE;MAC1DY,QAAQ,EAAE3B,UAAU,CAACE,UAAU,CAACc,QAAQ;MACxCS,UAAU,EAAEzB,UAAU,CAACE,UAAU,CAACwB;IACpC,CAAC,CAAC;IAEF,OAAOL,OAAO;EAChB;AACF,CAAC","ignoreList":[]}
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
let authToken = null;
|
|
10
|
+
let tokenRefreshCallback = null;
|
|
11
|
+
let tokenRefreshFailedCallback = null;
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* Set auth token (call once at app startup)
|
|
@@ -26,10 +28,77 @@ export const getAuthToken = () => {
|
|
|
26
28
|
return authToken;
|
|
27
29
|
};
|
|
28
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Set callback for token refresh when 401 Unauthorized occurs
|
|
33
|
+
* Callback should refresh token from server and return the new token
|
|
34
|
+
* Example:
|
|
35
|
+
* setTokenRefreshCallback(async () => {
|
|
36
|
+
* const newToken = await api.post('/auth/refresh');
|
|
37
|
+
* return newToken;
|
|
38
|
+
* });
|
|
39
|
+
*/
|
|
40
|
+
export const setTokenRefreshCallback = callback => {
|
|
41
|
+
tokenRefreshCallback = callback;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Set callback when token refresh fails
|
|
46
|
+
* Called when token refresh throws error or returns invalid token
|
|
47
|
+
* Use this to redirect to login, show error message, etc.
|
|
48
|
+
* Example:
|
|
49
|
+
* setTokenRefreshFailedCallback(() => {
|
|
50
|
+
* navigation.navigate('Login');
|
|
51
|
+
* showToast('Your session expired. Please login again.');
|
|
52
|
+
* });
|
|
53
|
+
*/
|
|
54
|
+
export const setTokenRefreshFailedCallback = callback => {
|
|
55
|
+
tokenRefreshFailedCallback = callback;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Refresh auth token when 401 Unauthorized occurs
|
|
60
|
+
* Calls the refresh callback and updates the stored token
|
|
61
|
+
* If refresh fails:
|
|
62
|
+
* 1. Clears the invalid token
|
|
63
|
+
* 2. Calls tokenRefreshFailedCallback (if set) to notify app
|
|
64
|
+
* 3. Throws error
|
|
65
|
+
* @returns new auth token
|
|
66
|
+
* @throws Error if callback not set or refresh fails
|
|
67
|
+
*/
|
|
68
|
+
export const refreshAuthToken = async () => {
|
|
69
|
+
if (!tokenRefreshCallback) {
|
|
70
|
+
throw new Error('Token refresh callback not set. Call setTokenRefreshCallback() during app initialization.');
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const newToken = await tokenRefreshCallback();
|
|
74
|
+
if (!newToken) {
|
|
75
|
+
throw new Error('Refresh callback returned empty token');
|
|
76
|
+
}
|
|
77
|
+
setAuthToken(newToken);
|
|
78
|
+
return newToken;
|
|
79
|
+
} catch (error) {
|
|
80
|
+
// Clear invalid token
|
|
81
|
+
clearAuthToken();
|
|
82
|
+
|
|
83
|
+
// Notify app that refresh failed
|
|
84
|
+
if (tokenRefreshFailedCallback) {
|
|
85
|
+
try {
|
|
86
|
+
tokenRefreshFailedCallback();
|
|
87
|
+
} catch (callbackError) {
|
|
88
|
+
console.error('[Auth] Token refresh failed callback error:', callbackError);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Throw original error
|
|
93
|
+
throw error instanceof Error ? error : new Error('Token refresh failed');
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
|
|
29
97
|
/**
|
|
30
98
|
* Clear token (logout)
|
|
31
99
|
*/
|
|
32
100
|
export const clearAuthToken = () => {
|
|
33
101
|
authToken = null;
|
|
102
|
+
tokenRefreshCallback = null;
|
|
34
103
|
};
|
|
35
104
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["authToken","setAuthToken","token","getAuthToken","Error","clearAuthToken"],"sourceRoot":"../../../src","sources":["services/auth.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,IAAIA,SAAwB,GAAG,IAAI;;
|
|
1
|
+
{"version":3,"names":["authToken","tokenRefreshCallback","tokenRefreshFailedCallback","setAuthToken","token","getAuthToken","Error","setTokenRefreshCallback","callback","setTokenRefreshFailedCallback","refreshAuthToken","newToken","error","clearAuthToken","callbackError","console"],"sourceRoot":"../../../src","sources":["services/auth.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,IAAIA,SAAwB,GAAG,IAAI;AACnC,IAAIC,oBAAoD,GAAG,IAAI;AAC/D,IAAIC,0BAA+C,GAAG,IAAI;;AAE1D;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAIC,KAAa,IAAK;EAC7CJ,SAAS,GAAGI,KAAK;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAGA,CAAA,KAAc;EACxC,IAAI,CAACL,SAAS,EAAE;IACd,MAAM,IAAIM,KAAK,CACb,sEACF,CAAC;EACH;EACA,OAAON,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMO,uBAAuB,GAClCC,QAA+B,IACtB;EACTP,oBAAoB,GAAGO,QAAQ;AACjC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,6BAA6B,GAAID,QAAoB,IAAW;EAC3EN,0BAA0B,GAAGM,QAAQ;AACvC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,gBAAgB,GAAG,MAAAA,CAAA,KAA6B;EAC3D,IAAI,CAACT,oBAAoB,EAAE;IACzB,MAAM,IAAIK,KAAK,CACb,2FACF,CAAC;EACH;EAEA,IAAI;IACF,MAAMK,QAAQ,GAAG,MAAMV,oBAAoB,CAAC,CAAC;IAC7C,IAAI,CAACU,QAAQ,EAAE;MACb,MAAM,IAAIL,KAAK,CAAC,uCAAuC,CAAC;IAC1D;IACAH,YAAY,CAACQ,QAAQ,CAAC;IACtB,OAAOA,QAAQ;EACjB,CAAC,CAAC,OAAOC,KAAK,EAAE;IACd;IACAC,cAAc,CAAC,CAAC;;IAEhB;IACA,IAAIX,0BAA0B,EAAE;MAC9B,IAAI;QACFA,0BAA0B,CAAC,CAAC;MAC9B,CAAC,CAAC,OAAOY,aAAa,EAAE;QACtBC,OAAO,CAACH,KAAK,CACX,6CAA6C,EAC7CE,aACF,CAAC;MACH;IACF;;IAEA;IACA,MAAMF,KAAK,YAAYN,KAAK,GAAGM,KAAK,GAAG,IAAIN,KAAK,CAAC,sBAAsB,CAAC;EAC1E;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMO,cAAc,GAAGA,CAAA,KAAM;EAClCb,SAAS,GAAG,IAAI;EAChBC,oBAAoB,GAAG,IAAI;AAC7B,CAAC","ignoreList":[]}
|
|
@@ -3,83 +3,109 @@
|
|
|
3
3
|
import ReactNativeBlobUtil from 'react-native-blob-util';
|
|
4
4
|
import RNFS from 'react-native-fs';
|
|
5
5
|
import { getImageUploadEndpoint, getMimeType } from "../utils/imageUtils.js";
|
|
6
|
-
import { getAuthToken } from "./auth.js";
|
|
6
|
+
import { getAuthToken, refreshAuthToken } from "./auth.js";
|
|
7
7
|
import { getApiEndpoint } from "../config/api-endpoints.js";
|
|
8
|
-
import {
|
|
8
|
+
import { apiInstance } from "./apis.js";
|
|
9
9
|
export let ImageUploadAPI;
|
|
10
10
|
(function (_ImageUploadAPI) {
|
|
11
|
+
const performUpload = async (uploadUrl, file, token, onProgress) => {
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
ReactNativeBlobUtil.fetch('POST', uploadUrl, {
|
|
14
|
+
Authorization: `Bearer ${token}`
|
|
15
|
+
}, [{
|
|
16
|
+
name: 'files',
|
|
17
|
+
filename: file.filename,
|
|
18
|
+
data: ReactNativeBlobUtil.wrap(file.path),
|
|
19
|
+
type: getMimeType(file.filename)
|
|
20
|
+
}]).uploadProgress((written, total) => {
|
|
21
|
+
const progress = Math.round(written / total * 100);
|
|
22
|
+
onProgress?.(progress);
|
|
23
|
+
}).then(response => resolve(response)).catch(error => reject(error));
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
const parseUploadResponse = responseData => {
|
|
27
|
+
try {
|
|
28
|
+
const json = JSON.parse(responseData);
|
|
29
|
+
const uploaded = json.data?.[0] || json.files?.[0];
|
|
30
|
+
const imageUrl = uploaded?.publicUrl || uploaded?.url || uploaded?.data;
|
|
31
|
+
if (imageUrl) {
|
|
32
|
+
return {
|
|
33
|
+
url: imageUrl,
|
|
34
|
+
name: uploaded?.fileName,
|
|
35
|
+
width: uploaded?.width,
|
|
36
|
+
height: uploaded?.height,
|
|
37
|
+
size: uploaded?.size
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
} catch (err) {
|
|
42
|
+
if (__DEV__) console.error('[ImageUploadAPI] Parse error:', err);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
11
46
|
const uploadImageFile = _ImageUploadAPI.uploadImageFile = async (file, onProgress) => {
|
|
12
47
|
let token;
|
|
13
48
|
let uploadUrl;
|
|
14
49
|
try {
|
|
15
50
|
token = getAuthToken();
|
|
16
51
|
const relativePath = getApiEndpoint('imageUpload');
|
|
17
|
-
const baseUrl =
|
|
52
|
+
const baseUrl = apiInstance?.defaults?.baseURL;
|
|
18
53
|
if (!baseUrl) {
|
|
19
|
-
throw new Error('Image upload base URL not configured. Call
|
|
54
|
+
throw new Error('Image upload base URL not configured. Call initApiInstance() during app initialization.');
|
|
20
55
|
}
|
|
21
|
-
|
|
22
|
-
// Construct absolute URL for ReactNativeBlobUtil.fetch()
|
|
23
56
|
uploadUrl = getImageUploadEndpoint(`${baseUrl}${relativePath}`);
|
|
24
57
|
} catch (e) {
|
|
25
58
|
if (__DEV__) console.error('[ImageUploadAPI] Auth error:', e);
|
|
26
59
|
throw e;
|
|
27
60
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (__DEV__) console.error('[ImageUploadAPI] Server error response', {
|
|
44
|
-
status,
|
|
45
|
-
data: response.data
|
|
46
|
-
});
|
|
47
|
-
reject(new Error(`Upload failed with status ${status}`));
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (!response.data || response.data.length === 0) {
|
|
51
|
-
if (__DEV__) console.error('[ImageUploadAPI] Empty response', {
|
|
52
|
-
dataType: typeof response.data,
|
|
53
|
-
data: response.data
|
|
54
|
-
});
|
|
55
|
-
reject(new Error('Empty response from server'));
|
|
56
|
-
return;
|
|
61
|
+
let response = await performUpload(uploadUrl, file, token, onProgress);
|
|
62
|
+
const status = response.respInfo?.status;
|
|
63
|
+
|
|
64
|
+
// Handle 401 Unauthorized - refresh token and retry once
|
|
65
|
+
if (status === 401) {
|
|
66
|
+
if (__DEV__) console.warn('[ImageUploadAPI] Got 401, attempting token refresh...');
|
|
67
|
+
try {
|
|
68
|
+
const newToken = await refreshAuthToken();
|
|
69
|
+
if (__DEV__) console.log('[ImageUploadAPI] Token refreshed, retrying upload...');
|
|
70
|
+
|
|
71
|
+
// Retry upload with new token
|
|
72
|
+
response = await performUpload(uploadUrl, file, newToken, onProgress);
|
|
73
|
+
const retryStatus = response.respInfo?.status;
|
|
74
|
+
if (retryStatus === 401) {
|
|
75
|
+
throw new Error('Auth token still invalid after refresh. (401 Unauthorized)');
|
|
57
76
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const uploaded = json.data?.[0] || json.files?.[0];
|
|
61
|
-
const imageUrl = uploaded?.publicUrl || uploaded?.url || uploaded?.data;
|
|
62
|
-
if (imageUrl) {
|
|
63
|
-
resolve({
|
|
64
|
-
url: imageUrl,
|
|
65
|
-
name: uploaded?.fileName,
|
|
66
|
-
width: file.width,
|
|
67
|
-
height: file.height,
|
|
68
|
-
size: file.size
|
|
69
|
-
});
|
|
70
|
-
} else {
|
|
71
|
-
if (__DEV__) console.error('[ImageUploadAPI] No URL in response:', json);
|
|
72
|
-
reject(new Error('No URL in response'));
|
|
73
|
-
}
|
|
74
|
-
} catch (err) {
|
|
75
|
-
if (__DEV__) console.error('[ImageUploadAPI] Parse error:', err);
|
|
76
|
-
reject(new Error('Invalid response format'));
|
|
77
|
+
if (retryStatus && retryStatus >= 400) {
|
|
78
|
+
throw new Error(`Upload failed with status ${retryStatus}`);
|
|
77
79
|
}
|
|
78
|
-
}
|
|
79
|
-
if (__DEV__) console.error('[ImageUploadAPI]
|
|
80
|
-
|
|
80
|
+
} catch (refreshError) {
|
|
81
|
+
if (__DEV__) console.error('[ImageUploadAPI] Token refresh failed:', refreshError);
|
|
82
|
+
throw refreshError instanceof Error ? refreshError : new Error('Token refresh failed');
|
|
83
|
+
}
|
|
84
|
+
} else if (status && status >= 400) {
|
|
85
|
+
if (__DEV__) console.error('[ImageUploadAPI] Server error response', {
|
|
86
|
+
status,
|
|
87
|
+
data: response.data
|
|
81
88
|
});
|
|
82
|
-
|
|
89
|
+
throw new Error(`Upload failed with status ${status}`);
|
|
90
|
+
}
|
|
91
|
+
if (!response.data || response.data.length === 0) {
|
|
92
|
+
if (__DEV__) console.error('[ImageUploadAPI] Empty response', {
|
|
93
|
+
dataType: typeof response.data,
|
|
94
|
+
data: response.data
|
|
95
|
+
});
|
|
96
|
+
throw new Error('Empty response from server');
|
|
97
|
+
}
|
|
98
|
+
const uploadedImage = parseUploadResponse(response.data);
|
|
99
|
+
if (!uploadedImage) {
|
|
100
|
+
throw new Error('No URL in response');
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
url: uploadedImage.url,
|
|
104
|
+
name: uploadedImage.name,
|
|
105
|
+
width: file.width,
|
|
106
|
+
height: file.height,
|
|
107
|
+
size: file.size
|
|
108
|
+
};
|
|
83
109
|
};
|
|
84
110
|
const uploadImageQueue = _ImageUploadAPI.uploadImageQueue = async (files, config = {}, onProgress) => {
|
|
85
111
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ReactNativeBlobUtil","RNFS","getImageUploadEndpoint","getMimeType","getAuthToken","getApiEndpoint","
|
|
1
|
+
{"version":3,"names":["ReactNativeBlobUtil","RNFS","getImageUploadEndpoint","getMimeType","getAuthToken","refreshAuthToken","getApiEndpoint","apiInstance","ImageUploadAPI","_ImageUploadAPI","performUpload","uploadUrl","file","token","onProgress","Promise","resolve","reject","fetch","Authorization","name","filename","data","wrap","path","type","uploadProgress","written","total","progress","Math","round","then","response","catch","error","parseUploadResponse","responseData","json","JSON","parse","uploaded","files","imageUrl","publicUrl","url","fileName","width","height","size","err","__DEV__","console","uploadImageFile","relativePath","baseUrl","defaults","baseURL","Error","e","status","respInfo","warn","newToken","log","retryStatus","refreshError","length","dataType","uploadedImage","uploadImageQueue","config","maxConcurrent","results","queue","activeCount","_reject","processNext","shift","result","push","i","cleanupImageFile","filePath","unlink"],"sourceRoot":"../../../src","sources":["services/imageUpload.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -118,6 +118,7 @@ class ChatImageDimens {
|
|
|
118
118
|
/**
|
|
119
119
|
* Get optimized image URL with custom dimensions (generic approach)
|
|
120
120
|
* Useful for dynamic sizing based on actual content
|
|
121
|
+
* Automatically applies pixel ratio for high-DPI displays
|
|
121
122
|
*/
|
|
122
123
|
static getOptimizedImageUrlWithDimensions(url, width, height) {
|
|
123
124
|
if (!url) {
|
|
@@ -128,6 +129,17 @@ class ChatImageDimens {
|
|
|
128
129
|
if (!url.startsWith('http') || !url.match(ChatImageDimens.regexCDN)) {
|
|
129
130
|
return url;
|
|
130
131
|
}
|
|
132
|
+
|
|
133
|
+
// Check if image format is supported for WebP conversion
|
|
134
|
+
// Only convert standard formats (jpg, jpeg, png) to WebP
|
|
135
|
+
// For unsupported formats (heic, heif, etc.), return original URL
|
|
136
|
+
const unsupportedFormats = ['.heic', '.heif'];
|
|
137
|
+
const urlLower = url.toLowerCase();
|
|
138
|
+
const isUnsupportedFormat = unsupportedFormats.some(format => urlLower.includes(format));
|
|
139
|
+
if (isUnsupportedFormat) {
|
|
140
|
+
// Return original URL without optimization for unsupported formats
|
|
141
|
+
return url;
|
|
142
|
+
}
|
|
131
143
|
const domainRegex = /^(https?:\/\/[^/]+)/;
|
|
132
144
|
const domainMatches = url.match(domainRegex);
|
|
133
145
|
if (!domainMatches || domainMatches.length < 2) {
|
|
@@ -136,8 +148,13 @@ class ChatImageDimens {
|
|
|
136
148
|
const domain = domainMatches[1];
|
|
137
149
|
const restOfUrl = url.replace(domain, '');
|
|
138
150
|
|
|
151
|
+
// Account for device pixel ratio: request higher resolution for high-DPI displays
|
|
152
|
+
const pixelRatio = PixelRatio.get();
|
|
153
|
+
const optimizedWidth = Math.round(width * pixelRatio);
|
|
154
|
+
const optimizedHeight = Math.round(height * pixelRatio);
|
|
155
|
+
|
|
139
156
|
// Build optimized URL: domain/cache/WIDTHxHEIGHT/path.webp
|
|
140
|
-
let optimizedUrl = `${domain}/cache/${
|
|
157
|
+
let optimizedUrl = `${domain}/cache/${optimizedWidth}x${optimizedHeight}${restOfUrl}`;
|
|
141
158
|
if (!restOfUrl.endsWith('.webp')) {
|
|
142
159
|
optimizedUrl += '.webp';
|
|
143
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PixelRatio","isTablet","CHAT_IMAGE_VIEW_SOURCE","getSizeReduction","originalSize","factor","PIXEL_RATIO","get","Math","round","CHAT_IMAGE_DIMENSIONS_PLATFORM","TABLET","MessageListThumbnail","width","height","MessageDetailBubble","ImagePreviewSmall","ImagePreviewMedium","ImagePreviewLarge","MOBILE","ChatImageDimens","regexCDN","dimens","constructor","calculateDimensions","baseDimens","key","source","baseDimen","getInstance","instance","updateFactor","getDimensions","dimen","getOptimizedImageUrl","url","getOptimizedImageUrlWithDimensions","startsWith","match","domainRegex","domainMatches","length","domain","restOfUrl","replace","optimizedUrl","endsWith"],"sourceRoot":"../../../src","sources":["utils/chatImageDimens.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["PixelRatio","isTablet","CHAT_IMAGE_VIEW_SOURCE","getSizeReduction","originalSize","factor","PIXEL_RATIO","get","Math","round","CHAT_IMAGE_DIMENSIONS_PLATFORM","TABLET","MessageListThumbnail","width","height","MessageDetailBubble","ImagePreviewSmall","ImagePreviewMedium","ImagePreviewLarge","MOBILE","ChatImageDimens","regexCDN","dimens","constructor","calculateDimensions","baseDimens","key","source","baseDimen","getInstance","instance","updateFactor","getDimensions","dimen","getOptimizedImageUrl","url","getOptimizedImageUrlWithDimensions","startsWith","match","unsupportedFormats","urlLower","toLowerCase","isUnsupportedFormat","some","format","includes","domainRegex","domainMatches","length","domain","restOfUrl","replace","pixelRatio","optimizedWidth","optimizedHeight","optimizedUrl","endsWith"],"sourceRoot":"../../../src","sources":["utils/chatImageDimens.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Date and time formatting utilities
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export const formatDuration = durationMs => {
|
|
8
|
+
// Convert milliseconds to seconds
|
|
9
|
+
const totalSeconds = Math.floor(durationMs / 1000);
|
|
10
|
+
const mins = Math.floor(totalSeconds / 60);
|
|
11
|
+
const secs = totalSeconds % 60;
|
|
12
|
+
return `${mins}:${secs.toString().padStart(2, '0')}`;
|
|
13
|
+
};
|
|
14
|
+
export const formatTimestamp = ts => {
|
|
15
|
+
if (!ts) return '';
|
|
16
|
+
try {
|
|
17
|
+
const date = new Date(ts);
|
|
18
|
+
if (isNaN(date.getTime())) return '';
|
|
19
|
+
const now = new Date();
|
|
20
|
+
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
21
|
+
// const yesterday = new Date(today.getTime() - 24 * 60 * 60 * 1000);
|
|
22
|
+
const dateOnly = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
23
|
+
|
|
24
|
+
// Today: show time (HH:mm)
|
|
25
|
+
if (dateOnly.getTime() === today.getTime()) {
|
|
26
|
+
const h = date.getHours().toString().padStart(2, '0');
|
|
27
|
+
const m = date.getMinutes().toString().padStart(2, '0');
|
|
28
|
+
return `${h}:${m}`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// // Yesterday: show "Hôm qua"
|
|
32
|
+
// if (dateOnly.getTime() === yesterday.getTime()) {
|
|
33
|
+
// return 'Hôm qua';
|
|
34
|
+
// }
|
|
35
|
+
|
|
36
|
+
// All previous days: show dd/mm format (no weekday)
|
|
37
|
+
const d = date.getDate().toString().padStart(2, '0');
|
|
38
|
+
const mo = (date.getMonth() + 1).toString().padStart(2, '0');
|
|
39
|
+
return `${d}/${mo}`;
|
|
40
|
+
} catch {
|
|
41
|
+
return '';
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=dateTimeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["formatDuration","durationMs","totalSeconds","Math","floor","mins","secs","toString","padStart","formatTimestamp","ts","date","Date","isNaN","getTime","now","today","getFullYear","getMonth","getDate","dateOnly","h","getHours","m","getMinutes","d","mo"],"sourceRoot":"../../../src","sources":["utils/dateTimeUtils.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA,OAAO,MAAMA,cAAc,GAAIC,UAAkB,IAAa;EAC5D;EACA,MAAMC,YAAY,GAAGC,IAAI,CAACC,KAAK,CAACH,UAAU,GAAG,IAAI,CAAC;EAClD,MAAMI,IAAI,GAAGF,IAAI,CAACC,KAAK,CAACF,YAAY,GAAG,EAAE,CAAC;EAC1C,MAAMI,IAAI,GAAGJ,YAAY,GAAG,EAAE;EAC9B,OAAO,GAAGG,IAAI,IAAIC,IAAI,CAACC,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACtD,CAAC;AAED,OAAO,MAAMC,eAAe,GAAIC,EAA0B,IAAa;EACrE,IAAI,CAACA,EAAE,EAAE,OAAO,EAAE;EAElB,IAAI;IACF,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,EAAE,CAAC;IACzB,IAAIG,KAAK,CAACF,IAAI,CAACG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE;IAEpC,MAAMC,GAAG,GAAG,IAAIH,IAAI,CAAC,CAAC;IACtB,MAAMI,KAAK,GAAG,IAAIJ,IAAI,CAACG,GAAG,CAACE,WAAW,CAAC,CAAC,EAAEF,GAAG,CAACG,QAAQ,CAAC,CAAC,EAAEH,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC;IACxE;IACA,MAAMC,QAAQ,GAAG,IAAIR,IAAI,CACvBD,IAAI,CAACM,WAAW,CAAC,CAAC,EAClBN,IAAI,CAACO,QAAQ,CAAC,CAAC,EACfP,IAAI,CAACQ,OAAO,CAAC,CACf,CAAC;;IAED;IACA,IAAIC,QAAQ,CAACN,OAAO,CAAC,CAAC,KAAKE,KAAK,CAACF,OAAO,CAAC,CAAC,EAAE;MAC1C,MAAMO,CAAC,GAAGV,IAAI,CAACW,QAAQ,CAAC,CAAC,CAACf,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;MACrD,MAAMe,CAAC,GAAGZ,IAAI,CAACa,UAAU,CAAC,CAAC,CAACjB,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;MACvD,OAAO,GAAGa,CAAC,IAAIE,CAAC,EAAE;IACpB;;IAEA;IACA;IACA;IACA;;IAEA;IACA,MAAME,CAAC,GAAGd,IAAI,CAACQ,OAAO,CAAC,CAAC,CAACZ,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACpD,MAAMkB,EAAE,GAAG,CAACf,IAAI,CAACO,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAEX,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5D,OAAO,GAAGiB,CAAC,IAAIC,EAAE,EAAE;EACrB,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ImagePicker","DeviceUtils","openImagePicker","multiple","result","openPicker","mediaType","compressImageQuality","images","Array","isArray","console","log","count","length","map","img","filename","size","width","height","error","code","openVideoPicker","videos","vid","duration"],"sourceRoot":"../../../src","sources":["utils/device.ts"],"mappings":";;AAAA,OAAOA,WAAW,MAAM,gCAAgC;AAExD,MAAMC,WAAW,GAAG;EAClBC,eAAe,EAAE,MAAAA,CAAOC,QAAiB,GAAG,KAAK,KAAK;IACpD,IAAI;MACF,MAAMC,MAAM,GAAG,MAAMJ,WAAW,CAACK,UAAU,CAAC;QAC1C;QACAC,SAAS,EAAE,KAAK;QAChBC,oBAAoB,EAAE,GAAG;QACzBJ;
|
|
1
|
+
{"version":3,"names":["ImagePicker","DeviceUtils","openImagePicker","multiple","result","openPicker","mediaType","compressImageQuality","forceJpg","images","Array","isArray","console","log","count","length","map","img","filename","size","width","height","error","code","openVideoPicker","videos","vid","duration"],"sourceRoot":"../../../src","sources":["utils/device.ts"],"mappings":";;AAAA,OAAOA,WAAW,MAAM,gCAAgC;AAExD,MAAMC,WAAW,GAAG;EAClBC,eAAe,EAAE,MAAAA,CAAOC,QAAiB,GAAG,KAAK,KAAK;IACpD,IAAI;MACF,MAAMC,MAAM,GAAG,MAAMJ,WAAW,CAACK,UAAU,CAAC;QAC1C;QACAC,SAAS,EAAE,KAAK;QAChBC,oBAAoB,EAAE,GAAG;QACzBJ,QAAQ;QACRK,QAAQ,EAAE;MACZ,CAAC,CAAC;MAEF,MAAMC,MAAM,GAAGC,KAAK,CAACC,OAAO,CAACP,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC;MACxDQ,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAE;QACtCC,KAAK,EAAEL,MAAM,CAACM,MAAM;QACpBN,MAAM,EAAEA,MAAM,CAACO,GAAG,CAAEC,GAAG,KAAM;UAC3BC,QAAQ,EAAED,GAAG,CAACC,QAAQ;UACtBC,IAAI,EAAEF,GAAG,CAACE,IAAI;UACdC,KAAK,EAAEH,GAAG,CAACG,KAAK;UAChBC,MAAM,EAAEJ,GAAG,CAACI;QACd,CAAC,CAAC;MACJ,CAAC,CAAC;MACF,OAAOZ,MAAM;IACf,CAAC,CAAC,OAAOa,KAAU,EAAE;MACnB;MACA,IACEA,KAAK,CAACC,IAAI,KAAK,oBAAoB,IACnCD,KAAK,CAACC,IAAI,KAAK,yBAAyB,EACxC;QACAX,OAAO,CAACC,GAAG,CAAC,+CAA+C,CAAC;QAC5D,OAAO,IAAI;MACb;MACAD,OAAO,CAACU,KAAK,CAAC,uBAAuB,EAAEA,KAAK,CAAC;MAC7C,MAAMA,KAAK;IACb;EACF,CAAC;EAEDE,eAAe,EAAE,MAAAA,CAAOrB,QAAiB,GAAG,KAAK,KAAK;IACpD,IAAI;MACF,MAAMC,MAAM,GAAG,MAAMJ,WAAW,CAACK,UAAU,CAAC;QAC1CC,SAAS,EAAE,OAAO;QAClBH;MACF,CAAC,CAAC;MAEF,MAAMsB,MAAM,GAAGf,KAAK,CAACC,OAAO,CAACP,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC;MACxDQ,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAE;QACtCC,KAAK,EAAEW,MAAM,CAACV,MAAM;QACpBU,MAAM,EAAEA,MAAM,CAACT,GAAG,CAAEU,GAAG,KAAM;UAC3BR,QAAQ,EAAEQ,GAAG,CAACR,QAAQ;UACtBC,IAAI,EAAEO,GAAG,CAACP,IAAI;UACdC,KAAK,EAAEM,GAAG,CAACN,KAAK;UAChBC,MAAM,EAAEK,GAAG,CAACL,MAAM;UAClBM,QAAQ,EAAED,GAAG,CAACC;QAChB,CAAC,CAAC;MACJ,CAAC,CAAC;MACF,OAAOF,MAAM;IACf,CAAC,CAAC,OAAOH,KAAU,EAAE;MACnB;MACA,IACEA,KAAK,CAACC,IAAI,KAAK,oBAAoB,IACnCD,KAAK,CAACC,IAAI,KAAK,yBAAyB,EACxC;QACAX,OAAO,CAACC,GAAG,CAAC,+CAA+C,CAAC;QAC5D,OAAO,IAAI;MACb;MACAD,OAAO,CAACU,KAAK,CAAC,uBAAuB,EAAEA,KAAK,CAAC;MAC7C,MAAMA,KAAK;IACb;EACF;AACF,CAAC;AAED,eAAerB,WAAW;AAC1B,SAASA,WAAW","ignoreList":[]}
|
|
@@ -22,6 +22,8 @@ export const getMimeType = fileName => {
|
|
|
22
22
|
jpeg: 'image/jpeg',
|
|
23
23
|
png: 'image/png',
|
|
24
24
|
webp: 'image/webp',
|
|
25
|
+
heic: 'image/heic',
|
|
26
|
+
heif: 'image/heif',
|
|
25
27
|
mp4: 'video/mp4',
|
|
26
28
|
mov: 'video/quicktime',
|
|
27
29
|
avi: 'video/x-msvideo',
|
|
@@ -57,9 +59,9 @@ export const validateImageFile = file => {
|
|
|
57
59
|
if (file.size > MAX_SIZE) {
|
|
58
60
|
return `Image too large. Max ${formatFileSize(MAX_SIZE)}`;
|
|
59
61
|
}
|
|
60
|
-
const validMimes = ['image/jpeg', 'image/png', 'image/webp'];
|
|
62
|
+
const validMimes = ['image/jpeg', 'image/png', 'image/webp', 'image/heic', 'image/heif'];
|
|
61
63
|
if (!validMimes.includes(file.mime)) {
|
|
62
|
-
return 'Unsupported format. Only JPEG, PNG, WebP';
|
|
64
|
+
return 'Unsupported format. Only JPEG, PNG, WebP, HEIC';
|
|
63
65
|
}
|
|
64
66
|
return null;
|
|
65
67
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["generateUUID","Date","now","Math","random","toString","slice","isVideoFile","filename","mimeType","getMimeType","startsWith","isVideoFromPicker","pickedItem","mime","fileName","ext","split","pop","toLowerCase","mimeMap","jpg","jpeg","png","webp","mp4","mov","avi","mkv","webm","m4v","flv","wmv","mp3","wav","m4a","aac","flac","ogg","pdf","doc","docx","xls","xlsx","zip","formatFileSize","bytes","k","sizes","i","floor","log","round","pow","validateImageFile","file","MAX_SIZE","size","validMimes","includes","getImageUploadEndpoint","baseUrl"],"sourceRoot":"../../../src","sources":["utils/imageUtils.ts"],"mappings":";;AAEA,OAAO,MAAMA,YAAY,GAAGA,CAAA,KAAc;EACxC,OAAO,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACnE,CAAC;AAED,OAAO,MAAMC,WAAW,GAAIC,QAA4B,IAAc;EACpE,IAAI,CAACA,QAAQ,EAAE,OAAO,KAAK;EAC3B,MAAMC,QAAQ,GAAGC,WAAW,CAACF,QAAQ,CAAC;EACtC,OAAOC,QAAQ,CAACE,UAAU,CAAC,QAAQ,CAAC;AACtC,CAAC;;AAED;AACA,OAAO,MAAMC,iBAAiB,GAAIC,UAAe,IAAc;EAC7D,MAAMC,IAAI,GAAGD,UAAU,EAAEC,IAAI;EAC7B,IAAI,CAACA,IAAI,EAAE,OAAO,KAAK;EACvB,OAAOA,IAAI,CAACH,UAAU,CAAC,QAAQ,CAAC;AAClC,CAAC;AAED,OAAO,MAAMD,WAAW,GAAIK,QAAgB,IAAa;EACvD,MAAMC,GAAG,GAAGD,QAAQ,CAACE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC,EAAEC,WAAW,CAAC,CAAC;EACpD,MAAMC,OAA+B,GAAG;IACtCC,GAAG,EAAE,YAAY;IACjBC,IAAI,EAAE,YAAY;IAClBC,GAAG,EAAE,WAAW;IAChBC,IAAI,EAAE,YAAY;IAClBC,GAAG,EAAE,WAAW;IAChBC,GAAG,EAAE,iBAAiB;IACtBC,GAAG,EAAE,iBAAiB;IACtBC,GAAG,EAAE,kBAAkB;IACvBC,IAAI,EAAE,YAAY;IAClBC,GAAG,EAAE,WAAW;IAChBC,GAAG,EAAE,aAAa;IAClBC,GAAG,EAAE,gBAAgB;IACrBC,GAAG,EAAE,YAAY;IACjBC,GAAG,EAAE,WAAW;IAChBC,GAAG,EAAE,WAAW;IAChBC,GAAG,EAAE,WAAW;IAChBC,IAAI,EAAE,YAAY;IAClBC,GAAG,EAAE,WAAW;IAChBC,GAAG,EAAE,iBAAiB;IACtBC,GAAG,EAAE,oBAAoB;IACzBC,IAAI,EAAE,yEAAyE;IAC/EC,GAAG,EAAE,0BAA0B;IAC/BC,IAAI,EAAE,mEAAmE;IACzEC,GAAG,EAAE;EACP,CAAC;EACD,
|
|
1
|
+
{"version":3,"names":["generateUUID","Date","now","Math","random","toString","slice","isVideoFile","filename","mimeType","getMimeType","startsWith","isVideoFromPicker","pickedItem","mime","fileName","ext","split","pop","toLowerCase","mimeMap","jpg","jpeg","png","webp","heic","heif","mp4","mov","avi","mkv","webm","m4v","flv","wmv","mp3","wav","m4a","aac","flac","ogg","pdf","doc","docx","xls","xlsx","zip","formatFileSize","bytes","k","sizes","i","floor","log","round","pow","validateImageFile","file","MAX_SIZE","size","validMimes","includes","getImageUploadEndpoint","baseUrl"],"sourceRoot":"../../../src","sources":["utils/imageUtils.ts"],"mappings":"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","ignoreList":[]}
|