"use client" import { ManagerStatusDataMap } from "@rahoot/common/types/game/status" import AnswerButton from "@rahoot/web/components/AnswerButton" import QuestionMedia from "@rahoot/web/components/game/QuestionMedia" import { ANSWERS_COLORS, ANSWERS_ICONS, SFX_ANSWERS_MUSIC, SFX_RESULTS_SOUND, } from "@rahoot/web/utils/constants" import { calculatePercentages } from "@rahoot/web/utils/score" import clsx from "clsx" import { useEffect, useState } from "react" import useSound from "use-sound" type Props = { data: ManagerStatusDataMap["SHOW_RESPONSES"] } const Responses = ({ data: { question, answers, responses, correct, image, media }, }: Props) => { const [percentages, setPercentages] = useState>({}) const [isMusicPlaying, setIsMusicPlaying] = useState(false) const [isMediaPlaying, setIsMediaPlaying] = useState(false) const [sfxResults] = useSound(SFX_RESULTS_SOUND, { volume: 0.2, }) const [playMusic, { stop: stopMusic, sound: answersMusic }] = useSound( SFX_ANSWERS_MUSIC, { volume: 0.2, onplay: () => { setIsMusicPlaying(true) }, onend: () => { setIsMusicPlaying(false) }, }, ) useEffect(() => { stopMusic() sfxResults() setPercentages(calculatePercentages(responses)) }, [responses, playMusic, stopMusic, sfxResults]) useEffect(() => { if (!isMusicPlaying) { playMusic() } }, [isMusicPlaying, playMusic]) useEffect(() => { if (!answersMusic) { return } answersMusic.volume(isMediaPlaying ? 0.05 : 0.2) }, [answersMusic, isMediaPlaying]) useEffect(() => { stopMusic() }, [playMusic, stopMusic]) return (

{question}

setIsMediaPlaying(playing)} />
{answers.map((_, key) => (
{responses[key] || 0}
))}
{answers.map((answer, key) => ( {answer} ))}
) } export default Responses