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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JGa1EM5KWyDo1o5Yr6sS18
This commit is contained in:
Claude
2026-07-01 15:46:56 +00:00
parent 9d4cb99398
commit ec1ea54dcc
@@ -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,