@@ -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-
187179export 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