import {BsImage} from "react-icons/bs" import {ReactElement, useState} from "react" import {MdLocationOn} from "react-icons/md" import {useLoaderData} from "react-router-dom" import {useTranslation} from "react-i18next" import addHours from "date-fns/addHours" import isBefore from "date-fns/isBefore" import { Box, Collapse, Grid, List, ListItemButton, ListItemIcon, ListItemText, useTheme, } from "@mui/material" import {DecryptedReportContent, ServerSettings} from "~/server-types" import {isDev} from "~/constants/development" export interface ProxiedImagesListItemProps { images: DecryptedReportContent["messageDetails"]["content"]["proxiedImages"] } export default function ProxiedImagesListItem({images}: ProxiedImagesListItemProps): ReactElement { const {t} = useTranslation() const serverSettings = useLoaderData() as ServerSettings const theme = useTheme() const [showProxiedImages, setShowProxiedImages] = useState(false) return ( <> { if (images.length > 0) { setShowProxiedImages(value => !value) } }} > {t("routes.ReportDetailRoute.sections.trackers.results.proxiedImages.text", { count: images.length, })} {images.map(image => ( {(() => { if ( isBefore( new Date(), addHours( image.createdAt, serverSettings.imageProxyLifeTime, ), ) ) { return t( "routes.ReportDetailRoute.sections.trackers.results.proxiedImages.status.isStored", ) } else { return t( "routes.ReportDetailRoute.sections.trackers.results.proxiedImages.status.isProxying", ) } })()} } /> ))} ) }