wip bsky client for the web & android
bbell.vt3e.cat
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