import { Profile } from "@/stores/config"; export function useProfileStorage(key: K, defaultValue: NonNullable) { const storageKey = "DOZZLE_" + key.toUpperCase(); const storage = useStorage>(storageKey, defaultValue, undefined, { writeDefaults: false, mergeDefaults: true, }); if (config.profile?.[key]) { if (storage.value instanceof Set && config.profile[key] instanceof Array) { storage.value = new Set([...(config.profile[key] as Iterable)]) as unknown as NonNullable; } else if (config.profile[key] instanceof Array) { storage.value = config.profile[key] as NonNullable; } else if (config.profile[key] instanceof Object) { Object.assign(storage.value, config.profile[key]); } else { storage.value = config.profile[key] as NonNullable; } } if (config.user) { watch( storage, (value) => { fetch(withBase("/api/profile"), { method: "PATCH", body: JSON.stringify({ [key]: value }, (_, value) => (value instanceof Set ? [...value] : value)), }); }, { deep: true }, ); } return storage; }