sounds: suppress error when user has disabled autoplay
This commit is contained in:
parent
1604e5061b
commit
1bfe5908a9
1 changed files with 10 additions and 2 deletions
|
@ -19,7 +19,7 @@ const createAudio = (sources: Sound[]): HTMLAudioElement => {
|
|||
};
|
||||
|
||||
/** Play HTML5 sound. */
|
||||
const play = (audio: HTMLAudioElement): void => {
|
||||
const play = (audio: HTMLAudioElement): Promise<void> => {
|
||||
if (!audio.paused) {
|
||||
audio.pause();
|
||||
if (typeof audio.fastSeek === 'function') {
|
||||
|
@ -29,7 +29,15 @@ const play = (audio: HTMLAudioElement): void => {
|
|||
}
|
||||
}
|
||||
|
||||
audio.play();
|
||||
return audio.play().catch((error: Error) => {
|
||||
if (error.name === 'NotAllowedError') {
|
||||
// User has disabled autoplay.
|
||||
// https://developer.mozilla.org/en-US/docs/Web/Media/Autoplay_guide
|
||||
return;
|
||||
} else {
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const soundCache: Record<Sounds, HTMLAudioElement> = {
|
||||
|
|
Loading…
Reference in a new issue