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 {useCallOnce} from '#/lib/once' import {isBskyCustomFeedUrl} from '#/lib/strings/url-helpers' import {atoms as a, useBreakpoints, utils} from '#/alf' import {Link} from '#/components/Link' import {Text} from '#/components/Typography' import {useAnalytics} from '#/analytics' import { type LiveEventFeed, type LiveEventFeedMetricContext, } from '#/features/liveEvents/types' const roundedStyles = [a.rounded_lg, a.curve_continuous] export function LiveEventFeedCardWide({ feed, metricContext, }: { feed: LiveEventFeed metricContext: LiveEventFeedMetricContext }) { const ax = useAnalytics() const {_} = useLingui() const {gtPhone} = useBreakpoints() const layout = feed.layouts.wide const overlayColor = layout.overlayColor const textColor = layout.textColor const url = useMemo(() => { // Validated in multiple places on the backend if (isBskyCustomFeedUrl(feed.url)) { return new URL(feed.url).pathname } return '/' }, [feed.url]) useCallOnce(() => { ax.metric('liveEvents:feedBanner:seen', { feed: feed.url, context: metricContext, }) })() return ( { ax.metric('liveEvents:feedBanner:click', { feed: feed.url, context: metricContext, }) }}> {({hovered, pressed}) => ( {feed.preview ? ( Preview ) : ( Happening now )} {layout.title} )} ) }