From 48492b9f4e57b1b6691d0a57080e7d62c868c4d3 Mon Sep 17 00:00:00 2001 From: TruongSinh Tran-Nguyen Date: Mon, 12 Jun 2023 08:29:03 -0500 Subject: [PATCH] feat(web): support uploading Insta360 file format (#2725) Insta360 "raw" formats `insv` and `insp` are actually mp4 (video) and jpeg (picture) respectively. However, we don't want user to rename the original files, because they follow Insta360 convention, which is required by Insta360 Studio. --- mobile/lib/utils/files_helper.dart | 6 ++++++ web/src/lib/utils/asset-utils.ts | 4 ++++ web/src/lib/utils/file-uploader.ts | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/mobile/lib/utils/files_helper.dart b/mobile/lib/utils/files_helper.dart index 8b9d5c040..81fae9cee 100644 --- a/mobile/lib/utils/files_helper.dart +++ b/mobile/lib/utils/files_helper.dart @@ -47,6 +47,12 @@ class FileHelper { case 'webm': return {"type": "video", "subType": "webm"}; + case 'insp': + return {"type": "image", "subType": "jpeg"}; + + case 'insv': + return {"type": "video", "subType": "mp4"}; + default: return {"type": "unsupport", "subType": "unsupport"}; } diff --git a/web/src/lib/utils/asset-utils.ts b/web/src/lib/utils/asset-utils.ts index 0363962dc..c12fe7b44 100644 --- a/web/src/lib/utils/asset-utils.ts +++ b/web/src/lib/utils/asset-utils.ts @@ -146,6 +146,10 @@ export function getFileMimeType(file: File): string { return 'image/x-fuji-raf'; case 'srw': return 'image/x-samsung-srw'; + case 'insp': + return 'image/jpeg'; + case 'insv': + return 'video/mp4'; default: return ''; } diff --git a/web/src/lib/utils/file-uploader.ts b/web/src/lib/utils/file-uploader.ts index 9f91ff047..a97c6f85b 100644 --- a/web/src/lib/utils/file-uploader.ts +++ b/web/src/lib/utils/file-uploader.ts @@ -22,7 +22,7 @@ export const openFileUploadDialog = async ( // When adding a content type that is unsupported by browsers, make sure // to also add it to getFileMimeType() otherwise the upload will fail. - fileSelector.accept = 'image/*,video/*,.heic,.heif,.dng,.3gp,.nef,.srw,.raf'; + fileSelector.accept = 'image/*,video/*,.heic,.heif,.dng,.3gp,.nef,.srw,.raf,.insp,.insv'; fileSelector.onchange = async (e: Event) => { const target = e.target as HTMLInputElement;