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
This commit is contained in:
Hailey 2024-05-13 09:19:35 -07:00 committed by GitHub
parent 63b38b413d
commit d3406c89cf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 105 additions and 67 deletions

View file

@ -5,11 +5,12 @@ import {useLingui} from '@lingui/react'
import {useQuery} from '@tanstack/react-query'
import {useAnalytics} from '#/lib/analytics/analytics'
import {logEvent} from '#/lib/statsig/statsig'
import {logEvent, useGate} from '#/lib/statsig/statsig'
import {capitalize} from '#/lib/strings/capitalize'
import {logger} from '#/logger'
import {useAgent} from '#/state/session'
import {useOnboardingDispatch} from '#/state/shell'
import {useRequestNotificationsPermission} from 'lib/notifications/notifications'
import {
DescriptionText,
OnboardingControls,
@ -33,6 +34,9 @@ export function StepInterests() {
const t = useTheme()
const {gtMobile} = useBreakpoints()
const {track} = useAnalytics()
const gate = useGate()
const requestNotificationsPermission = useRequestNotificationsPermission()
const {state, dispatch, interestsDisplayNames} = React.useContext(Context)
const [saving, setSaving] = React.useState(false)
const [interests, setInterests] = React.useState<string[]>(
@ -129,6 +133,12 @@ export function StepInterests() {
track('OnboardingV2:StepInterests:Start')
}, [track])
React.useEffect(() => {
if (!gate('reduced_onboarding_and_home_algo')) {
requestNotificationsPermission('StartOnboarding')
}
}, [gate, requestNotificationsPermission])
const title = isError ? (
<Trans>Oh no! Something went wrong.</Trans>
) : (