// 常にメモリにロードしておく必要がないような設定情報を保管するストレージ const PREFIX = 'miux:'; export const defaultDeviceSettings = { sound_masterVolume: 0.3, sound_note: { type: 'syuilo/down', volume: 1 }, sound_noteMy: { type: 'syuilo/up', volume: 1 }, sound_notification: { type: 'syuilo/pope2', volume: 1 }, sound_chat: { type: 'syuilo/pope1', volume: 1 }, sound_chatBg: { type: 'syuilo/waon', volume: 1 }, sound_antenna: { type: 'syuilo/triple', volume: 1 }, sound_channel: { type: 'syuilo/square-pico', volume: 1 }, sound_reversiPutBlack: { type: 'syuilo/kick', volume: 0.3 }, sound_reversiPutWhite: { type: 'syuilo/snare', volume: 0.3 }, }; export const device = { get(key: T): typeof defaultDeviceSettings[T] { // TODO: indexedDBにする // ただしその際はnullチェックではなくキー存在チェックにしないとダメ // (indexedDBはnullを保存できるため、ユーザーが意図してnullを格納した可能性がある) const value = localStorage.getItem(PREFIX + key); if (value == null) { return defaultDeviceSettings[key]; } else { return JSON.parse(value); } }, set(key: keyof typeof defaultDeviceSettings, value: any): any { localStorage.setItem(PREFIX + key, JSON.stringify(value)); }, };