restructured preferences

This commit is contained in:
Ollie Taylor
2023-02-25 14:33:17 +00:00
parent e46b929d69
commit 49c5e4eb63
8 changed files with 53 additions and 62 deletions
+35
View File
@@ -0,0 +1,35 @@
import type { UserPreferences } from '$lib/types';
import clamp from 'just-clamp';
import { writable } from 'svelte/store';
import { load_preferences, save_preferences } from './db-local-storage';
const _default_user_preferences = {
playback_rate: 1,
volume: 1,
} satisfies UserPreferences;
const _user_preferences = writable<UserPreferences>(_default_user_preferences);
function clamp_preferences(prefs: UserPreferences) {
return {
playback_rate: clamp(prefs.playback_rate, 0.5, 5),
volume: clamp(prefs.volume, 0, 1),
};
}
function edit(prefs: Partial<UserPreferences>) {
_user_preferences.update((prev) => clamp_preferences({ ...prev, ...prefs }));
save_preferences();
}
const clear = () => {
_user_preferences.set(_default_user_preferences);
save_preferences();
};
export const user_preferences = {
subscribe: _user_preferences.subscribe,
edit,
clear,
load: load_preferences,
};