diff options
Diffstat (limited to 'src/view/com/composer/videos/VideoTranscodeBackdrop.tsx')
-rw-r--r-- | src/view/com/composer/videos/VideoTranscodeBackdrop.tsx | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/view/com/composer/videos/VideoTranscodeBackdrop.tsx b/src/view/com/composer/videos/VideoTranscodeBackdrop.tsx new file mode 100644 index 000000000..1f4173642 --- /dev/null +++ b/src/view/com/composer/videos/VideoTranscodeBackdrop.tsx @@ -0,0 +1,37 @@ +import React, {useEffect} from 'react' +import {clearCache, createVideoThumbnail} from 'react-native-compressor' +import Animated, {FadeIn} from 'react-native-reanimated' +import {Image} from 'expo-image' +import {useQuery} from '@tanstack/react-query' + +import {atoms as a} from '#/alf' + +export function VideoTranscodeBackdrop({uri}: {uri: string}) { + const {data: thumbnail} = useQuery({ + queryKey: ['thumbnail', uri], + queryFn: async () => { + return await createVideoThumbnail(uri) + }, + }) + + useEffect(() => { + return () => { + clearCache() + } + }, []) + + return ( + <Animated.View style={a.flex_1} entering={FadeIn}> + {thumbnail && ( + <Image + style={a.flex_1} + source={thumbnail.path} + cachePolicy="none" + accessibilityIgnoresInvertColors + blurRadius={15} + contentFit="cover" + /> + )} + </Animated.View> + ) +} |