Sketch cleanup
This commit is contained in:
@@ -1,21 +1,12 @@
|
|||||||
export enum Group {
|
/**
|
||||||
Wayfinding = 'wayfinding',
|
* NEVER CHANGE THE ORDER OF THIS MAP, the compression step depends on the
|
||||||
Composer = 'composer',
|
* other of the keys!
|
||||||
}
|
*/
|
||||||
|
export const flags = {
|
||||||
|
newThreadgate: false,
|
||||||
|
activitySubscriptionAlert: false,
|
||||||
|
} as const
|
||||||
|
|
||||||
export type Flags = {
|
export type Flag = keyof typeof flags
|
||||||
'wayfinding:settings': boolean
|
|
||||||
'wayfinding:settings:moderation': boolean
|
|
||||||
'composer:threadgate_20250204': boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
export type Flag = keyof Flags
|
|
||||||
|
|
||||||
// existing users?
|
|
||||||
export const flags: Flags = {
|
|
||||||
'wayfinding:settings': true,
|
|
||||||
'wayfinding:settings:moderation': true,
|
|
||||||
'composer:threadgate_20250204': false,
|
|
||||||
}
|
|
||||||
|
|
||||||
export const flagKeys = Object.keys(flags) as (keyof typeof flags)[]
|
export const flagKeys = Object.keys(flags) as (keyof typeof flags)[]
|
||||||
|
|||||||
@@ -1,36 +1,37 @@
|
|||||||
import {useMemo, useCallback} from 'react'
|
import {useCallback, useMemo} from 'react'
|
||||||
|
|
||||||
import {flags, flagKeys, Flag} from '#/state/queries/nudges/flags'
|
|
||||||
import {pack, unpack} from '#/state/queries/nudges/compression'
|
import {pack, unpack} from '#/state/queries/nudges/compression'
|
||||||
|
import {type Flag, flagKeys, flags} from '#/state/queries/nudges/flags'
|
||||||
const TEST = pack(flags)
|
|
||||||
|
|
||||||
export function useNudges() {
|
export function useNudges() {
|
||||||
const data = TEST // TODO
|
const data = pack(flags) // TODO fetch from API
|
||||||
|
|
||||||
return useMemo(() => {
|
return useMemo(() => {
|
||||||
return data ? unpack(data, flagKeys) : flags
|
return data ? unpack(data, flagKeys) : flags
|
||||||
}, [data])
|
}, [data])
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useNudgesGroup() {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
export function useNudge(flag: Flag) {
|
export function useNudge(flag: Flag) {
|
||||||
const nudges = useNudges()
|
const nudges = useNudges()
|
||||||
const nudge = nudges[flag]
|
|
||||||
const complete = useCallback(() => {
|
const complete = useCallback(() => {
|
||||||
const next = {...nudges}
|
const next = {...nudges}
|
||||||
next[flag] = true
|
next[flag] = true
|
||||||
const data = pack(next)
|
pack(next) // TODO write to API
|
||||||
// TODO update
|
}, [flag, nudges])
|
||||||
}, [nudge])
|
|
||||||
const reset = useCallback(() => {
|
const reset = useCallback(() => {
|
||||||
const next = {...nudges}
|
const next = {...nudges}
|
||||||
next[flag] = false
|
next[flag] = false
|
||||||
const data = pack(next)
|
pack(next) // TODO write to API
|
||||||
// TODO update
|
}, [flag, nudges])
|
||||||
}, [nudge])
|
|
||||||
return useMemo(() => ({
|
return useMemo(
|
||||||
}), [nudge, complete, reset])
|
() => ({
|
||||||
|
nudge: nudges[flag],
|
||||||
|
complete,
|
||||||
|
reset,
|
||||||
|
}),
|
||||||
|
[flag, nudges, complete, reset],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user