wip bsky client for the web & android bbell.vt3e.cat
at main 28 lines 769 B view raw
1const PREFIX = 'bluebell' 2 3function defineScope<S extends string, const K extends readonly string[]>(scope: S, keys: K) { 4 const entries = keys.map((key) => { 5 const value = `${PREFIX}:${scope}:${key.toLowerCase().replace(/_/g, '-')}` 6 return [key, value] as const 7 }) 8 9 return Object.fromEntries(entries) as { 10 [P in K[number]]: `${typeof PREFIX}:${S}:${Lowercase<string>}` 11 } 12} 13 14export const KEYS = { 15 THEME: defineScope('theme', [ 16 'FOLLOW_SYSTEM_THEME', 17 'PREFERRED_LIGHT_THEME', 18 'PREFERRED_DARK_THEME', 19 'CURRENT_MODE', 20 'ACCENT_COLOUR', 21 ]), 22 23 STATE: defineScope('state', ['ACTIVE_FEED_URI', 'WOKE_DISMISSED', 'INTRO_COMPLETE']), 24 SETTINGS: defineScope('settings', ['BASE']), 25 AUTH: defineScope('auth', ['SESSION', 'ACTIVE_DID']), 26} 27 28export default KEYS