import React, { useEffect, useState } from "react"; import { useParams } from "react-router-dom"; import firebase from "firebase/app"; import ArrowForwardIcon from "@mui/icons-material/ArrowForward"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import IconButton from "@mui/material/IconButton"; import { Stack } from "@mui/system"; import logoSrc from "./logo_chat.svg"; import { Fade, LinearProgress } from "@mui/material"; export const Galleria = () => { const { evento } = useParams(); const [messaggi, cambiaMessaggi] = useState([]); const [imgIndex, cambiaimgIndex] = useState(0); const [images, cambiaimmagini] = useState([]); useEffect(() => { var messagesRef = firebase.database().ref(`/messaggi/${evento}`); messagesRef.on("value", function (snapshot) { const messaggiObject = snapshot.val(); const messaggi = Object.keys(messaggiObject) .map((d) => { return messaggiObject[d]; }) .filter((d) => d.approvato) .sort((a, b) => a.timestamp - b.timestamp); cambiaMessaggi(messaggi); cambiaimmagini( messaggi .filter((d) => d.immagineURL != null) .map((d) => { return d.immagineURL; }) ); }); }, [evento]); useEffect(() => { if (images) { function loadImage() { const img = new Image(); img.src = images[imgIndex]; img.onload = () => { if (imgIndex < images.length) { cambiaimgIndex((i) => { return i + 1; }); } }; } loadImage(); } }, [imgIndex, images]); return (
{imgIndex !== images.length && ( )}
{imgIndex === images.length && ( )}
); }; const ContenitoreMessaggio = ({ messaggi }) => { const [indiceCorrente, cambiaindiceCorrente] = useState(0); const messaggioDaMostrare = messaggi[indiceCorrente]; console.log(indiceCorrente); return (
{messaggioDaMostrare && ( )}
{indiceCorrente > 0 && ( cambiaindiceCorrente(indiceCorrente - 1)}> )} {indiceCorrente < messaggi.length - 1 && ( cambiaindiceCorrente(indiceCorrente + 1)}> )}
); }; function ImagePlaceholder({ messaggioDaMostrare }) { const [imageLoaded, setImageLoaded] = useState(false); useEffect(() => { if (messaggioDaMostrare.immagineURL) { const image = new Image(); image.onload = () => { setImageLoaded(true); }; image.src = messaggioDaMostrare.immagineURL; } else { setImageLoaded(true); } }, [messaggioDaMostrare.immagineURL]); return (
{messaggioDaMostrare.immagineURL && ( )}
); } const Messaggio = ({ messaggioDaMostrare }) => { const date = new Date(messaggioDaMostrare.timestamp); return ( <>

{messaggioDaMostrare.testo}

{messaggioDaMostrare.autore && (

da {messaggioDaMostrare.autore}

)}

{date.toLocaleString("it-IT")}

); };