diff options
author | Hailey <me@haileyok.com> | 2024-05-13 09:19:35 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-13 09:19:35 -0700 |
commit | d3406c89cf0c5b46197a87298dcd4e1326fef643 (patch) | |
tree | 6495ae6ca57f07077500a2e69f6cdc1c334be33e /src/screens/Onboarding/StepProfile/index.tsx | |
parent | 63b38b413d7a9e243646d11219b0959b3e59cc79 (diff) | |
download | voidsky-d3406c89cf0c5b46197a87298dcd4e1326fef643.tar.zst |
Move request for notifications permissions to `HomeReadyScreen` (#3977)
* cleanup the current logic * add statsig logs * implement requests for permissions where needed * oops * let `addPushTokenListener` handle the token registration * place new log event type with the other `notifications` type * place registration next to handler * more organization * only call `gate()` if permission is not yet granted * be more specific to prevent gate pollution * nit * make `token` non-optional in `registerToken` * remove `prevDid`, move `registerPushToken` into `useEffect` * keep it outside actually * nit
Diffstat (limited to 'src/screens/Onboarding/StepProfile/index.tsx')
-rw-r--r-- | src/screens/Onboarding/StepProfile/index.tsx | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/screens/Onboarding/StepProfile/index.tsx b/src/screens/Onboarding/StepProfile/index.tsx index bf47bbc95..d480a32af 100644 --- a/src/screens/Onboarding/StepProfile/index.tsx +++ b/src/screens/Onboarding/StepProfile/index.tsx @@ -10,11 +10,12 @@ import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useAnalytics} from '#/lib/analytics/analytics' -import {logEvent} from '#/lib/statsig/statsig' +import {logEvent, useGate} from '#/lib/statsig/statsig' import {usePhotoLibraryPermission} from 'lib/hooks/usePermissions' import {compressIfNeeded} from 'lib/media/manip' import {openCropper} from 'lib/media/picker' import {getDataUriSize} from 'lib/media/util' +import {useRequestNotificationsPermission} from 'lib/notifications/notifications' import {isNative, isWeb} from 'platform/detection' import { DescriptionText, @@ -69,6 +70,9 @@ export function StepProfile() { const {gtMobile} = useBreakpoints() const {track} = useAnalytics() const {requestPhotoAccessIfNeeded} = usePhotoLibraryPermission() + const gate = useGate() + const requestNotificationsPermission = useRequestNotificationsPermission() + const creatorControl = Dialog.useDialogControl() const [error, setError] = React.useState('') @@ -86,6 +90,14 @@ export function StepProfile() { track('OnboardingV2:StepProfile:Start') }, [track]) + React.useEffect(() => { + // We have an experiment running for redueced onboarding, where this screen shows up as the first in onboarding. + // We only want to request permissions when that gate is actually active to prevent pollution + if (gate('reduced_onboarding_and_home_algo')) { + requestNotificationsPermission('StartOnboarding') + } + }, [gate, requestNotificationsPermission]) + const openPicker = React.useCallback( async (opts?: ImagePickerOptions) => { const response = await launchImageLibraryAsync({ |