From b1b86e2c60b422174e7221c55844c0bc1ac9100e Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 15 Jul 2025 16:15:38 -0500 Subject: [PATCH] Checkpoint: cleanup --- .../ageAssurance/AgeAssuranceAccountCard.tsx | 6 ++-- .../ageAssurance/AgeAssuranceAdmonition.tsx | 4 +-- .../AgeAssuranceDismissableNotice.tsx | 5 +-- .../ageAssurance/AgeRestrictedScreen.tsx | 4 +-- src/lib/notifications/notifications.ts | 15 ++++----- src/screens/Moderation/index.tsx | 12 +++---- src/state/ageAssurance/index.tsx | 4 +-- src/state/ageAssurance/useAgeInfo.ts | 31 +++++++++++++++---- ...eMaybeApplyAgeRestrictedModerationPrefs.ts | 23 -------------- .../useMustCompleteAgeAssurance.ts | 17 ++++++++++ src/state/queries/preferences/index.ts | 12 ++++--- 11 files changed, 76 insertions(+), 57 deletions(-) delete mode 100644 src/state/ageAssurance/useMaybeApplyAgeRestrictedModerationPrefs.ts create mode 100644 src/state/ageAssurance/useMustCompleteAgeAssurance.ts diff --git a/src/components/ageAssurance/AgeAssuranceAccountCard.tsx b/src/components/ageAssurance/AgeAssuranceAccountCard.tsx index 5e83b09383..cfa4ce2b0d 100644 --- a/src/components/ageAssurance/AgeAssuranceAccountCard.tsx +++ b/src/components/ageAssurance/AgeAssuranceAccountCard.tsx @@ -20,11 +20,11 @@ import {createStaticClick, InlineLinkText} from '#/components/Link' import {Text} from '#/components/Typography' export function AgeAssuranceAccountCard({style}: ViewStyleProp & {}) { - const {isLoaded, assurance, declaredAge} = useAgeInfo() + const {isLoaded, mustCompleteAgeAssurance, isUnderage} = useAgeInfo() if (!isLoaded) return null - if (declaredAge && declaredAge < 18) return null - if (!assurance.isAgeRestricted) return null + if (isUnderage) return null + if (!mustCompleteAgeAssurance) return null return } diff --git a/src/components/ageAssurance/AgeAssuranceAdmonition.tsx b/src/components/ageAssurance/AgeAssuranceAdmonition.tsx index 122da430fb..e30dfa8cf4 100644 --- a/src/components/ageAssurance/AgeAssuranceAdmonition.tsx +++ b/src/components/ageAssurance/AgeAssuranceAdmonition.tsx @@ -15,11 +15,11 @@ export function AgeAssuranceAdmonition({ style, }: ViewStyleProp & {children: React.ReactNode}) { const control = useDialogControl() - const {isLoaded, isUnderage, assurance} = useAgeInfo() + const {isLoaded, isUnderage, mustCompleteAgeAssurance} = useAgeInfo() if (!isLoaded) return null if (isUnderage) return null - if (!assurance.isAgeRestricted) return null + if (!mustCompleteAgeAssurance) return null return ( diff --git a/src/components/ageAssurance/AgeAssuranceDismissableNotice.tsx b/src/components/ageAssurance/AgeAssuranceDismissableNotice.tsx index 955c69aa75..9b7c29b30c 100644 --- a/src/components/ageAssurance/AgeAssuranceDismissableNotice.tsx +++ b/src/components/ageAssurance/AgeAssuranceDismissableNotice.tsx @@ -12,7 +12,8 @@ import {TimesLarge_Stroke2_Corner0_Rounded as X} from '#/components/icons/Times' export function AgeAssuranceDismissableNotice({style}: ViewStyleProp & {}) { const {_} = useLingui() - const {isLoaded, isUnderage, assurance} = useAgeInfo() + const {isLoaded, isUnderage, mustCompleteAgeAssurance, assurance} = + useAgeInfo() const {nux} = useNux(Nux.AgeAssuranceDismissableNotice) const copy = useAgeAssuranceCopy() const {mutate: save, variables} = useSaveNux() @@ -20,7 +21,7 @@ export function AgeAssuranceDismissableNotice({style}: ViewStyleProp & {}) { if (!isLoaded) return null if (isUnderage) return null - if (!assurance.isAgeRestricted) return null + if (!mustCompleteAgeAssurance) return null if (assurance.lastInitiatedAt) return null if (hidden) return null if (nux && nux.completed) return null diff --git a/src/components/ageAssurance/AgeRestrictedScreen.tsx b/src/components/ageAssurance/AgeRestrictedScreen.tsx index a8afd01fb8..35628b6698 100644 --- a/src/components/ageAssurance/AgeRestrictedScreen.tsx +++ b/src/components/ageAssurance/AgeRestrictedScreen.tsx @@ -24,7 +24,7 @@ export function AgeRestrictedScreen({ }) { const {_} = useLingui() const copy = useAgeAssuranceCopy() - const {isLoaded, assurance} = useAgeInfo() + const {isLoaded, mustCompleteAgeAssurance} = useAgeInfo() if (!isLoaded) { return ( @@ -39,7 +39,7 @@ export function AgeRestrictedScreen({ ) } - if (!assurance.isAgeRestricted) return children + if (!mustCompleteAgeAssurance) return children return ( diff --git a/src/lib/notifications/notifications.ts b/src/lib/notifications/notifications.ts index ee0dbed9ac..522c33ceb5 100644 --- a/src/lib/notifications/notifications.ts +++ b/src/lib/notifications/notifications.ts @@ -9,6 +9,7 @@ import {PUBLIC_APPVIEW_DID, PUBLIC_STAGING_APPVIEW_DID} from '#/lib/constants' import {logger as notyLogger} from '#/lib/notifications/util' import {isNative} from '#/platform/detection' import {useAgeAssuranceContext} from '#/state/ageAssurance' +import {useMustCompleteAgeAssurance} from '#/state/ageAssurance/useMustCompleteAgeAssurance' import {type SessionAccount, useAgent, useSession} from '#/state/session' import BackgroundNotificationHandler from '#/../modules/expo-background-notification-handler' @@ -122,7 +123,7 @@ async function getPushToken() { * @see https://github.com/bluesky-social/social-app/pull/4467 */ export function useGetAndRegisterPushToken() { - const {isAgeRestricted} = useAgeAssuranceContext() + const mustCompleteAgeAssurance = useMustCompleteAgeAssurance() const registerPushToken = useRegisterPushToken() return useCallback( async ({ @@ -149,13 +150,13 @@ export function useGetAndRegisterPushToken() { */ registerPushToken({ token, - isAgeRestricted: isAgeRestrictedOverride ?? isAgeRestricted, + isAgeRestricted: isAgeRestrictedOverride ?? mustCompleteAgeAssurance, }) } return token }, - [registerPushToken, isAgeRestricted], + [registerPushToken, mustCompleteAgeAssurance], ) } @@ -170,8 +171,8 @@ export function useNotificationsRegistration() { const {currentAccount} = useSession() const registerPushToken = useRegisterPushToken() const getAndRegisterPushToken = useGetAndRegisterPushToken() - const {isLoaded: isAgeAssuranceLoaded, isAgeRestricted} = - useAgeAssuranceContext() + const {isLoaded: isAgeAssuranceLoaded} = useAgeAssuranceContext() + const mustCompleteAgeAssurance = useMustCompleteAgeAssurance() useEffect(() => { /** @@ -200,7 +201,7 @@ export function useNotificationsRegistration() { * @see https://docs.expo.dev/versions/latest/sdk/notifications/#addpushtokenlistenerlistener */ const subscription = Notifications.addPushTokenListener(async token => { - registerPushToken({token, isAgeRestricted}) + registerPushToken({token, isAgeRestricted: mustCompleteAgeAssurance}) notyLogger.debug(`addPushTokenListener callback`, {token}) }) @@ -212,7 +213,7 @@ export function useNotificationsRegistration() { getAndRegisterPushToken, registerPushToken, isAgeAssuranceLoaded, - isAgeRestricted, + mustCompleteAgeAssurance, ]) } diff --git a/src/screens/Moderation/index.tsx b/src/screens/Moderation/index.tsx index 11292f9f98..baa0265d8e 100644 --- a/src/screens/Moderation/index.tsx +++ b/src/screens/Moderation/index.tsx @@ -160,7 +160,7 @@ export function ModerationScreenInner({ data: labelers, error: labelersError, } = useMyLabelersQuery() - const {declaredAge, isUnderage, assurance: ageAssurance} = useAgeInfo() + const {declaredAge, isUnderage, mustCompleteAgeAssurance} = useAgeInfo() useFocusEffect( useCallback(() => { @@ -316,7 +316,7 @@ export function ModerationScreenInner({ - {declaredAge === undefined && ageAssurance.isAgeRestricted && ( + {declaredAge === undefined && ( <>