import {useMemo} from 'react' import {View} from 'react-native' import {Image} from 'expo-image' import {LinearGradient} from 'expo-linear-gradient' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useCallOnce} from '#/lib/once' import {isBskyCustomFeedUrl} from '#/lib/strings/url-helpers' import {atoms as a, utils} from '#/alf' import {Live_Stroke2_Corner0_Rounded as LiveIcon} from '#/components/icons/Live' 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_md, a.curve_continuous] export function LiveEventFeedCardCompact({ feed, metricContext, }: { feed: LiveEventFeed metricContext: LiveEventFeedMetricContext }) { const {_} = useLingui() const ax = useAnalytics() const layout = feed.layouts.compact 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}) => ( {layout.title} )} ) }