From 9c1eb6362054d517397d27f2b1b79eb1c2b8de6a Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 13 Jan 2026 16:32:13 -0600 Subject: [PATCH] Add Discover banner/trending handling, device storage --- src/components/interstitials/Trending.tsx | 2 +- ...verFeedLiveEventFeedsAndTrendingBanner.tsx | 98 +++++++++++++++++++ src/features/liveEvents/types.ts | 1 + src/storage/schema.ts | 2 + src/view/com/feeds/ComposerPrompt.tsx | 2 - src/view/com/posts/PostFeed.tsx | 22 +++-- 6 files changed, 114 insertions(+), 13 deletions(-) create mode 100644 src/features/liveEvents/components/DiscoverFeedLiveEventFeedsAndTrendingBanner.tsx diff --git a/src/components/interstitials/Trending.tsx b/src/components/interstitials/Trending.tsx index 3d47385ee8..830dfb3b66 100644 --- a/src/components/interstitials/Trending.tsx +++ b/src/components/interstitials/Trending.tsx @@ -41,7 +41,7 @@ export function Inner() { }, [setTrendingDisabled]) return error || noTopics ? null : ( - + + } else { + // no feed, no trending + return null + } + } + + // On desktop, we show in the sidebar + if (rightNavVisible) return null + + const image = feed.images.wide + + return ( + <> + + + + + + + + + { + setBannerDisabled(true) + }} + /> + + ) +} diff --git a/src/features/liveEvents/types.ts b/src/features/liveEvents/types.ts index faabcbe9f5..3ab2ff73bf 100644 --- a/src/features/liveEvents/types.ts +++ b/src/features/liveEvents/types.ts @@ -3,6 +3,7 @@ export type LiveEventFeedImageLayout = 'wide' // maybe more in the future export type LiveEventFeedImage = { alt: string overlayColor: string + textColor: string url: string blurhash: string } diff --git a/src/storage/schema.ts b/src/storage/schema.ts index d1e4a8d88c..9bd8aa923b 100644 --- a/src/storage/schema.ts +++ b/src/storage/schema.ts @@ -50,6 +50,8 @@ export type Device = { activitySubscriptionsNudged?: boolean threadgateNudged?: boolean + liveEventFeedsBannerDisabled?: boolean + /** * Policy update overlays. New IDs are required for each new announcement. */ diff --git a/src/view/com/feeds/ComposerPrompt.tsx b/src/view/com/feeds/ComposerPrompt.tsx index be88ee2dc1..5d4685a4e6 100644 --- a/src/view/com/feeds/ComposerPrompt.tsx +++ b/src/view/com/feeds/ComposerPrompt.tsx @@ -148,8 +148,6 @@ export function ComposerPrompt() { a.relative, a.flex_row, a.align_start, - a.border_t, - t.atoms.border_contrast_low, { paddingLeft: 18, paddingRight: 15, diff --git a/src/view/com/posts/PostFeed.tsx b/src/view/com/posts/PostFeed.tsx index 4f25468c95..9e6fcdcccb 100644 --- a/src/view/com/posts/PostFeed.tsx +++ b/src/view/com/posts/PostFeed.tsx @@ -70,6 +70,7 @@ import { } from '#/components/feeds/PostFeedVideoGridRow' import {TrendingInterstitial} from '#/components/interstitials/Trending' import {TrendingVideos as TrendingVideosInterstitial} from '#/components/interstitials/TrendingVideos' +import {DiscoverFeedLiveEventFeedsAndTrendingBanner} from '#/features/liveEvents/components/DiscoverFeedLiveEventFeedsAndTrendingBanner' import {ComposerPrompt} from '../feeds/ComposerPrompt' import {DiscoverFallbackHeader} from './DiscoverFallbackHeader' import {FeedShutdownMsg} from './FeedShutdownMsg' @@ -155,6 +156,10 @@ type FeedRow = type: 'composerPrompt' key: string } + | { + type: 'liveEventFeedsAndTrendingBanner' + key: string + } export function getItemsForFeedback(feedRow: FeedRow): { item: FeedPostSliceItem @@ -360,7 +365,7 @@ let PostFeed = ({ const showProgressIntersitial = (followProgressGuide || followAndLikeProgressGuide) && !rightNavVisible - const {trendingDisabled, trendingVideoDisabled} = useTrendingSettings() + const {trendingVideoDisabled} = useTrendingSettings() const ageAssuranceBannerState = useAgeAssuranceBannerState() const selectedFeed = useSelectedFeed() @@ -510,13 +515,10 @@ let PostFeed = ({ }) } } - if (!rightNavVisible && !trendingDisabled) { - arr.push({ - type: 'interstitialTrending', - key: - 'interstitial2-' + sliceIndex + '-' + lastFetchedAt, - }) - } + arr.push({ + type: 'liveEventFeedsAndTrendingBanner', + key: 'liveEventFeedsAndTrendingBanner-' + sliceIndex, + }) // Show composer prompt for Discover and Following feeds if ( hasSession && @@ -672,9 +674,7 @@ let PostFeed = ({ feedTab, hasSession, showProgressIntersitial, - trendingDisabled, trendingVideoDisabled, - rightNavVisible, gtMobile, isVideoFeed, areVideoFeedsEnabled, @@ -773,6 +773,8 @@ let PostFeed = ({ return } else if (row.type === 'interstitialTrending') { return + } else if (row.type === 'liveEventFeedsAndTrendingBanner') { + return } else if (row.type === 'composerPrompt') { return } else if (row.type === 'interstitialTrendingVideos') {