about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/lib/media/video/compress.ts17
-rw-r--r--src/state/queries/video/compress-video.ts2
2 files changed, 16 insertions, 3 deletions
diff --git a/src/lib/media/video/compress.ts b/src/lib/media/video/compress.ts
index e783a8438..ebbbc2034 100644
--- a/src/lib/media/video/compress.ts
+++ b/src/lib/media/video/compress.ts
@@ -1,9 +1,13 @@
 import {getVideoMetaData, Video} from 'react-native-compressor'
+import {ImagePickerAsset} from 'expo-image-picker'
 
+import {SUPPORTED_MIME_TYPES, SupportedMimeTypes} from '#/lib/constants'
 import {CompressedVideo} from './types'
 
+const MIN_SIZE_FOR_COMPRESSION = 1024 * 1024 * 25 // 25mb
+
 export async function compressVideo(
-  file: string,
+  file: ImagePickerAsset,
   opts?: {
     signal?: AbortSignal
     onProgress?: (progress: number) => void
@@ -11,12 +15,21 @@ export async function compressVideo(
 ): Promise<CompressedVideo> {
   const {onProgress, signal} = opts || {}
 
+  const isAcceptableFormat = SUPPORTED_MIME_TYPES.includes(
+    file.mimeType as SupportedMimeTypes,
+  )
+
+  const minimumFileSizeForCompress = isAcceptableFormat
+    ? MIN_SIZE_FOR_COMPRESSION
+    : 0
+
   const compressed = await Video.compress(
-    file,
+    file.uri,
     {
       compressionMethod: 'manual',
       bitrate: 3_000_000, // 3mbps
       maxSize: 1920,
+      minimumFileSizeForCompress,
       getCancellationId: id => {
         if (signal) {
           signal.addEventListener('abort', () => {
diff --git a/src/state/queries/video/compress-video.ts b/src/state/queries/video/compress-video.ts
index 533b58416..cefbf9406 100644
--- a/src/state/queries/video/compress-video.ts
+++ b/src/state/queries/video/compress-video.ts
@@ -20,7 +20,7 @@ export function useCompressVideoMutation({
     mutationKey: ['video', 'compress'],
     mutationFn: cancelable(
       (asset: ImagePickerAsset) =>
-        compressVideo(asset.uri, {
+        compressVideo(asset, {
           onProgress: num => onProgress(trunc2dp(num)),
           signal,
         }),