about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSamuel Newman <mozzius@protonmail.com>2024-09-08 16:27:50 +0100
committerGitHub <noreply@github.com>2024-09-08 08:27:50 -0700
commit6c6a76b193edfd8bd46139b85fefd684ee557a8c (patch)
treeb5b0efddb02ded2d8cbd80bdae049a102a20e19f
parent95aee146b63f53e1cc8c686ef28dc7059b2d557f (diff)
downloadvoidsky-6c6a76b193edfd8bd46139b85fefd684ee557a8c.tar.zst
[Video] Upload tweaks (#5228)
* use correct mime type

* fix wheel progress
-rw-r--r--src/lib/media/video/compress.ts3
-rw-r--r--src/state/queries/video/util.ts15
-rw-r--r--src/view/com/composer/Composer.tsx6
3 files changed, 21 insertions, 3 deletions
diff --git a/src/lib/media/video/compress.ts b/src/lib/media/video/compress.ts
index ebbbc2034..c2a30df33 100644
--- a/src/lib/media/video/compress.ts
+++ b/src/lib/media/video/compress.ts
@@ -2,6 +2,7 @@ import {getVideoMetaData, Video} from 'react-native-compressor'
 import {ImagePickerAsset} from 'expo-image-picker'
 
 import {SUPPORTED_MIME_TYPES, SupportedMimeTypes} from '#/lib/constants'
+import {extToMime} from '#/state/queries/video/util'
 import {CompressedVideo} from './types'
 
 const MIN_SIZE_FOR_COMPRESSION = 1024 * 1024 * 25 // 25mb
@@ -43,5 +44,5 @@ export async function compressVideo(
 
   const info = await getVideoMetaData(compressed)
 
-  return {uri: compressed, size: info.size, mimeType: `video/mp4`}
+  return {uri: compressed, size: info.size, mimeType: extToMime(info.extension)}
 }
diff --git a/src/state/queries/video/util.ts b/src/state/queries/video/util.ts
index 7ea38d8dc..2c1298ab6 100644
--- a/src/state/queries/video/util.ts
+++ b/src/state/queries/video/util.ts
@@ -39,3 +39,18 @@ export function mimeToExt(mimeType: SupportedMimeTypes | (string & {})) {
       throw new Error(`Unsupported mime type: ${mimeType}`)
   }
 }
+
+export function extToMime(ext: string) {
+  switch (ext) {
+    case 'mp4':
+      return 'video/mp4'
+    case 'webm':
+      return 'video/webm'
+    case 'mpeg':
+      return 'video/mpeg'
+    case 'mov':
+      return 'video/quicktime'
+    default:
+      throw new Error(`Unsupported file extension: ${ext}`)
+  }
+}
diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx
index 25ed6c769..a637b5996 100644
--- a/src/view/com/composer/Composer.tsx
+++ b/src/view/com/composer/Composer.tsx
@@ -1154,10 +1154,12 @@ function VideoUploadToolbar({state}: {state: VideoUploadState}) {
   const progress = state.jobStatus?.progress
     ? state.jobStatus.progress / 100
     : state.progress
-  let wheelProgress = progress === 0 || progress === 1 ? 0.33 : progress
+  const shouldRotate =
+    state.status === 'processing' && (progress === 0 || progress === 1)
+  let wheelProgress = shouldRotate ? 0.33 : progress
 
   const rotate = useDerivedValue(() => {
-    if (progress === 0 || progress >= 0.99) {
+    if (shouldRotate) {
       return withRepeat(
         withTiming(360, {
           duration: 2500,