From ec1ea54dcca4b6b180ff71f1310c0326c80eeb76 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 1 Jul 2026 15:46:56 +0000 Subject: [PATCH] feat(podcasts): standard ReactionsRow for the show between header and episodes Give the podcast show itself the usual engagement affordance: the standard NoteCompose ReactionsRow (comment / zap / react, with counts) now sits between the show header and the episode list on the detail screen, bracketed by the usual dividers like any other content detail. Acts on the resolved show note and only renders once that event loads. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01JGa1EM5KWyDo1o5Yr6sS18 --- .../screen/loggedIn/podcasts/PodcastHeader.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/podcasts/PodcastHeader.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/podcasts/PodcastHeader.kt index 31970e4661..4d880a85ea 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/podcasts/PodcastHeader.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/podcasts/PodcastHeader.kt @@ -44,6 +44,7 @@ import com.vitorpamplona.amethyst.commons.model.toImmutableListOfLists import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.ui.components.TranslatableRichTextViewer import com.vitorpamplona.amethyst.ui.navigation.navs.INav +import com.vitorpamplona.amethyst.ui.note.ReactionsRow import com.vitorpamplona.amethyst.ui.note.types.PodcastCoverCard import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.DividerThickness @@ -137,9 +138,26 @@ fun PodcastHeader( } } + // Standard engagement row for the show itself (comment / zap / react), like any other + // content detail. Only shown once the show event resolves so it acts on a real note. + if (show != null) { + HorizontalDivider(thickness = DividerThickness) + + ReactionsRow( + baseNote = metadataNote, + showReactionDetail = true, + addPadding = true, + editState = null, + accountViewModel = accountViewModel, + nav = nav, + ) + } + // Only render once episodes have actually loaded — avoids flashing "0 episodes" // under the cover while the relay request is still in flight. episodeCount?.let { count -> + HorizontalDivider(thickness = DividerThickness) + Text( text = pluralStringResource(R.plurals.podcast_episode_count, count, count), style = MaterialTheme.typography.titleMedium,