Skip to content

Commit 8dbd9a8

Browse files
authored
fix: video upload issue through image picker (#2204)
* fix: video upload issue through image picker * fix: video upload issue through image picker * refactor: add relevant comment * fix: check of video type in AttachmentPickerItem.tsx * fix: check of video type in AttachmentPickerItem.tsx
1 parent b7d1fa6 commit 8dbd9a8

File tree

1 file changed

+25
-23
lines changed

1 file changed

+25
-23
lines changed

package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,16 @@ const AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {
7070
Alert.alert('Maximum number of files reached');
7171
return files;
7272
}
73+
// We need a mime-type to upload a video file.
74+
const mimeType = lookup(asset.filename) || 'multipart/form-data';
7375
return [
7476
...files,
7577
{
7678
duration: durationLabel,
7779
id: asset.id,
80+
mimeType,
7881
name: asset.filename,
7982
size: asset.fileSize,
80-
type: 'video',
8183
uri: asset.uri,
8284
},
8385
];
@@ -174,16 +176,6 @@ const AttachmentImage: React.FC<AttachmentImageProps> = (props) => {
174176
);
175177
};
176178

177-
const getFileType = (asset: Asset) => {
178-
const { filename } = asset;
179-
if (filename) {
180-
const contentType = lookup(filename) || 'multipart/form-data';
181-
return contentType.startsWith('image/') ? 'image' : 'video';
182-
} else {
183-
return asset.type === 'video' ? 'video' : 'image';
184-
}
185-
};
186-
187179
export const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {
188180
const {
189181
asset,
@@ -196,9 +188,29 @@ export const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerIte
196188
setSelectedImages,
197189
} = item;
198190

199-
const fileType = getFileType(asset);
191+
/**
192+
* Expo Media Library - Result of asset type
193+
* Native Android - Gives mime type(Eg: image/jpeg, video/mp4, etc.)
194+
* Native iOS - Gives `image` or `video`
195+
* Expo Android/iOS - Gives `photo` or `video`
196+
**/
197+
const isVideoType = asset.type.includes('video');
198+
199+
if (isVideoType) {
200+
return (
201+
<AttachmentVideo
202+
asset={asset}
203+
ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}
204+
maxNumberOfFiles={maxNumberOfFiles}
205+
numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}
206+
numberOfUploads={numberOfUploads}
207+
selected={selected}
208+
setSelectedFiles={setSelectedFiles}
209+
/>
210+
);
211+
}
200212

201-
return fileType === 'image' ? (
213+
return (
202214
<AttachmentImage
203215
asset={asset}
204216
ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}
@@ -208,16 +220,6 @@ export const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerIte
208220
selected={selected}
209221
setSelectedImages={setSelectedImages}
210222
/>
211-
) : (
212-
<AttachmentVideo
213-
asset={asset}
214-
ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}
215-
maxNumberOfFiles={maxNumberOfFiles}
216-
numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}
217-
numberOfUploads={numberOfUploads}
218-
selected={selected}
219-
setSelectedFiles={setSelectedFiles}
220-
/>
221223
);
222224
};
223225

0 commit comments

Comments
 (0)