diff --git a/src/lib/media/video/compress.ts b/src/lib/media/video/compress.ts index ebbbc203..c2a30df3 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 7ea38d8d..2c1298ab 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 25ed6c76..a637b599 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,