@droppii-org/chat-mobile 0.2.16 → 0.2.18
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/assets/images/icon_excel.png +0 -0
- package/lib/module/assets/images/icon_img.png +0 -0
- package/lib/module/assets/images/icon_pdf.png +0 -0
- package/lib/module/assets/images/icon_txt.png +0 -0
- package/lib/module/assets/images/icon_word.png +0 -0
- package/lib/module/assets/images/index.js +5 -0
- package/lib/module/assets/images/index.js.map +1 -1
- package/lib/module/components/AttachmentPreview/FilePreview.js +107 -0
- package/lib/module/components/AttachmentPreview/FilePreview.js.map +1 -0
- package/lib/module/components/AttachmentPreview/MediaPreview.js +212 -0
- package/lib/module/components/AttachmentPreview/MediaPreview.js.map +1 -0
- package/lib/module/components/AttachmentPreview/index.js +49 -0
- package/lib/module/components/AttachmentPreview/index.js.map +1 -0
- package/lib/module/components/MergedImageGrid.js +28 -18
- package/lib/module/components/MergedImageGrid.js.map +1 -1
- package/lib/module/components/messages/fileMessage/index.js +122 -12
- package/lib/module/components/messages/fileMessage/index.js.map +1 -1
- package/lib/module/components/messages/mergedMessage/index.js +4 -7
- package/lib/module/components/messages/mergedMessage/index.js.map +1 -1
- package/lib/module/hooks/useFileAttachment.js +116 -0
- package/lib/module/hooks/useFileAttachment.js.map +1 -0
- package/lib/module/hooks/useFileDownload.js +175 -0
- package/lib/module/hooks/useFileDownload.js.map +1 -0
- package/lib/module/hooks/useImageAttachment.js +16 -8
- package/lib/module/hooks/useImageAttachment.js.map +1 -1
- package/lib/module/hooks/useVideoAttachment.js +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/screens/MediaView/VideoPlayer.js +1 -0
- package/lib/module/screens/MediaView/VideoPlayer.js.map +1 -1
- package/lib/module/screens/MediaView/index.js +7 -9
- package/lib/module/screens/MediaView/index.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatComposer.js +44 -36
- package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +11 -2
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/module/screens/chat-detail/hooks/useAttachmentMapping.js +51 -0
- package/lib/module/screens/chat-detail/hooks/useAttachmentMapping.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js +39 -13
- package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js.map +1 -1
- package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js +6 -6
- package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js.map +1 -1
- package/lib/module/services/attachmentHandlers/index.js +1 -1
- package/lib/module/services/attachmentHandlers/index.js.map +1 -1
- package/lib/module/services/attachmentHandlers/videoAttachmentHandler.js +1 -1
- package/lib/module/translation/resources/i18n.js +10 -0
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/utils/device.js +32 -0
- package/lib/module/utils/device.js.map +1 -1
- package/lib/module/utils/imageUtils.js +44 -28
- package/lib/module/utils/imageUtils.js.map +1 -1
- package/lib/module/utils/videoThumbnail.js +76 -3
- package/lib/module/utils/videoThumbnail.js.map +1 -1
- package/lib/typescript/src/assets/images/index.d.ts +5 -0
- package/lib/typescript/src/assets/images/index.d.ts.map +1 -1
- package/lib/typescript/src/components/AttachmentPreview/FilePreview.d.ts +6 -0
- package/lib/typescript/src/components/AttachmentPreview/FilePreview.d.ts.map +1 -0
- package/lib/typescript/src/components/AttachmentPreview/MediaPreview.d.ts +9 -0
- package/lib/typescript/src/components/AttachmentPreview/MediaPreview.d.ts.map +1 -0
- package/lib/typescript/src/components/AttachmentPreview/index.d.ts +9 -0
- package/lib/typescript/src/components/AttachmentPreview/index.d.ts.map +1 -0
- package/lib/typescript/src/components/MergedImageGrid.d.ts +2 -2
- package/lib/typescript/src/components/MergedImageGrid.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/fileMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/mergedMessage/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useFileAttachment.d.ts +20 -0
- package/lib/typescript/src/hooks/useFileAttachment.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useFileDownload.d.ts +15 -0
- package/lib/typescript/src/hooks/useFileDownload.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useImageAttachment.d.ts +1 -2
- package/lib/typescript/src/hooks/useImageAttachment.d.ts.map +1 -1
- package/lib/typescript/src/screens/MediaView/VideoPlayer.d.ts.map +1 -1
- package/lib/typescript/src/screens/MediaView/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/ChatListLegend.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentMapping.d.ts +10 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentMapping.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts +4 -1
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts.map +1 -1
- package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts +2 -2
- package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts.map +1 -1
- package/lib/typescript/src/services/attachmentHandlers/index.d.ts +1 -1
- package/lib/typescript/src/services/attachmentHandlers/index.d.ts.map +1 -1
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/types/attachment.d.ts +22 -1
- package/lib/typescript/src/types/attachment.d.ts.map +1 -1
- package/lib/typescript/src/utils/device.d.ts +7 -0
- package/lib/typescript/src/utils/device.d.ts.map +1 -1
- package/lib/typescript/src/utils/imageUtils.d.ts +1 -0
- package/lib/typescript/src/utils/imageUtils.d.ts.map +1 -1
- package/lib/typescript/src/utils/videoThumbnail.d.ts.map +1 -1
- package/package.json +5 -1
- package/src/assets/images/icon_excel.png +0 -0
- package/src/assets/images/icon_img.png +0 -0
- package/src/assets/images/icon_pdf.png +0 -0
- package/src/assets/images/icon_txt.png +0 -0
- package/src/assets/images/icon_word.png +0 -0
- package/src/assets/images/index.ts +5 -0
- package/src/components/AttachmentPreview/FilePreview.tsx +137 -0
- package/src/components/AttachmentPreview/MediaPreview.tsx +238 -0
- package/src/components/AttachmentPreview/index.tsx +68 -0
- package/src/components/MergedImageGrid.tsx +36 -23
- package/src/components/messages/fileMessage/index.tsx +156 -13
- package/src/components/messages/mergedMessage/index.tsx +5 -7
- package/src/hooks/useFileAttachment.ts +163 -0
- package/src/hooks/useFileDownload.ts +200 -0
- package/src/hooks/useImageAttachment.ts +23 -13
- package/src/hooks/useVideoAttachment.ts +1 -1
- package/src/screens/MediaView/VideoPlayer.tsx +1 -0
- package/src/screens/MediaView/index.tsx +7 -6
- package/src/screens/chat-detail/ChatComposer.tsx +61 -30
- package/src/screens/chat-detail/ChatListLegend.tsx +9 -2
- package/src/screens/chat-detail/hooks/useAttachmentMapping.ts +58 -0
- package/src/screens/chat-detail/hooks/useAttachmentSendHandler.ts +50 -11
- package/src/services/attachmentHandlers/fileAttachmentHandler.ts +8 -7
- package/src/services/attachmentHandlers/index.ts +4 -1
- package/src/services/attachmentHandlers/videoAttachmentHandler.ts +1 -1
- package/src/translation/resources/i18n.ts +10 -0
- package/src/types/attachment.ts +23 -1
- package/src/utils/device.ts +58 -0
- package/src/utils/imageUtils.ts +50 -28
- package/src/utils/videoThumbnail.ts +77 -3
- package/lib/module/components/AttachmentPreview.js +0 -250
- package/lib/module/components/AttachmentPreview.js.map +0 -1
- package/lib/typescript/src/components/AttachmentPreview.d.ts +0 -28
- package/lib/typescript/src/components/AttachmentPreview.d.ts.map +0 -1
- package/src/components/AttachmentPreview.tsx +0 -304
|
@@ -1,26 +1,136 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { memo } from 'react';
|
|
4
|
-
import {
|
|
3
|
+
import { memo, useMemo } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KImage, KLabel, KColors } from '@droppii/libs';
|
|
5
6
|
import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
|
|
6
7
|
import { messageStyles } from "../styles.js";
|
|
7
|
-
import {
|
|
8
|
+
import { useFileDownload } from "../../../hooks/useFileDownload.js";
|
|
9
|
+
import { getFileIcon, getMimeType, formatFileSize } from "../../../utils/imageUtils.js";
|
|
10
|
+
import { trans } from "../../../translation/index.js";
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
12
|
export const FileMessage = /*#__PURE__*/memo(({
|
|
9
13
|
message,
|
|
10
14
|
isOutgoing
|
|
11
15
|
}) => {
|
|
12
|
-
const fileName = message.fileElem?.fileName ||
|
|
16
|
+
const fileName = message.fileElem?.fileName || '[File]';
|
|
17
|
+
const fileSize = message.fileElem?.fileSize ?? 0;
|
|
18
|
+
const url = message.fileElem?.sourceUrl || message.fileElem?.url || '';
|
|
19
|
+
const {
|
|
20
|
+
state,
|
|
21
|
+
handleView,
|
|
22
|
+
handleDownload
|
|
23
|
+
} = useFileDownload(fileName, url);
|
|
24
|
+
const mimeType = useMemo(() => getMimeType(fileName), [fileName]);
|
|
25
|
+
const iconSource = useMemo(() => getFileIcon(mimeType), [mimeType]);
|
|
26
|
+
const subtitle = useMemo(() => {
|
|
27
|
+
if (state.status === 'downloading') {
|
|
28
|
+
return trans('chat:file_downloading', {
|
|
29
|
+
received: state.receivedMB ?? 0,
|
|
30
|
+
total: state.totalMB ?? 0
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (state.status === 'error') {
|
|
34
|
+
return state.error ?? trans('chat:file_download_failed');
|
|
35
|
+
}
|
|
36
|
+
return formatFileSize(fileSize);
|
|
37
|
+
}, [state, fileSize]);
|
|
38
|
+
const subtitleColor = state.status === 'error' ? KColors.palette.danger?.w400 ?? '#FF3B30' : KColors.palette.gray.w500;
|
|
39
|
+
const isDownloading = state.status === 'downloading';
|
|
13
40
|
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
41
|
+
padding: '0.5rem',
|
|
42
|
+
style: [styles.wrapper, messageStyles.wrapper, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
|
|
43
|
+
children: /*#__PURE__*/_jsxs(KContainer.View, {
|
|
44
|
+
row: true,
|
|
45
|
+
alignItems: true,
|
|
46
|
+
br: '3x',
|
|
47
|
+
paddingR: '0.75rem',
|
|
48
|
+
paddingV: '0.25rem',
|
|
49
|
+
background: KColors.white,
|
|
50
|
+
children: [/*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
51
|
+
visible: isDownloading,
|
|
52
|
+
children: /*#__PURE__*/_jsx(KContainer.Touchable, {
|
|
53
|
+
center: true,
|
|
54
|
+
br: "round",
|
|
55
|
+
style: styles.cancelBtn,
|
|
56
|
+
width: 32,
|
|
57
|
+
height: 32,
|
|
58
|
+
onPress: handleDownload,
|
|
59
|
+
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
60
|
+
center: true,
|
|
61
|
+
br: "round",
|
|
62
|
+
style: styles.cancelBtnIconContainer,
|
|
63
|
+
width: 26,
|
|
64
|
+
height: 26,
|
|
65
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
66
|
+
name: "close",
|
|
67
|
+
provider: "MaterialCommunityIcons",
|
|
68
|
+
size: 24,
|
|
69
|
+
color: KColors.white
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
})
|
|
73
|
+
}), /*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
74
|
+
visible: !isDownloading,
|
|
75
|
+
children: /*#__PURE__*/_jsx(KImage.Base, {
|
|
76
|
+
uri: iconSource,
|
|
77
|
+
style: styles.fileIcon,
|
|
78
|
+
resizeMode: "contain"
|
|
79
|
+
})
|
|
80
|
+
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
81
|
+
flexS: 1,
|
|
82
|
+
children: [/*#__PURE__*/_jsx(KLabel.Text, {
|
|
83
|
+
typo: "TextSmMedium",
|
|
84
|
+
color: CHAT_BUBBLE_COLORS.text,
|
|
85
|
+
numberOfLines: 1,
|
|
86
|
+
ellipsizeMode: "middle",
|
|
87
|
+
children: fileName
|
|
88
|
+
}), /*#__PURE__*/_jsx(KLabel.Text, {
|
|
89
|
+
typo: "TextXsNormal",
|
|
90
|
+
color: subtitleColor,
|
|
91
|
+
numberOfLines: 1,
|
|
92
|
+
children: subtitle
|
|
93
|
+
})]
|
|
94
|
+
}), /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
95
|
+
name: "eye-outline",
|
|
96
|
+
provider: "MaterialCommunityIcons",
|
|
97
|
+
onPress: handleView,
|
|
98
|
+
size: 20,
|
|
99
|
+
color: KColors.palette.gray.w600,
|
|
100
|
+
containerStyle: styles.viewIcon
|
|
101
|
+
}), /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
102
|
+
name: 'download-o',
|
|
103
|
+
provider: "DroppiiNew",
|
|
104
|
+
onPress: isDownloading ? undefined : handleDownload,
|
|
105
|
+
size: 20,
|
|
106
|
+
color: state.status === 'error' ? KColors.palette.danger?.w400 ?? '#FF3B30' : KColors.palette.gray.w600,
|
|
107
|
+
containerStyle: isDownloading ? styles.disabledIcon : undefined
|
|
108
|
+
})]
|
|
22
109
|
})
|
|
23
110
|
});
|
|
24
111
|
});
|
|
25
112
|
FileMessage.displayName = 'FileMessage';
|
|
113
|
+
const styles = StyleSheet.create({
|
|
114
|
+
wrapper: {
|
|
115
|
+
borderRadius: 20
|
|
116
|
+
},
|
|
117
|
+
fileIcon: {
|
|
118
|
+
width: 24,
|
|
119
|
+
height: 24,
|
|
120
|
+
marginHorizontal: 12
|
|
121
|
+
},
|
|
122
|
+
cancelBtn: {
|
|
123
|
+
backgroundColor: KColors.hexToRgba('#6355CA', 0.3),
|
|
124
|
+
marginHorizontal: 6
|
|
125
|
+
},
|
|
126
|
+
cancelBtnIconContainer: {
|
|
127
|
+
backgroundColor: '#6355CA'
|
|
128
|
+
},
|
|
129
|
+
viewIcon: {
|
|
130
|
+
marginHorizontal: 12
|
|
131
|
+
},
|
|
132
|
+
disabledIcon: {
|
|
133
|
+
opacity: 0.3
|
|
134
|
+
}
|
|
135
|
+
});
|
|
26
136
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","KContainer","KLabel","CHAT_BUBBLE_COLORS","messageStyles","
|
|
1
|
+
{"version":3,"names":["memo","useMemo","StyleSheet","KContainer","KImage","KLabel","KColors","CHAT_BUBBLE_COLORS","messageStyles","useFileDownload","getFileIcon","getMimeType","formatFileSize","trans","jsx","_jsx","jsxs","_jsxs","FileMessage","message","isOutgoing","fileName","fileElem","fileSize","url","sourceUrl","state","handleView","handleDownload","mimeType","iconSource","subtitle","status","received","receivedMB","total","totalMB","error","subtitleColor","palette","danger","w400","gray","w500","isDownloading","View","padding","style","styles","wrapper","bubbleSent","bubbleReceived","children","row","alignItems","br","paddingR","paddingV","background","white","VisibleView","visible","Touchable","center","cancelBtn","width","height","onPress","cancelBtnIconContainer","VectorIcons","name","provider","size","color","Base","uri","fileIcon","resizeMode","flexS","Text","typo","text","numberOfLines","ellipsizeMode","w600","containerStyle","viewIcon","undefined","disabledIcon","displayName","create","borderRadius","marginHorizontal","backgroundColor","hexToRgba","opacity"],"sourceRoot":"../../../../../src","sources":["components/messages/fileMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,OAAO,QAAQ,OAAO;AACrC,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,UAAU,EAAEC,MAAM,EAAEC,MAAM,EAAEC,OAAO,QAAQ,eAAe;AACnE,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AAEzC,SAASC,eAAe,QAAQ,mCAAgC;AAChE,SACEC,WAAW,EACXC,WAAW,EACXC,cAAc,QACT,8BAA2B;AAClC,SAASC,KAAK,QAAQ,+BAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE7C,OAAO,MAAMC,WAAW,gBAAGlB,IAAI,CAC7B,CAAC;EAAEmB,OAAO;EAAEC;AAAmC,CAAC,KAAK;EACnD,MAAMC,QAAQ,GAAGF,OAAO,CAACG,QAAQ,EAAED,QAAQ,IAAI,QAAQ;EACvD,MAAME,QAAQ,GAAGJ,OAAO,CAACG,QAAQ,EAAEC,QAAQ,IAAI,CAAC;EAChD,MAAMC,GAAG,GACNL,OAAO,CAACG,QAAQ,EAAUG,SAAS,IACnCN,OAAO,CAACG,QAAQ,EAAUE,GAAG,IAC9B,EAAE;EAEJ,MAAM;IAAEE,KAAK;IAAEC,UAAU;IAAEC;EAAe,CAAC,GAAGnB,eAAe,CAC3DY,QAAQ,EACRG,GACF,CAAC;EAED,MAAMK,QAAQ,GAAG5B,OAAO,CAAC,MAAMU,WAAW,CAACU,QAAQ,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EACjE,MAAMS,UAAU,GAAG7B,OAAO,CAAC,MAAMS,WAAW,CAACmB,QAAQ,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEnE,MAAME,QAAQ,GAAG9B,OAAO,CAAC,MAAM;IAC7B,IAAIyB,KAAK,CAACM,MAAM,KAAK,aAAa,EAAE;MAClC,OAAOnB,KAAK,CAAC,uBAAuB,EAAE;QACpCoB,QAAQ,EAAEP,KAAK,CAACQ,UAAU,IAAI,CAAC;QAC/BC,KAAK,EAAET,KAAK,CAACU,OAAO,IAAI;MAC1B,CAAC,CAAC;IACJ;IACA,IAAIV,KAAK,CAACM,MAAM,KAAK,OAAO,EAAE;MAC5B,OAAON,KAAK,CAACW,KAAK,IAAIxB,KAAK,CAAC,2BAA2B,CAAC;IAC1D;IACA,OAAOD,cAAc,CAACW,QAAQ,CAAC;EACjC,CAAC,EAAE,CAACG,KAAK,EAAEH,QAAQ,CAAC,CAAC;EAErB,MAAMe,aAAa,GACjBZ,KAAK,CAACM,MAAM,KAAK,OAAO,GACnB1B,OAAO,CAACiC,OAAO,CAACC,MAAM,EAAEC,IAAI,IAAI,SAAS,GAC1CnC,OAAO,CAACiC,OAAO,CAACG,IAAI,CAACC,IAAI;EAE/B,MAAMC,aAAa,GAAGlB,KAAK,CAACM,MAAM,KAAK,aAAa;EAEpD,oBACEjB,IAAA,CAACZ,UAAU,CAAC0C,IAAI;IACdC,OAAO,EAAE,QAAS;IAClBC,KAAK,EAAE,CACLC,MAAM,CAACC,OAAO,EACdzC,aAAa,CAACyC,OAAO,EACrB7B,UAAU,GAAGZ,aAAa,CAAC0C,UAAU,GAAG1C,aAAa,CAAC2C,cAAc,CACpE;IAAAC,QAAA,eAEFnC,KAAA,CAACd,UAAU,CAAC0C,IAAI;MACdQ,GAAG;MACHC,UAAU;MACVC,EAAE,EAAE,IAAK;MACTC,QAAQ,EAAE,SAAU;MACpBC,QAAQ,EAAE,SAAU;MACpBC,UAAU,EAAEpD,OAAO,CAACqD,KAAM;MAAAP,QAAA,gBAE1BrC,IAAA,CAACZ,UAAU,CAACyD,WAAW;QAACC,OAAO,EAAEjB,aAAc;QAAAQ,QAAA,eAC7CrC,IAAA,CAACZ,UAAU,CAAC2D,SAAS;UACnBC,MAAM;UACNR,EAAE,EAAC,OAAO;UACVR,KAAK,EAAEC,MAAM,CAACgB,SAAU;UACxBC,KAAK,EAAE,EAAG;UACVC,MAAM,EAAE,EAAG;UACXC,OAAO,EAAEvC,cAAe;UAAAwB,QAAA,eAExBrC,IAAA,CAACZ,UAAU,CAAC0C,IAAI;YACdkB,MAAM;YACNR,EAAE,EAAC,OAAO;YACVR,KAAK,EAAEC,MAAM,CAACoB,sBAAuB;YACrCH,KAAK,EAAE,EAAG;YACVC,MAAM,EAAE,EAAG;YAAAd,QAAA,eAEXrC,IAAA,CAACX,MAAM,CAACiE,WAAW;cACjBC,IAAI,EAAC,OAAO;cACZC,QAAQ,EAAC,wBAAwB;cACjCC,IAAI,EAAE,EAAG;cACTC,KAAK,EAAEnE,OAAO,CAACqD;YAAM,CACtB;UAAC,CACa;QAAC,CACE;MAAC,CACD,CAAC,eACzB5C,IAAA,CAACZ,UAAU,CAACyD,WAAW;QAACC,OAAO,EAAE,CAACjB,aAAc;QAAAQ,QAAA,eAC9CrC,IAAA,CAACX,MAAM,CAACsE,IAAI;UACVC,GAAG,EAAE7C,UAAW;UAChBiB,KAAK,EAAEC,MAAM,CAAC4B,QAAS;UACvBC,UAAU,EAAC;QAAS,CACrB;MAAC,CACoB,CAAC,eAGzB5D,KAAA,CAACd,UAAU,CAAC0C,IAAI;QAACiC,KAAK,EAAE,CAAE;QAAA1B,QAAA,gBACxBrC,IAAA,CAACV,MAAM,CAAC0E,IAAI;UACVC,IAAI,EAAC,cAAc;UACnBP,KAAK,EAAElE,kBAAkB,CAAC0E,IAAK;UAC/BC,aAAa,EAAE,CAAE;UACjBC,aAAa,EAAC,QAAQ;UAAA/B,QAAA,EAErB/B;QAAQ,CACE,CAAC,eACdN,IAAA,CAACV,MAAM,CAAC0E,IAAI;UACVC,IAAI,EAAC,cAAc;UACnBP,KAAK,EAAEnC,aAAc;UACrB4C,aAAa,EAAE,CAAE;UAAA9B,QAAA,EAEhBrB;QAAQ,CACE,CAAC;MAAA,CACC,CAAC,eAGlBhB,IAAA,CAACX,MAAM,CAACiE,WAAW;QACjBC,IAAI,EAAC,aAAa;QAClBC,QAAQ,EAAC,wBAAwB;QACjCJ,OAAO,EAAExC,UAAW;QACpB6C,IAAI,EAAE,EAAG;QACTC,KAAK,EAAEnE,OAAO,CAACiC,OAAO,CAACG,IAAI,CAAC0C,IAAK;QACjCC,cAAc,EAAErC,MAAM,CAACsC;MAAS,CACjC,CAAC,eAEFvE,IAAA,CAACX,MAAM,CAACiE,WAAW;QACjBC,IAAI,EAAE,YAAa;QACnBC,QAAQ,EAAC,YAAY;QACrBJ,OAAO,EAAEvB,aAAa,GAAG2C,SAAS,GAAG3D,cAAe;QACpD4C,IAAI,EAAE,EAAG;QACTC,KAAK,EACH/C,KAAK,CAACM,MAAM,KAAK,OAAO,GACnB1B,OAAO,CAACiC,OAAO,CAACC,MAAM,EAAEC,IAAI,IAAI,SAAS,GAC1CnC,OAAO,CAACiC,OAAO,CAACG,IAAI,CAAC0C,IAC1B;QACDC,cAAc,EAAEzC,aAAa,GAAGI,MAAM,CAACwC,YAAY,GAAGD;MAAU,CACjE,CAAC;IAAA,CACa;EAAC,CACH,CAAC;AAEtB,CACF,CAAC;AAEDrE,WAAW,CAACuE,WAAW,GAAG,aAAa;AAEvC,MAAMzC,MAAM,GAAG9C,UAAU,CAACwF,MAAM,CAAC;EAC/BzC,OAAO,EAAE;IACP0C,YAAY,EAAE;EAChB,CAAC;EACDf,QAAQ,EAAE;IACRX,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACV0B,gBAAgB,EAAE;EACpB,CAAC;EACD5B,SAAS,EAAE;IACT6B,eAAe,EAAEvF,OAAO,CAACwF,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;IAClDF,gBAAgB,EAAE;EACpB,CAAC;EACDxB,sBAAsB,EAAE;IACtByB,eAAe,EAAE;EACnB,CAAC;EACDP,QAAQ,EAAE;IACRM,gBAAgB,EAAE;EACpB,CAAC;EACDJ,YAAY,EAAE;IACZO,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -22,13 +22,10 @@ export const MergedMessage = /*#__PURE__*/memo(({
|
|
|
22
22
|
style: messageStyles.wrapper,
|
|
23
23
|
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
24
24
|
style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
|
|
25
|
-
children: imageMessages.length > 0 && /*#__PURE__*/_jsx(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
maxDisplay: 4,
|
|
30
|
-
onMediaPress: onMediaPress
|
|
31
|
-
})
|
|
25
|
+
children: imageMessages.length > 0 && /*#__PURE__*/_jsx(MergedImageGrid, {
|
|
26
|
+
images: imageMessages,
|
|
27
|
+
maxDisplay: 3,
|
|
28
|
+
onMediaPress: onMediaPress
|
|
32
29
|
})
|
|
33
30
|
})
|
|
34
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","KContainer","MergedImageGrid","messageStyles","jsx","_jsx","MergedMessage","message","isOutgoing","onMediaPress","mergeElem","multiMessage","imageMessages","filter","msg","contentType","View","style","wrapper","children","bubble","bubbleSent","bubbleReceived","length","
|
|
1
|
+
{"version":3,"names":["memo","KContainer","MergedImageGrid","messageStyles","jsx","_jsx","MergedMessage","message","isOutgoing","onMediaPress","mergeElem","multiMessage","imageMessages","filter","msg","contentType","View","style","wrapper","children","bubble","bubbleSent","bubbleReceived","length","images","maxDisplay","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/mergedMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,eAAe,QAAQ,0BAAuB;AACvD,SAASC,aAAa,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG1C,OAAO,MAAMC,aAAa,gBAAGN,IAAI,CAC/B,CAAC;EAAEO,OAAO;EAAEC,UAAU;EAAEC;AAAqC,CAAC,KAAK;EACjE,MAAMC,SAAS,GAAIH,OAAO,CAASG,SAAS;EAE5C,IAAI,CAACA,SAAS,EAAEC,YAAY,EAAE;IAC5B,OAAO,IAAI;EACb;EAEA,MAAM;IAAEA;EAAa,CAAC,GAAGD,SAAS;EAClC,MAAME,aAAa,GAAGD,YAAY,CAACE,MAAM,CACtCC,GAAQ,IAAKA,GAAG,CAACC,WAAW,KAAK,GACpC,CAAC;EAED,oBACEV,IAAA,CAACJ,UAAU,CAACe,IAAI;IAACC,KAAK,EAAEd,aAAa,CAACe,OAAQ;IAAAC,QAAA,eAC5Cd,IAAA,CAACJ,UAAU,CAACe,IAAI;MACdC,KAAK,EAAE,CACLd,aAAa,CAACiB,MAAM,EACpBZ,UAAU,GACNL,aAAa,CAACkB,UAAU,GACxBlB,aAAa,CAACmB,cAAc,CAChC;MAAAH,QAAA,EAEDP,aAAa,CAACW,MAAM,GAAG,CAAC,iBACvBlB,IAAA,CAACH,eAAe;QACdsB,MAAM,EAAEZ,aAAc;QACtBa,UAAU,EAAE,CAAE;QACdhB,YAAY,EAAEA;MAAa,CAC5B;IACF,CACc;EAAC,CACH,CAAC;AAEtB,CACF,CAAC;AAEDH,aAAa,CAACoB,WAAW,GAAG,eAAe","ignoreList":[]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useState } from 'react';
|
|
4
|
+
import { ImageUploadAPI } from "../services/imageUpload.js";
|
|
5
|
+
import DeviceUtils from "../utils/device.js";
|
|
6
|
+
import UIUtils from "../utils/ui.js";
|
|
7
|
+
import { trans } from "../translation/index.js";
|
|
8
|
+
import { MAX_FILE_SIZE } from "../services/attachmentHandlers/index.js";
|
|
9
|
+
const MAX_FILE_COUNT = 3;
|
|
10
|
+
export const useFileAttachment = () => {
|
|
11
|
+
const [selectedFiles, setSelectedFiles] = useState([]);
|
|
12
|
+
const updateFileStatus = useCallback((id, updates) => {
|
|
13
|
+
setSelectedFiles(prev => prev.map(f => f.id === id ? {
|
|
14
|
+
...f,
|
|
15
|
+
...updates
|
|
16
|
+
} : f));
|
|
17
|
+
}, []);
|
|
18
|
+
const uploadFile = useCallback(async file => {
|
|
19
|
+
try {
|
|
20
|
+
updateFileStatus(file.id, {
|
|
21
|
+
isUploading: true,
|
|
22
|
+
error: null,
|
|
23
|
+
uploadProgress: 0
|
|
24
|
+
});
|
|
25
|
+
const uploaded = await ImageUploadAPI.uploadImageFile({
|
|
26
|
+
path: file.uri.startsWith('file://') ? file.uri.slice(7) : file.uri,
|
|
27
|
+
filename: file.name,
|
|
28
|
+
size: file.size,
|
|
29
|
+
width: 0,
|
|
30
|
+
height: 0,
|
|
31
|
+
mime: file.mimeType
|
|
32
|
+
}, progress => updateFileStatus(file.id, {
|
|
33
|
+
uploadProgress: progress
|
|
34
|
+
}));
|
|
35
|
+
if (!uploaded?.url) throw new Error('No URL returned from server');
|
|
36
|
+
updateFileStatus(file.id, {
|
|
37
|
+
isUploading: false,
|
|
38
|
+
uploadProgress: 100,
|
|
39
|
+
uploadedUrl: uploaded.url
|
|
40
|
+
});
|
|
41
|
+
} catch (error) {
|
|
42
|
+
// TODO: handle upload failure
|
|
43
|
+
console.error('[FileAttach] Upload failed:', error);
|
|
44
|
+
updateFileStatus(file.id, {
|
|
45
|
+
isUploading: false,
|
|
46
|
+
error: error?.message ?? trans('chat:file_upload_failed')
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}, [updateFileStatus]);
|
|
50
|
+
const handleFileAttach = useCallback(async () => {
|
|
51
|
+
try {
|
|
52
|
+
const currentCount = selectedFiles.length;
|
|
53
|
+
if (currentCount >= MAX_FILE_COUNT) {
|
|
54
|
+
UIUtils.toast.open({
|
|
55
|
+
title: trans('chat:file_max_count'),
|
|
56
|
+
theme: 'danger'
|
|
57
|
+
});
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const picked = await DeviceUtils.openFilePicker(true);
|
|
61
|
+
if (!picked || picked.length === 0) return;
|
|
62
|
+
const oversized = picked.filter(f => f.size > MAX_FILE_SIZE);
|
|
63
|
+
let candidates = picked;
|
|
64
|
+
if (oversized.length > 0) {
|
|
65
|
+
UIUtils.toast.open({
|
|
66
|
+
title: trans('chat:file_too_large'),
|
|
67
|
+
theme: 'danger'
|
|
68
|
+
});
|
|
69
|
+
candidates = picked.filter(f => f.size <= MAX_FILE_SIZE);
|
|
70
|
+
if (candidates.length === 0) return;
|
|
71
|
+
}
|
|
72
|
+
const deduplicated = candidates.filter(f => !selectedFiles.some(s => s.name === f.name && s.size === f.size));
|
|
73
|
+
if (deduplicated.length === 0) return;
|
|
74
|
+
const remaining = MAX_FILE_COUNT - currentCount;
|
|
75
|
+
const toAdd = deduplicated.slice(0, remaining);
|
|
76
|
+
if (toAdd.length < deduplicated.length) {
|
|
77
|
+
UIUtils.toast.open({
|
|
78
|
+
title: trans('chat:file_max_count'),
|
|
79
|
+
theme: 'danger'
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
const newFiles = toAdd.map(f => ({
|
|
83
|
+
id: `file-${Date.now()}-${Math.random().toString(36).slice(2)}`,
|
|
84
|
+
uri: f.uri,
|
|
85
|
+
name: f.name,
|
|
86
|
+
size: f.size,
|
|
87
|
+
mimeType: f.mimeType,
|
|
88
|
+
uploadProgress: 0,
|
|
89
|
+
error: null,
|
|
90
|
+
isUploading: true
|
|
91
|
+
}));
|
|
92
|
+
setSelectedFiles(prev => [...prev, ...newFiles]);
|
|
93
|
+
await Promise.all(newFiles.map(f => uploadFile(f)));
|
|
94
|
+
} catch (error) {
|
|
95
|
+
UIUtils.toast.open({
|
|
96
|
+
title: trans('chat:file_pick_failed'),
|
|
97
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
98
|
+
theme: 'danger'
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}, [selectedFiles, uploadFile]);
|
|
102
|
+
const handleFileRemove = useCallback(id => {
|
|
103
|
+
setSelectedFiles(prev => prev.filter(f => f.id !== id));
|
|
104
|
+
}, []);
|
|
105
|
+
const clearAllFiles = useCallback(() => {
|
|
106
|
+
setSelectedFiles([]);
|
|
107
|
+
}, []);
|
|
108
|
+
return {
|
|
109
|
+
selectedFiles,
|
|
110
|
+
isFilePreviewVisible: selectedFiles.length > 0,
|
|
111
|
+
handleFileAttach,
|
|
112
|
+
handleFileRemove,
|
|
113
|
+
clearAllFiles
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=useFileAttachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useState","ImageUploadAPI","DeviceUtils","UIUtils","trans","MAX_FILE_SIZE","MAX_FILE_COUNT","useFileAttachment","selectedFiles","setSelectedFiles","updateFileStatus","id","updates","prev","map","f","uploadFile","file","isUploading","error","uploadProgress","uploaded","uploadImageFile","path","uri","startsWith","slice","filename","name","size","width","height","mime","mimeType","progress","url","Error","uploadedUrl","console","message","handleFileAttach","currentCount","length","toast","open","title","theme","picked","openFilePicker","oversized","filter","candidates","deduplicated","some","s","remaining","toAdd","newFiles","Date","now","Math","random","toString","Promise","all","handleFileRemove","clearAllFiles","isFilePreviewVisible"],"sourceRoot":"../../../src","sources":["hooks/useFileAttachment.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { Platform, Share } from 'react-native';
|
|
5
|
+
import RNFS from 'react-native-fs';
|
|
6
|
+
import FileViewer from 'react-native-file-viewer';
|
|
7
|
+
import UIUtils from "../utils/ui.js";
|
|
8
|
+
import { trans } from "../translation/index.js";
|
|
9
|
+
const INITIAL_STATE = {
|
|
10
|
+
status: 'idle',
|
|
11
|
+
progress: 0,
|
|
12
|
+
receivedMB: 0,
|
|
13
|
+
totalMB: 0,
|
|
14
|
+
localPath: null,
|
|
15
|
+
error: null
|
|
16
|
+
};
|
|
17
|
+
const CacheDir = RNFS.CachesDirectoryPath;
|
|
18
|
+
const DownloadDir = Platform.OS === 'android' ? RNFS.DownloadDirectoryPath : RNFS.CachesDirectoryPath;
|
|
19
|
+
export const useFileDownload = (fileName, url) => {
|
|
20
|
+
const [state, setState] = useState(INITIAL_STATE);
|
|
21
|
+
const jobIdRef = useRef(null);
|
|
22
|
+
const cancelledRef = useRef(false);
|
|
23
|
+
const openFile = useCallback(async path => {
|
|
24
|
+
try {
|
|
25
|
+
await FileViewer.open(path, {
|
|
26
|
+
showOpenWithDialog: true,
|
|
27
|
+
showAppsSuggestions: true
|
|
28
|
+
});
|
|
29
|
+
} catch {
|
|
30
|
+
UIUtils.toast.open({
|
|
31
|
+
title: trans('chat:file_open_failed'),
|
|
32
|
+
theme: 'warning'
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}, []);
|
|
36
|
+
const runDownload = useCallback(async destDir => {
|
|
37
|
+
if (!url || !fileName) return null;
|
|
38
|
+
const destPath = `${destDir}/${fileName}`;
|
|
39
|
+
cancelledRef.current = false;
|
|
40
|
+
setState({
|
|
41
|
+
status: 'downloading',
|
|
42
|
+
progress: 0,
|
|
43
|
+
receivedMB: 0,
|
|
44
|
+
totalMB: 0,
|
|
45
|
+
localPath: null,
|
|
46
|
+
error: null
|
|
47
|
+
});
|
|
48
|
+
const MB = 1024 * 1024;
|
|
49
|
+
const ret = RNFS.downloadFile({
|
|
50
|
+
fromUrl: url,
|
|
51
|
+
toFile: destPath,
|
|
52
|
+
progress: res => {
|
|
53
|
+
if (cancelledRef.current) return;
|
|
54
|
+
const r = res.bytesWritten;
|
|
55
|
+
const t = res.contentLength;
|
|
56
|
+
setState(prev => ({
|
|
57
|
+
...prev,
|
|
58
|
+
progress: t > 0 ? Math.round(r / t * 100) : 0,
|
|
59
|
+
receivedMB: Math.round(r / MB * 10) / 10,
|
|
60
|
+
totalMB: Math.round(t / MB * 10) / 10
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
jobIdRef.current = ret.jobId;
|
|
65
|
+
try {
|
|
66
|
+
const result = await ret.promise;
|
|
67
|
+
if (cancelledRef.current) return null;
|
|
68
|
+
if (result.statusCode < 200 || result.statusCode >= 300) {
|
|
69
|
+
throw new Error(`HTTP ${result.statusCode}`);
|
|
70
|
+
}
|
|
71
|
+
setState({
|
|
72
|
+
status: 'done',
|
|
73
|
+
progress: 100,
|
|
74
|
+
receivedMB: 0,
|
|
75
|
+
totalMB: 0,
|
|
76
|
+
localPath: destPath,
|
|
77
|
+
error: null
|
|
78
|
+
});
|
|
79
|
+
return destPath;
|
|
80
|
+
} catch (e) {
|
|
81
|
+
if (cancelledRef.current) return null;
|
|
82
|
+
setState({
|
|
83
|
+
status: 'error',
|
|
84
|
+
progress: 0,
|
|
85
|
+
receivedMB: 0,
|
|
86
|
+
totalMB: 0,
|
|
87
|
+
localPath: null,
|
|
88
|
+
error: e?.message ?? trans('chat:file_download_failed')
|
|
89
|
+
});
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}, [fileName, url]);
|
|
93
|
+
const cancel = useCallback(() => {
|
|
94
|
+
cancelledRef.current = true;
|
|
95
|
+
if (jobIdRef.current !== null) {
|
|
96
|
+
RNFS.stopDownload(jobIdRef.current);
|
|
97
|
+
jobIdRef.current = null;
|
|
98
|
+
}
|
|
99
|
+
setState(INITIAL_STATE);
|
|
100
|
+
}, []);
|
|
101
|
+
useEffect(() => () => cancel(), [cancel]);
|
|
102
|
+
|
|
103
|
+
// Eye button — open from cache/downloads if available, otherwise download to cache
|
|
104
|
+
const handleView = useCallback(async () => {
|
|
105
|
+
if (state.status === 'downloading') return;
|
|
106
|
+
if (state.localPath) {
|
|
107
|
+
try {
|
|
108
|
+
const exists = await RNFS.exists(state.localPath);
|
|
109
|
+
if (exists) {
|
|
110
|
+
await openFile(state.localPath);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
} catch {
|
|
114
|
+
// fall through to search dirs
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const searchDirs = Platform.OS === 'android' ? [DownloadDir, CacheDir] : [CacheDir];
|
|
118
|
+
for (const dir of searchDirs) {
|
|
119
|
+
const dirPath = `${dir}/${fileName}`;
|
|
120
|
+
try {
|
|
121
|
+
const exists = await RNFS.exists(dirPath);
|
|
122
|
+
if (exists) {
|
|
123
|
+
setState({
|
|
124
|
+
status: 'done',
|
|
125
|
+
progress: 100,
|
|
126
|
+
receivedMB: 0,
|
|
127
|
+
totalMB: 0,
|
|
128
|
+
localPath: dirPath,
|
|
129
|
+
error: null
|
|
130
|
+
});
|
|
131
|
+
await openFile(dirPath);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
} catch {
|
|
135
|
+
// try next dir
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const path = await runDownload(CacheDir);
|
|
139
|
+
if (path) openFile(path);
|
|
140
|
+
}, [state.status, state.localPath, fileName, openFile, runDownload]);
|
|
141
|
+
|
|
142
|
+
// Download button — cancel if in progress; otherwise download and expose to Files app.
|
|
143
|
+
// iOS: download to cache then show share sheet (user can tap "Save to Files").
|
|
144
|
+
// Android: download to Downloads dir and trigger media scan.
|
|
145
|
+
const handleDownload = useCallback(async () => {
|
|
146
|
+
if (state.status === 'downloading') {
|
|
147
|
+
cancel();
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (Platform.OS === 'ios') {
|
|
151
|
+
const cachedPath = `${CacheDir}/${fileName}`;
|
|
152
|
+
const exists = await RNFS.exists(cachedPath);
|
|
153
|
+
const localPath = exists ? cachedPath : await runDownload(CacheDir);
|
|
154
|
+
if (localPath) {
|
|
155
|
+
await Share.share({
|
|
156
|
+
url: `file://${localPath}`
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
} else {
|
|
160
|
+
await runDownload(DownloadDir);
|
|
161
|
+
}
|
|
162
|
+
UIUtils.toast.open({
|
|
163
|
+
title: trans('chat:file_downloaded_success', {
|
|
164
|
+
fileName
|
|
165
|
+
}),
|
|
166
|
+
theme: 'info'
|
|
167
|
+
});
|
|
168
|
+
}, [state.status, fileName, runDownload, cancel]);
|
|
169
|
+
return {
|
|
170
|
+
state,
|
|
171
|
+
handleView,
|
|
172
|
+
handleDownload
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
//# sourceMappingURL=useFileDownload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","Platform","Share","RNFS","FileViewer","UIUtils","trans","INITIAL_STATE","status","progress","receivedMB","totalMB","localPath","error","CacheDir","CachesDirectoryPath","DownloadDir","OS","DownloadDirectoryPath","useFileDownload","fileName","url","state","setState","jobIdRef","cancelledRef","openFile","path","open","showOpenWithDialog","showAppsSuggestions","toast","title","theme","runDownload","destDir","destPath","current","MB","ret","downloadFile","fromUrl","toFile","res","r","bytesWritten","t","contentLength","prev","Math","round","jobId","result","promise","statusCode","Error","e","message","cancel","stopDownload","handleView","exists","searchDirs","dir","dirPath","handleDownload","cachedPath","share"],"sourceRoot":"../../../src","sources":["hooks/useFileDownload.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -173,18 +173,26 @@ export const useImageAttachment = () => {
|
|
|
173
173
|
console.log('ImageAttach', 'Step 4: Images picked', {
|
|
174
174
|
count: images.length
|
|
175
175
|
});
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
176
|
+
|
|
177
|
+
// The gallery picker can return both images and videos. Apply the
|
|
178
|
+
// correct size limit per type: 5MB for images, 200MB for videos.
|
|
179
|
+
const MAX_IMAGE_SIZE = 5 * 1024 * 1024;
|
|
180
|
+
const MAX_VIDEO_SIZE = 200 * 1024 * 1024;
|
|
181
|
+
const isWithinLimit = item => {
|
|
182
|
+
const maxSize = isVideoFromPicker(item) ? MAX_VIDEO_SIZE : MAX_IMAGE_SIZE;
|
|
183
|
+
return (item.size || 0) <= maxSize;
|
|
184
|
+
};
|
|
185
|
+
const oversizedItems = images.filter(img => !isWithinLimit(img));
|
|
186
|
+
if (oversizedItems.length > 0) {
|
|
187
|
+
const hasOversizedVideo = oversizedItems.some(isVideoFromPicker);
|
|
188
|
+
console.warn('ImageAttach', 'Step 5: Some files too large', {
|
|
189
|
+
count: oversizedItems.length
|
|
182
190
|
});
|
|
183
191
|
UIUtils.toast.open({
|
|
184
|
-
title: trans('chat:image_too_large'),
|
|
192
|
+
title: trans(hasOversizedVideo ? 'chat:video_too_large' : 'chat:image_too_large'),
|
|
185
193
|
theme: 'danger'
|
|
186
194
|
});
|
|
187
|
-
const validImages = images.filter(
|
|
195
|
+
const validImages = images.filter(isWithinLimit);
|
|
188
196
|
if (validImages.length === 0) return;
|
|
189
197
|
images.splice(0, images.length, ...validImages);
|
|
190
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useState","DeviceUtils","UIUtils","trans","getMimeType","isVideoFromPicker","ImageUploadAPI","VideoThumbnailUtil","useImageAttachment","selectedImages","setSelectedImages","isImagePreviewVisible","setIsImagePreviewVisible","updateImageStatus","index","updates","prev","newImages","uploadImage","image","console","log","isUploading","error","uploadProgress","filePath","path","startsWith","replace","filename","setProgress","progress","percentage","err","uploadedImage","size","uploadImageFile","width","height","mime","url","uploadError","Error","message","uploadedUrl","errorMsg","generateVideoThumbnail","videoDuration","duration","warn","timeMs","Math","min","max","floor","videoPath","thumbnail","generateThumbnail","time","quality","cacheId","Date","now","baseName","split","uploadedThumbnail","thumbnailUrl","thumbnailSize","toast","open","title","theme","handleImageAttach","multipleMode","images","openImagePicker","length","count","
|
|
1
|
+
{"version":3,"names":["useCallback","useState","DeviceUtils","UIUtils","trans","getMimeType","isVideoFromPicker","ImageUploadAPI","VideoThumbnailUtil","useImageAttachment","selectedImages","setSelectedImages","isImagePreviewVisible","setIsImagePreviewVisible","updateImageStatus","index","updates","prev","newImages","uploadImage","image","console","log","isUploading","error","uploadProgress","filePath","path","startsWith","replace","filename","setProgress","progress","percentage","err","uploadedImage","size","uploadImageFile","width","height","mime","url","uploadError","Error","message","uploadedUrl","errorMsg","generateVideoThumbnail","videoDuration","duration","warn","timeMs","Math","min","max","floor","videoPath","thumbnail","generateThumbnail","time","quality","cacheId","Date","now","baseName","split","uploadedThumbnail","thumbnailUrl","thumbnailSize","toast","open","title","theme","handleImageAttach","multipleMode","images","openImagePicker","length","count","MAX_IMAGE_SIZE","MAX_VIDEO_SIZE","isWithinLimit","item","maxSize","oversizedItems","filter","img","hasOversizedVideo","some","validImages","splice","startIndex","map","Promise","all","offset","handleImageRemove","_","i","clearAllImages"],"sourceRoot":"../../../src","sources":["hooks/useImageAttachment.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -193,7 +193,7 @@ export const useVideoAttachment = () => {
|
|
|
193
193
|
console.log('VideoAttach', 'Step 4: Videos picked', {
|
|
194
194
|
count: videos.length
|
|
195
195
|
});
|
|
196
|
-
const MAX_FILE_SIZE =
|
|
196
|
+
const MAX_FILE_SIZE = 200 * 1024 * 1024; // 200MB for videos
|
|
197
197
|
const oversizedVideos = videos.filter(vid => (vid.size || 0) > MAX_FILE_SIZE);
|
|
198
198
|
if (oversizedVideos.length > 0) {
|
|
199
199
|
console.warn('VideoAttach', 'Step 5: Some videos too large', {
|
package/lib/module/index.js
CHANGED
|
@@ -18,7 +18,7 @@ export { initializeAttachmentHandlers } from "./services/attachmentHandlers/inde
|
|
|
18
18
|
export { AttachmentOrchestratorService } from "./services/attachmentOrchestrator.js";
|
|
19
19
|
export { Avatar } from "./components/Avatar/index.js";
|
|
20
20
|
export { ThreadCard } from "./components/ThreadCard/index.js";
|
|
21
|
-
export { AttachmentPreview } from "./components/AttachmentPreview.js";
|
|
21
|
+
export { AttachmentPreview } from "./components/AttachmentPreview/index.js";
|
|
22
22
|
export { MediaViewerModal } from "./components/MediaViewerModal.js";
|
|
23
23
|
export { Inbox } from "./screens/inbox/index.js";
|
|
24
24
|
export { default as MediaViewerScreen } from "./screens/MediaView/index.js";
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ChatAPI","setAuthToken","getAuthToken","clearAuthToken","setTokenRefreshCallback","setTokenRefreshFailedCallback","refreshAuthToken","initBaseUrl","getBaseUrl","Config","useImageAttachment","useMediaViewer","initializeAttachmentHandlers","AttachmentOrchestratorService","Avatar","ThreadCard","AttachmentPreview","MediaViewerModal","Inbox","default","MediaViewerScreen","ChatDetail","ChatDetailHeader","ChatComposer","ChatQuickActions","ChatAttachmentPanel","DEFAULT_Chat_QUICK_ACTIONS","DEFAULT_ATTACHMENT_ACTIONS","mapOpenIMMessageToGiftedChat","mapOpenIMMessagesToGiftedChat"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,qBAAY;AACpC,SACEC,YAAY,EACZC,YAAY,EACZC,cAAc,EACdC,uBAAuB,EACvBC,6BAA6B,EAC7BC,gBAAgB,QACX,oBAAiB;AACxB,SAASC,WAAW,EAAEC,UAAU,QAAQ,2BAAwB;AAChE,SAASC,MAAM,QAAQ,mBAAU;AACjC,cAAc,iBAAQ;AACtB,cAAc,kBAAS;AACvB,cAAc,oBAAW;AACzB,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,SAASC,kBAAkB,QAAQ,+BAA4B;AAC/D,SAASC,cAAc,QAAQ,2BAAwB;AAEvD,cAAc,iBAAc;AAC5B,cAAc,wBAAqB;AACnC,cAAc,uBAAoB;AAClC,SAASC,4BAA4B,QAAQ,wCAA+B;AAC5E,SAASC,6BAA6B,QAAQ,sCAAmC;AACjF,SAASC,MAAM,QAAQ,8BAAqB;AAC5C,SAASC,UAAU,QAAQ,kCAAyB;AACpD,SAASC,iBAAiB,QAAQ,
|
|
1
|
+
{"version":3,"names":["ChatAPI","setAuthToken","getAuthToken","clearAuthToken","setTokenRefreshCallback","setTokenRefreshFailedCallback","refreshAuthToken","initBaseUrl","getBaseUrl","Config","useImageAttachment","useMediaViewer","initializeAttachmentHandlers","AttachmentOrchestratorService","Avatar","ThreadCard","AttachmentPreview","MediaViewerModal","Inbox","default","MediaViewerScreen","ChatDetail","ChatDetailHeader","ChatComposer","ChatQuickActions","ChatAttachmentPanel","DEFAULT_Chat_QUICK_ACTIONS","DEFAULT_ATTACHMENT_ACTIONS","mapOpenIMMessageToGiftedChat","mapOpenIMMessagesToGiftedChat"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,qBAAY;AACpC,SACEC,YAAY,EACZC,YAAY,EACZC,cAAc,EACdC,uBAAuB,EACvBC,6BAA6B,EAC7BC,gBAAgB,QACX,oBAAiB;AACxB,SAASC,WAAW,EAAEC,UAAU,QAAQ,2BAAwB;AAChE,SAASC,MAAM,QAAQ,mBAAU;AACjC,cAAc,iBAAQ;AACtB,cAAc,kBAAS;AACvB,cAAc,oBAAW;AACzB,cAAc,gCAA6B;AAC3C,cAAc,4BAAyB;AACvC,SAASC,kBAAkB,QAAQ,+BAA4B;AAC/D,SAASC,cAAc,QAAQ,2BAAwB;AAEvD,cAAc,iBAAc;AAC5B,cAAc,wBAAqB;AACnC,cAAc,uBAAoB;AAClC,SAASC,4BAA4B,QAAQ,wCAA+B;AAC5E,SAASC,6BAA6B,QAAQ,sCAAmC;AACjF,SAASC,MAAM,QAAQ,8BAAqB;AAC5C,SAASC,UAAU,QAAQ,kCAAyB;AACpD,SAASC,iBAAiB,QAAQ,yCAAgC;AAClE,SAASC,gBAAgB,QAAQ,kCAA+B;AAChE,SAASC,KAAK,QAAQ,0BAAiB;AACvC,SAASC,OAAO,IAAIC,iBAAiB,QAAQ,8BAAqB;AAClE,SACEC,UAAU,EACVC,gBAAgB,EAChBC,YAAY,EACZC,gBAAgB,EAChBC,mBAAmB,EACnBC,0BAA0B,EAC1BC,0BAA0B,QACrB,gCAAuB;AAe9B,SACEC,4BAA4B,EAC5BC,6BAA6B,QACxB,8BAA2B","ignoreList":[]}
|