Files
sendou.ink/app/features/chat/chat-utils.ts

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;
}