import React, {useContext} from 'react' import {ScrollView, View} from 'react-native' import {GestureDetector} from 'react-native-gesture-handler' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {logEvent} from '#/lib/statsig/statsig' import { useTrendingSettings, useTrendingSettingsApi, } from '#/state/preferences/trending' import {useTrendingTopics} from '#/state/queries/trending/useTrendingTopics' import {useTrendingConfig} from '#/state/trending-config' import {LoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder' import {TrendingGestureContext} from '#/view/shell/TrendingGestureContext' import {atoms as a, useGutters, useTheme} from '#/alf' import {Button, ButtonIcon} from '#/components/Button' import {TimesLarge_Stroke2_Corner0_Rounded as X} from '#/components/icons/Times' import {Trending2_Stroke2_Corner2_Rounded as Graph} from '#/components/icons/Trending2' import * as Prompt from '#/components/Prompt' import {TrendingTopicLink} from '#/components/TrendingTopics' import {Text} from '#/components/Typography' export function TrendingInterstitial() { const {enabled} = useTrendingConfig() const {trendingDisabled} = useTrendingSettings() return enabled && !trendingDisabled ? : null } export function Inner() { const t = useTheme() const {_} = useLingui() const gutters = useGutters([0, 'base', 0, 'base']) const trendingPrompt = Prompt.usePromptControl() const {setTrendingDisabled} = useTrendingSettingsApi() const {data: trending, error, isLoading} = useTrendingTopics() const noTopics = !isLoading && !error && !trending?.topics?.length const onConfirmHide = React.useCallback(() => { logEvent('trendingTopics:hide', {context: 'interstitial'}) setTrendingDisabled(true) }, [setTrendingDisabled]) // This is coordinated to take precedence over the drawer pan gesture. const trendingScrollGesture = useContext(TrendingGestureContext) return error || noTopics ? null : ( {isLoading ? ( {' '} ) : !trending?.topics ? null : ( <> {trending.topics.map(topic => ( { logEvent('trendingTopic:click', {context: 'interstitial'}) }}> {topic.topic} ))} )} ) }