diff --git a/package/expo-package/src/optionalDependencies/takePhoto.ts b/package/expo-package/src/optionalDependencies/takePhoto.ts index 78cd4e84f5..6baec01d2a 100644 --- a/package/expo-package/src/optionalDependencies/takePhoto.ts +++ b/package/expo-package/src/optionalDependencies/takePhoto.ts @@ -61,7 +61,7 @@ export const takePhoto = ImagePicker ...photo, cancelled: false, duration: photo.duration, // in milliseconds - name: 'video_recording_' + date + photo.uri.split('.').pop(), + name: 'video_recording_' + date + '.' + photo.uri.split('.').pop(), size: photo.fileSize, source: 'camera', type: photo.mimeType, @@ -91,9 +91,12 @@ export const takePhoto = ImagePicker width: photo.width, }; } - + const clearFilter = new RegExp('[.:]', 'g'); + const date = new Date().toISOString().replace(clearFilter, '_'); return { cancelled: false, + mimeType: photo.mimeType, + name: 'image_' + date + '.' + photo.uri.split('.').pop(), size: photo.fileSize, source: 'camera', type: photo.mimeType, diff --git a/package/native-package/src/optionalDependencies/takePhoto.ts b/package/native-package/src/optionalDependencies/takePhoto.ts index 5c1cf1c107..477841ddc1 100644 --- a/package/native-package/src/optionalDependencies/takePhoto.ts +++ b/package/native-package/src/optionalDependencies/takePhoto.ts @@ -53,7 +53,8 @@ export const takePhoto = ImagePicker ...asset, cancelled: false, duration: asset.duration * 1000, - name: 'video_recording_' + date + asset.fileName.split('.').pop(), + mimeType: asset.type, + name: 'video_recording_' + date + '.' + asset.fileName.split('.').pop(), size: asset.fileSize, source: 'camera', type: asset.type, @@ -85,8 +86,12 @@ export const takePhoto = ImagePicker width: asset.width, }; } + const clearFilter = new RegExp('[.:]', 'g'); + const date = new Date().toISOString().replace(clearFilter, '_'); return { cancelled: false, + mimeType: asset.type, + name: 'video_recording_' + date + '.' + asset.fileName.split('.').pop(), size: asset.size, source: 'camera', type: asset.type, diff --git a/package/src/contexts/messageInputContext/utils/utils.ts b/package/src/contexts/messageInputContext/utils/utils.ts index 6db64ec99c..4999a1f1ec 100644 --- a/package/src/contexts/messageInputContext/utils/utils.ts +++ b/package/src/contexts/messageInputContext/utils/utils.ts @@ -44,7 +44,16 @@ export const isUploadAllowed = ({ config, file }: CheckUploadPermissionsParams) } if (allowed_mime_types?.length) { - if (file.name) { + if (file.mimeType) { + const allowed = allowed_mime_types.some( + (mimeType: string) => + file.mimeType && file.mimeType.toLowerCase() === mimeType.toLowerCase(), + ); + + if (!allowed) { + return false; + } + } else if (file.name) { const fileMimeType = lookup(file.name) as string; const allowed = allowed_mime_types.some( (mimeType: string) => fileMimeType.toLowerCase() === mimeType.toLowerCase(), @@ -57,7 +66,16 @@ export const isUploadAllowed = ({ config, file }: CheckUploadPermissionsParams) } if (blocked_mime_types?.length) { - if (file.name) { + if (file.mimeType) { + const blocked = blocked_mime_types.some( + (mimeType: string) => + file.mimeType && file.mimeType.toLowerCase() === mimeType.toLowerCase(), + ); + + if (blocked) { + return false; + } + } else if (file.name) { const fileMimeType = lookup(file.name) as string; const blocked = blocked_mime_types.some( (mimeType: string) => fileMimeType.toLowerCase() === mimeType.toLowerCase(), diff --git a/package/src/types/types.ts b/package/src/types/types.ts index e02c66fc27..6d59e3f8c4 100644 --- a/package/src/types/types.ts +++ b/package/src/types/types.ts @@ -27,6 +27,7 @@ export type Asset = { uri: string; width: number; id?: string; + mimeType?: string; originalUri?: string; size?: number; };