import React, { useEffect, useState } from "react"; import firebase from "firebase/app"; import { Button, Grid, Stack } from "@mui/material"; import videoSrc from "./video.mp4"; import logoSrc from "./logo.svg"; const SHOW_MESSAGE_TIME = 6000; window.debug = false; export const Proiezione = () => { const [messaggi, cambiaMessaggi] = useState([]); const [messaggiApprovati, cambiaMessaggiApprovati] = useState([]); useEffect(() => { var messagesRef = firebase.database().ref("/messaggi"); messagesRef.on("child_added", function (snapshot) { console.log("child_added"); var messaggio = snapshot.val(); cambiaMessaggi((oldArray) => { const newArray = [...oldArray, messaggio].sort( (a, b) => b.timestamp - a.timestamp ); cambiaMessaggiApprovati(newArray.filter((d) => d.approvato)); return newArray; }); }); messagesRef.on("child_removed", function (snapshot) { console.log("child_removed"); var messaggio = snapshot.val(); cambiaMessaggi((oldArray) => { const newArray = []; oldArray.forEach((d) => { if (d.id !== messaggio.id) { newArray.push(d); } }); newArray.sort((a, b) => b.timestamp - a.timestamp); cambiaMessaggiApprovati(newArray.filter((d) => d.approvato)); return newArray; }); }); messagesRef.on("child_changed", function (snapshot) { console.log("child_changed"); const messaggio = snapshot.val(); cambiaMessaggi((oldArray) => { const newArray = [...oldArray]; newArray.forEach((d, i, a) => { if (d.id === messaggio.id) a[i] = messaggio; }); cambiaMessaggiApprovati(newArray.filter((d) => d.approvato)); return newArray; }); }); }, []); const ContainerMessaggio = ({ messaggiApprovati }) => { if (!messaggiApprovati.length) { return
nessun messaggio
; } else { return ; } }; return (
); }; const Messaggio = ({ messaggiApprovati }) => { const [fadeProp, setFadeProp] = useState("in"); const [messaggioDaMostrare, setMessaggioDaMostrare] = useState(null); const [indiceCorrente, cambiaindiceCorrente] = useState(0); const [imageWidth, setImageWidth] = useState(0); const nextMessage = () => { const newIndice = (indiceCorrente + 1) % messaggiApprovati.length; console.log("newIndice", newIndice); cambiaindiceCorrente(newIndice); }; const showNextMessage = (newMessage) => { setFadeProp("in"); setMessaggioDaMostrare(newMessage); setTimeout(() => { console.log("ready for next"); nextMessage(); }, SHOW_MESSAGE_TIME); }; useEffect(() => { const newMessage = messaggiApprovati[indiceCorrente]; if (newMessage != messaggioDaMostrare) { setFadeProp("out"); const timeout = setTimeout(() => { if (newMessage.immagineURL) { const img = new Image(); img.onload = (i) => { console.log("loaded"); console.log(img.width, img.height); setImageWidth(img.width > img.height ? 600 : 400); showNextMessage(newMessage); }; img.src = newMessage.immagineURL; } else { showNextMessage(newMessage); } }, 1000); return () => clearTimeout(timeout); } }, [indiceCorrente]); return (
{messaggioDaMostrare && (
{messaggioDaMostrare.immagineURL && ( )}

{messaggioDaMostrare.testo}

{messaggioDaMostrare.autore && (

da {messaggioDaMostrare.autore}

)}
)}
); }; const VideoComponent = React.memo(() => { return ( ); });