Set up AudioContext after mouse click on the page

This commit is contained in:
Noah 2023-06-11 19:21:06 -07:00
parent b07baca245
commit f9fb6b5b0d

View File

@ -181,7 +181,6 @@ const app = Vue.createApp({
} }
}, },
mounted() { mounted() {
this.setupSounds();
this.setupConfig(); // localSettings persisted settings this.setupConfig(); // localSettings persisted settings
this.setupIdleDetection(); this.setupIdleDetection();
@ -210,7 +209,12 @@ const app = Vue.createApp({
}); });
window.addEventListener("blur", () => { window.addEventListener("blur", () => {
this.windowFocused = false; this.windowFocused = false;
}) });
// Set up sound effects on first page interaction.
window.addEventListener("click", () => {
this.setupSounds();
});
for (let channel of this.config.channels) { for (let channel of this.config.channels) {
this.initHistory(channel.ID); this.initHistory(channel.ID);
@ -1460,6 +1464,13 @@ const app = Vue.createApp({
*/ */
setupSounds() { setupSounds() {
// Note: setupSounds had to be called on a page gesture (mouse click) before browsers
// allow it to set up the AudioContext. If we've successfully set one up before, exit
// this function immediately.
if (this.config.sounds.audioContext) {
return;
}
try { try {
if (AudioContext) { if (AudioContext) {
this.config.sounds.audioContext = new AudioContext(); this.config.sounds.audioContext = new AudioContext();