mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-10-15 14:40:00 -05:00
33 lines
1011 B
TypeScript
33 lines
1011 B
TypeScript
import { logger } from "~/utils/logger";
|
|
import { soundPath } from "~/utils/urls";
|
|
|
|
export function soundCodeToLocalStorageKey(soundCode: string) {
|
|
return `settings__sound-enabled__${soundCode}`;
|
|
}
|
|
|
|
export function soundEnabled(soundCode: string) {
|
|
const localStorageKey = soundCodeToLocalStorageKey(soundCode);
|
|
const stored = localStorage.getItem(localStorageKey);
|
|
|
|
return !stored || stored === "true";
|
|
}
|
|
|
|
export function playSound(soundCode: string) {
|
|
if (!soundEnabled(soundCode)) return;
|
|
|
|
playSoundIgnoringSetting(soundCode);
|
|
}
|
|
|
|
/** Plays regardless of the user's setting for the sound, for previewing e.g. the volume. */
|
|
export function playSoundIgnoringSetting(soundCode: string) {
|
|
const audio = new Audio(soundPath(soundCode));
|
|
audio.volume = soundVolume() / 100;
|
|
void audio.play().catch((err) => logger.error(`Couldn't play sound: ${err}`));
|
|
}
|
|
|
|
export function soundVolume() {
|
|
const volume = localStorage.getItem("settings__sound-volume");
|
|
|
|
return volume ? Number.parseFloat(volume) : 100;
|
|
}
|