import React, { useState } from 'react'; import { View, Text, TouchableWithoutFeedback, StyleSheet, SafeAreaView } from 'react-native'; import FastImage from 'react-native-fast-image'; import PropTypes from 'prop-types'; import Modal from 'react-native-modal'; import ImageViewer from 'react-native-image-zoom-viewer'; import { Video } from 'expo-av'; import sharedStyles from '../views/Styles'; import { formatAttachmentUrl } from '../lib/utils'; import ActivityIndicator from './ActivityIndicator'; import { themes } from '../constants/colors'; import { withTheme } from '../theme'; const styles = StyleSheet.create({ safeArea: { flex: 1 }, modal: { margin: 0 }, titleContainer: { width: '100%', alignItems: 'center', marginVertical: 10 }, title: { textAlign: 'center', fontSize: 16, ...sharedStyles.textSemibold }, description: { textAlign: 'center', fontSize: 14, ...sharedStyles.textMedium }, video: { flex: 1 } }); const ModalContent = React.memo(({ attachment, onClose, user, baseUrl, theme }) => { if (attachment && attachment.image_url) { const url = formatAttachmentUrl(attachment.image_url, user.id, user.token, baseUrl); return ( {attachment.title} {attachment.description ? {attachment.description} : null} null} renderImage={props => } loadingRender={() => } /> ); } if (attachment && attachment.video_url) { const [loading, setLoading] = useState(true); const uri = formatAttachmentUrl(attachment.video_url, user.id, user.token, baseUrl); return ( <>