From 2ce22fa3f2b62257f88583c8e7582e4c8e79b426 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Fri, 20 Jun 2025 14:02:45 -0500 Subject: [PATCH] Sketch cleanup --- src/state/queries/nudges/flags.ts | 27 ++++++++-------------- src/state/queries/nudges/index.ts | 37 ++++++++++++++++--------------- 2 files changed, 28 insertions(+), 36 deletions(-) diff --git a/src/state/queries/nudges/flags.ts b/src/state/queries/nudges/flags.ts index 99c2a17d13..15d8671570 100644 --- a/src/state/queries/nudges/flags.ts +++ b/src/state/queries/nudges/flags.ts @@ -1,21 +1,12 @@ -export enum Group { - Wayfinding = 'wayfinding', - Composer = 'composer', -} +/** + * NEVER CHANGE THE ORDER OF THIS MAP, the compression step depends on the + * other of the keys! + */ +export const flags = { + newThreadgate: false, + activitySubscriptionAlert: false, +} as const -export type 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 type Flag = keyof typeof flags export const flagKeys = Object.keys(flags) as (keyof typeof flags)[] diff --git a/src/state/queries/nudges/index.ts b/src/state/queries/nudges/index.ts index 8b53501f6a..9ad9c2916d 100644 --- a/src/state/queries/nudges/index.ts +++ b/src/state/queries/nudges/index.ts @@ -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' - -const TEST = pack(flags) +import {type Flag, flagKeys, flags} from '#/state/queries/nudges/flags' export function useNudges() { - const data = TEST // TODO + const data = pack(flags) // TODO fetch from API + return useMemo(() => { return data ? unpack(data, flagKeys) : flags }, [data]) } -export function useNudgesGroup() { - // TODO -} - export function useNudge(flag: Flag) { const nudges = useNudges() - const nudge = nudges[flag] + const complete = useCallback(() => { const next = {...nudges} next[flag] = true - const data = pack(next) - // TODO update - }, [nudge]) + pack(next) // TODO write to API + }, [flag, nudges]) + const reset = useCallback(() => { const next = {...nudges} next[flag] = false - const data = pack(next) - // TODO update - }, [nudge]) - return useMemo(() => ({ - }), [nudge, complete, reset]) + pack(next) // TODO write to API + }, [flag, nudges]) + + return useMemo( + () => ({ + nudge: nudges[flag], + complete, + reset, + }), + [flag, nudges, complete, reset], + ) }