From a94a5f349170b89ce6426cfdb8347de863c2cb4e Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Mon, 14 Jul 2025 11:09:02 -0500 Subject: [PATCH] Nux the prompt --- .../ageAssurance/AgeAssurancePrompt.tsx | 32 ++++++++++++++++++- src/state/queries/nuxs/definitions.ts | 6 ++++ src/state/queries/nuxs/index.ts | 16 +++++++++- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/components/ageAssurance/AgeAssurancePrompt.tsx b/src/components/ageAssurance/AgeAssurancePrompt.tsx index 212e93c211..c8ee8bc073 100644 --- a/src/components/ageAssurance/AgeAssurancePrompt.tsx +++ b/src/components/ageAssurance/AgeAssurancePrompt.tsx @@ -3,6 +3,7 @@ import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useAgeAssuranceContext} from '#/state/age-assurance' +import {Nux, useNux, useSaveNux} from '#/state/queries/nuxs' import {atoms as a, select, useTheme, type ViewStyleProp} from '#/alf' import {AgeAssuranceBadge} from '#/components/ageAssurance/AgeAssuranceBadge' import { @@ -10,14 +11,19 @@ import { useDialogControl, } from '#/components/ageAssurance/AgeAssuranceInitDialog' import {IsAgeRestricted} from '#/components/ageAssurance/IsAgeRestricted' -import {Button, ButtonText} from '#/components/Button' +import {Button, ButtonIcon, ButtonText} from '#/components/Button' import type * as Dialog from '#/components/Dialog' import {Divider} from '#/components/Divider' +import {TimesLarge_Stroke2_Corner0_Rounded as X} from '#/components/icons/Times' import {Text} from '#/components/Typography' export function AgeAssurancePrompt({style}: ViewStyleProp & {}) { const control = useDialogControl() const {hasInitiated} = useAgeAssuranceContext() + const {nux} = useNux(Nux.AgeAssurancePrompt) + + if (nux && nux.completed) return null + return ( <> @@ -34,6 +40,7 @@ function Inner({ }: ViewStyleProp & {control: Dialog.DialogControlProps}) { const t = useTheme() const {_} = useLingui() + const {mutate: save} = useSaveNux() return ( <> @@ -114,6 +121,29 @@ function Inner({ + + diff --git a/src/state/queries/nuxs/definitions.ts b/src/state/queries/nuxs/definitions.ts index 1947f857f1..af2725b4c2 100644 --- a/src/state/queries/nuxs/definitions.ts +++ b/src/state/queries/nuxs/definitions.ts @@ -7,6 +7,7 @@ export enum Nux { ExploreInterestsCard = 'ExploreInterestsCard', InitialVerificationAnnouncement = 'InitialVerificationAnnouncement', ActivitySubscriptions = 'ActivitySubscriptions', + AgeAssurancePrompt = 'AgeAssurancePrompt', } export const nuxNames = new Set(Object.values(Nux)) @@ -28,6 +29,10 @@ export type AppNux = BaseNux< id: Nux.ActivitySubscriptions data: undefined } + | { + id: Nux.AgeAssurancePrompt + data: undefined + } > export const NuxSchemas: Record | undefined> = { @@ -35,4 +40,5 @@ export const NuxSchemas: Record | undefined> = { [Nux.ExploreInterestsCard]: undefined, [Nux.InitialVerificationAnnouncement]: undefined, [Nux.ActivitySubscriptions]: undefined, + [Nux.AgeAssurancePrompt]: undefined, } diff --git a/src/state/queries/nuxs/index.ts b/src/state/queries/nuxs/index.ts index 6ad59c7a46..b9650d0579 100644 --- a/src/state/queries/nuxs/index.ts +++ b/src/state/queries/nuxs/index.ts @@ -1,6 +1,6 @@ import {useMutation, useQueryClient} from '@tanstack/react-query' -import {AppNux, Nux} from '#/state/queries/nuxs/definitions' +import {type AppNux, type Nux} from '#/state/queries/nuxs/definitions' import {parseAppNux, serializeAppNux} from '#/state/queries/nuxs/util' import { preferencesQueryKey, @@ -40,6 +40,20 @@ export function useNuxs(): } } + // if (__DEV__) { + // const queryClient = useQueryClient() + // const agent = useAgent() + + // // @ts-ignore + // window.clearNux = async (ids: string[]) => { + // await agent.bskyAppRemoveNuxs(ids) + // // triggers a refetch + // await queryClient.invalidateQueries({ + // queryKey: preferencesQueryKey, + // }) + // } + // } + return { nuxs: undefined, status,