users: add shift-u alphabetical list with per-user listen volume controls

This commit is contained in:
Jage9
2026-02-22 19:15:03 -05:00
parent 590e33d374
commit fe230bd53d
8 changed files with 120 additions and 4 deletions

View File

@@ -9,6 +9,7 @@ const AUDIO_OUTPUT_MODE_STORAGE_KEY = 'chatGridAudioOutputMode';
const AUDIO_LAYER_STATE_STORAGE_KEY = 'chatGridAudioLayers';
const MIC_INPUT_GAIN_STORAGE_KEY = 'chatGridMicInputGain';
const MASTER_VOLUME_STORAGE_KEY = 'chatGridMasterVolume';
const PEER_LISTEN_GAINS_STORAGE_KEY = 'chatGridPeerListenGains';
const NICKNAME_STORAGE_KEY = 'spatialChatNickname';
type DevicePreference = {
@@ -83,6 +84,27 @@ export class SettingsStore {
localStorage.setItem(MASTER_VOLUME_STORAGE_KEY, String(value));
}
loadPeerListenGains(): Record<string, number> {
const raw = localStorage.getItem(PEER_LISTEN_GAINS_STORAGE_KEY);
if (!raw) return {};
try {
const parsed = JSON.parse(raw) as Record<string, unknown>;
const normalized: Record<string, number> = {};
for (const [key, value] of Object.entries(parsed)) {
const numeric = Number(value);
if (!key || !Number.isFinite(numeric)) continue;
normalized[key] = numeric;
}
return normalized;
} catch {
return {};
}
}
savePeerListenGains(values: Record<string, number>): void {
localStorage.setItem(PEER_LISTEN_GAINS_STORAGE_KEY, JSON.stringify(values));
}
loadNickname(): string {
return localStorage.getItem(NICKNAME_STORAGE_KEY) || '';
}