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 [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) => ( { setImgIndex(object.index); setPreviewVisible(true); }} > )} /> {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) => `${env.REACT_APP_CLOUDINARY_ENDPOINT}/${DetermineFileType( value.type )}/upload/${env.REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS}/${value.key}`;