From 587d1983b8022b713dd9a9de7873ff032155430b Mon Sep 17 00:00:00 2001 From: neoapps-dev Date: Mon, 22 Jun 2026 22:29:03 +0300 Subject: [PATCH] fix: sfx issue, closes #80 --- src/components/common/AchievementToast.tsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/components/common/AchievementToast.tsx b/src/components/common/AchievementToast.tsx index 2f84729..8bc1908 100644 --- a/src/components/common/AchievementToast.tsx +++ b/src/components/common/AchievementToast.tsx @@ -1,4 +1,4 @@ -import { useEffect } from "react"; +import { useEffect, useRef } from "react"; import { motion, AnimatePresence } from "framer-motion"; import { useAudio } from "../../context/LauncherContext"; @@ -18,20 +18,28 @@ export function AchievementToast({ variant = "error", }: AchievementToastProps) { const { playSfx } = useAudio(); - + const prevMessage = useRef(message); useEffect(() => { - if (message) { + const wasNull = !prevMessage.current; + const isNull = !message; + prevMessage.current = message; + if (message && wasNull) { if (variant === "update") { playSfx("notification.ogg"); } else { playSfx("in.ogg"); } + } + + if (message) { const timer = setTimeout(() => { onClose(); }, 8000); return () => { clearTimeout(timer); - playSfx("out.ogg"); + if (isNull) { + playSfx("out.ogg"); + } }; } }, [message, onClose, variant, playSfx]);