about summary refs log tree commit diff
path: root/src/screens/Onboarding/StepProfile/index.tsx
diff options
context:
space:
mode:
authorHailey <me@haileyok.com>2024-05-13 09:19:35 -0700
committerGitHub <noreply@github.com>2024-05-13 09:19:35 -0700
commitd3406c89cf0c5b46197a87298dcd4e1326fef643 (patch)
tree6495ae6ca57f07077500a2e69f6cdc1c334be33e /src/screens/Onboarding/StepProfile/index.tsx
parent63b38b413d7a9e243646d11219b0959b3e59cc79 (diff)
downloadvoidsky-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.tsx14
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({