import { Video } from "expo-av"; import React, { useMemo, useState } from "react"; import { FlatList, Image, RefreshControl, Text, TouchableOpacity, View, } from "react-native"; import env from "../../env"; import { DetermineFileType } from "../../util/document-upload.utility"; import MediaCacheOverlay from "../media-cache-overlay/media-cache-overlay.component"; export default function JobDocumentsComponent({ job, loading, refetch }) { const [previewVisible, setPreviewVisible] = useState(false); const [videoUri, setVideoUri] = useState(null); const [status, setStatus] = React.useState({}); console.log( "🚀 ~ file: job-documents.component.jsx ~ line 19 ~ status", status ); const [imgIndex, setImgIndex] = useState(0); const onRefresh = async () => { return refetch(); }; const fullphotos = useMemo( () => job.documents.map((doc) => { return { source: { uri: GenerateSrcUrl(doc), }, }; }), [job.documents] ); return ( } data={job.documents} numColumns={4} style={{ flex: 1 }} keyExtractor={(item) => item.id} renderItem={(object) => ( { if (DetermineFileType(object.item.type) === "image") { //If image setImgIndex(object.index); setPreviewVisible(true); } else { //If Video setVideoUri(GenerateSrcUrl(object.item)); } }} > )} /> {job.documents.length} ); } export const GenerateSrcUrl = (value) => { let extension = value.extension; if (extension && extension.includes("heic")) extension = "jpg"; return `${env.REACT_APP_CLOUDINARY_ENDPOINT}/${DetermineFileType( value.type )}/upload/${value.key}${extension ? `.${extension}` : ""}`; }; export const GenerateThumbUrl = (value) => { let extension = value.extension; if (extension && extension.includes("heic")) extension = "jpg"; else if ( DetermineFileType(value.type) !== "image" || (value.type && value.type.includes("application")) ) extension = "jpg"; return `${env.REACT_APP_CLOUDINARY_ENDPOINT}/${DetermineFileType( value.type )}/upload/${env.REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS}/${value.key}${ extension ? `.${extension}` : "" }`; };