Files
bsky-social-app/src/components/hooks/useStarterPackEntry.native.ts
T

50 lines
1.5 KiB
TypeScript

import React from 'react'
import {createStarterPackLinkFromAndroidReferrer} from 'lib/strings/starter-pack'
import {isAndroid} from 'platform/detection'
import {useSetCurrentStarterPack} from 'state/preferences/starter-pack'
import {useHasCheckedForStarterPack} from 'state/preferences/used-starter-packs'
import SwissArmyKnife from '../../../modules/expo-bluesky-swiss-army'
import GooglePlayReferrer from '../../../modules/expo-google-play-referrer'
export function useStarterPackEntry() {
const [ready, setReady] = React.useState(false)
const setCurrentStarterPack = useSetCurrentStarterPack()
const hasCheckedForStarterPack = useHasCheckedForStarterPack()
const setHasCheckedForStarterPack = useHasCheckedForStarterPack()
React.useEffect(() => {
if (ready || hasCheckedForStarterPack) return
setHasCheckedForStarterPack(true)
;(async () => {
let uri: string | null | undefined
if (isAndroid) {
const res = await GooglePlayReferrer.getReferrerInfoAsync()
if (res && res.installReferrer) {
uri = createStarterPackLinkFromAndroidReferrer(res.installReferrer)
}
} else {
uri = await SwissArmyKnife.getStringValueAsync('starterPackUri', true)
}
if (uri && !usedStarterPacks?.includes(uri)) {
setCurrentStarterPack({
uri,
})
}
setReady(true)
})()
}, [
ready,
setCurrentStarterPack,
setHasCheckedForStarterPack,
hasCheckedForStarterPack,
])
return ready
}