KeyStone / keystone-app /components /MediaViewer.tsx
dpv007's picture
fix: resolve 404 on thumbnail serve, scrubber pan responder, zooming issues, and swiper alignment
e179c31
Raw
History Blame Contribute Delete
1.04 kB
import React from 'react';
import { StyleSheet } from 'react-native';
import { Image } from 'expo-image';
import CustomVideoPlayer from './CustomVideoPlayer';
interface MediaViewerProps {
asset: any;
shouldPlay?: boolean;
isActive?: boolean;
}
export default function MediaViewer({ asset, shouldPlay = true, isActive = true }: MediaViewerProps) {
if (!asset) return null;
const isVideo =
asset.mediaType === 'video' ||
asset.filename?.toLowerCase().match(/\.(mp4|mov|avi|webm)$/i);
if (isVideo && isActive) {
return <CustomVideoPlayer uri={asset.uri} shouldPlay={shouldPlay} />;
}
// expo-image natively supports GIFs and handles caching perfectly.
return (
<Image
source={{ uri: asset.uri }}
placeholder={asset.cloudThumbUri ? { uri: asset.cloudThumbUri } : undefined}
style={{ flex: 1, width: '100%', height: '100%' }}
contentFit="contain"
cachePolicy="memory-disk"
transition={200}
backgroundColor="transparent"
allowDownscaling={false}
/>
);
}