From 8dd4a73b78906cd19db04148100263dc8c5a9aee Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 5 Aug 2025 14:11:18 -0500 Subject: [PATCH] Complete policy update after signup --- .../usePolicyUpdateState.ts | 1 + ...ePreemptivelyCompleteActivePolicyUpdate.ts | 21 +++++++++++++++++++ src/screens/Signup/state.ts | 16 +++++++++++++- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/components/PolicyUpdateOverlay/usePreemptivelyCompleteActivePolicyUpdate.ts diff --git a/src/components/PolicyUpdateOverlay/usePolicyUpdateState.ts b/src/components/PolicyUpdateOverlay/usePolicyUpdateState.ts index ccdc9440d3..636f408c7d 100644 --- a/src/components/PolicyUpdateOverlay/usePolicyUpdateState.ts +++ b/src/components/PolicyUpdateOverlay/usePolicyUpdateState.ts @@ -48,6 +48,7 @@ export function usePolicyUpdateState() { completed: true, data: undefined, }) + setCompletedForDevice(true) }, } }, [nux, save, variables, deviceStorage, debugOverride]) diff --git a/src/components/PolicyUpdateOverlay/usePreemptivelyCompleteActivePolicyUpdate.ts b/src/components/PolicyUpdateOverlay/usePreemptivelyCompleteActivePolicyUpdate.ts new file mode 100644 index 0000000000..f466b9b8f3 --- /dev/null +++ b/src/components/PolicyUpdateOverlay/usePreemptivelyCompleteActivePolicyUpdate.ts @@ -0,0 +1,21 @@ +import {useCallback} from 'react' + +import {useSaveNux} from '#/state/queries/nuxs' +import {ACTIVE_UPDATE_ID} from '#/components/PolicyUpdateOverlay/config' +import {device, useStorage} from '#/storage' + +export function usePreemptivelyCompleteActivePolicyUpdate() { + const {mutate: save} = useSaveNux() + const [_completedForDevice, setCompletedForDevice] = useStorage(device, [ + ACTIVE_UPDATE_ID, + ]) + + return useCallback(() => { + save({ + id: ACTIVE_UPDATE_ID, + completed: true, + data: undefined, + }) + setCompletedForDevice(true) + }, [save, setCompletedForDevice]) +} diff --git a/src/screens/Signup/state.ts b/src/screens/Signup/state.ts index 48ea4ccd93..ae0b20f1c5 100644 --- a/src/screens/Signup/state.ts +++ b/src/screens/Signup/state.ts @@ -15,6 +15,7 @@ import {getAge} from '#/lib/strings/time' import {logger} from '#/logger' import {useSessionApi} from '#/state/session' import {useOnboardingDispatch} from '#/state/shell' +import {usePreemptivelyCompleteActivePolicyUpdate} from '#/components/PolicyUpdateOverlay/usePreemptivelyCompleteActivePolicyUpdate' export type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema @@ -252,6 +253,8 @@ export function useSubmitSignup() { const {_} = useLingui() const {createAccount} = useSessionApi() const onboardingDispatch = useOnboardingDispatch() + const preemptivelyCompleteActivePolicyUpdate = + usePreemptivelyCompleteActivePolicyUpdate() return useCallback( async (state: SignupState, dispatch: (action: SignupAction) => void) => { @@ -325,6 +328,12 @@ export function useSubmitSignup() { }, ) + /** + * Marks any active policy update as completed, since user just agreed + * to TOS/privacy during sign up + */ + preemptivelyCompleteActivePolicyUpdate() + /* * Must happen last so that if the user has multiple tabs open and * createAccount fails, one tab is not stuck in onboarding — Eric @@ -363,6 +372,11 @@ export function useSubmitSignup() { dispatch({type: 'setIsLoading', value: false}) } }, - [_, onboardingDispatch, createAccount], + [ + _, + onboardingDispatch, + createAccount, + preemptivelyCompleteActivePolicyUpdate, + ], ) }