import { useEffect, useState } from 'react'; import { Card, CardContent, Typography, Box, ButtonBase, Divider, Dialog, IconButton, useTheme, } from '@mui/material'; import RefreshIcon from '@mui/icons-material/Refresh'; import OpenInNewIcon from '@mui/icons-material/OpenInNew'; import { CustomLoader } from '../../common/CustomLoader'; import ImageIcon from '@mui/icons-material/Image'; import CloseIcon from '@mui/icons-material/Close'; import { decodeIfEncoded } from '../../utils/decode'; import { useTranslation } from 'react-i18next'; export const ImageCard = ({ image, fetchImage, owner, refresh, openExternal, external, isLoadingParent, errorMsg, encryptionType, }) => { const theme = useTheme(); const { t } = useTranslation([ 'auth', 'core', 'group', 'question', 'tutorial', ]); const [isOpen, setIsOpen] = useState(true); const [height, setHeight] = useState('400px'); useEffect(() => { if (isOpen) { fetchImage(); } }, [isOpen]); return ( {t('core:image_embed', { postProcess: 'capitalizeFirstWord' })} {external && ( )} {t('core:message.error.created_by', { owner: decodeIfEncoded(owner), postProcess: 'capitalizeFirstChar', })} {encryptionType === 'private' ? t('core:message.generic.encrypted', { postProcess: 'capitalizeAll', }) : encryptionType === 'group' ? t('group:message.generic.group_encrypted', { postProcess: 'capitalizeAll', }) : t('core:message.generic.encrypted_not', { postProcess: 'capitalizeFirstChar', })} {isLoadingParent && isOpen && ( )} {errorMsg && ( {' '} {errorMsg} )} ); }; export function ImageViewer({ src, alt = '' }) { const [isFullscreen, setIsFullscreen] = useState(false); const handleOpenFullscreen = () => setIsFullscreen(true); const handleCloseFullscreen = () => setIsFullscreen(false); const theme = useTheme(); return ( <> {/* Image in container */} {alt} {/* Fullscreen Viewer */} {/* Close Button */} {/* Fullscreen Image */} {alt} ); }