fix i cheto sdelal
This commit is contained in:
@ -1,13 +1,52 @@
|
||||
import buySound from '../assets/sounds/buy.mp3';
|
||||
|
||||
let buyAudio: HTMLAudioElement | null = null;
|
||||
let unlocked = false;
|
||||
|
||||
export const primeSounds = () => {
|
||||
try {
|
||||
if (unlocked) return;
|
||||
|
||||
if (!buyAudio) {
|
||||
buyAudio = new Audio(buySound);
|
||||
buyAudio.volume = 0; // тихо, чтобы не слышно
|
||||
}
|
||||
|
||||
// попытка "разлочить" аудио в контексте user gesture
|
||||
const p = buyAudio.play();
|
||||
if (p && typeof (p as Promise<void>).then === 'function') {
|
||||
(p as Promise<void>)
|
||||
.then(() => {
|
||||
buyAudio?.pause();
|
||||
if (buyAudio) buyAudio.currentTime = 0;
|
||||
if (buyAudio) buyAudio.volume = 0.6; // вернуть норм громкость
|
||||
unlocked = true;
|
||||
})
|
||||
.catch(() => {
|
||||
// если заблокировано — попробуем снова при следующем клике
|
||||
});
|
||||
} else {
|
||||
// на всякий: если play синхронный
|
||||
buyAudio.pause();
|
||||
buyAudio.currentTime = 0;
|
||||
buyAudio.volume = 0.6;
|
||||
unlocked = true;
|
||||
}
|
||||
} catch {
|
||||
// не ломаем UI
|
||||
}
|
||||
};
|
||||
|
||||
export const playBuySound = () => {
|
||||
if (!buyAudio) {
|
||||
buyAudio = new Audio(buySound);
|
||||
buyAudio.volume = 0.6;
|
||||
}
|
||||
try {
|
||||
if (!buyAudio) {
|
||||
buyAudio = new Audio(buySound);
|
||||
buyAudio.volume = 0.6;
|
||||
}
|
||||
|
||||
buyAudio.currentTime = 0;
|
||||
buyAudio.play().catch(() => {});
|
||||
buyAudio.currentTime = 0;
|
||||
buyAudio.play().catch(() => {});
|
||||
} catch {
|
||||
// игнор
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user