import {useMemo} from 'react' import {View} from 'react-native' import {Image} from 'expo-image' import {LinearGradient} from 'expo-linear-gradient' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {HITSLOP_10} from '#/lib/constants' import {Nux, useNux, useSaveNux} from '#/state/queries/nuxs' import {atoms as a, useTheme} from '#/alf' import {Button} from '#/components/Button' import {TimesLarge_Stroke2_Corner0_Rounded as XIcon} from '#/components/icons/Times' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import {IS_WEB} from '#/env' import {Link} from '../Link' import {useIsFindContactsFeatureEnabledBasedOnGeolocation} from './country-allowlist' export function FindContactsBannerNUX() { const t = useTheme() const {_} = useLingui() const ax = useAnalytics() const {visible, close} = useInternalState() if (!visible) return null return ( { ax.metric('contacts:nux:bannerPressed', {}) }} style={[ a.w_full, a.rounded_xl, a.curve_continuous, a.overflow_hidden, ]}> Import contacts to find your friends ) } function useInternalState() { const ax = useAnalytics() const {nux} = useNux(Nux.FindContactsDismissibleBanner) const {mutate: save, variables} = useSaveNux() const hidden = !!variables const isFeatureEnabled = useIsFindContactsFeatureEnabledBasedOnGeolocation() const visible = useMemo(() => { if (IS_WEB) return false if (hidden) return false if (nux && nux.completed) return false if (!isFeatureEnabled) return false return true }, [hidden, nux, isFeatureEnabled]) const close = () => { save({ id: Nux.FindContactsDismissibleBanner, completed: true, data: undefined, }) ax.metric('contacts:nux:bannerDismissed', {}) } return {visible, close} }