mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-10 16:33:27 +00:00
feat: add "Mine" to the Podcasts and Podcast Episodes feed filters
The two podcast feeds used kind3GlobalPeopleRoutes, which omits the "Mine" option — so a creator had no way to filter the feed down to their own published shows/episodes (and the default follow-list view is usually empty for podcasts, since NIP-F4 shows are their own keypairs you rarely kind:3-follow). Add a podcastRoutes catalog in TopNavFilterState that mirrors musicRoutes (content catalog + Mine + interests + mute list) and point both podcast top bars at it. "Mine" resolves to an AuthorsTopNavPerRelayFilterSet of the user's own pubkey, which the podcast SubAssemblyHelper already dispatches through filterPodcastEventsByAuthors — so selecting it actually fetches the creator's own catalog, not a dead option. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JGa1EM5KWyDo1o5Yr6sS18
This commit is contained in:
@@ -328,6 +328,24 @@ class TopNavFilterState(
|
||||
)
|
||||
}
|
||||
|
||||
private val _podcastRoutes =
|
||||
combineTransform(
|
||||
livePeopleListsFlow,
|
||||
liveInterestFlows,
|
||||
) { peopleLists, interests ->
|
||||
checkNotInMainThread()
|
||||
emit(
|
||||
listOf(
|
||||
// Same content-style catalog as kind3GlobalPeopleRoutes, plus "Mine" so the
|
||||
// podcasts + episodes screens can show only the user's own published shows/episodes.
|
||||
listOf(allFollows, userFollows, kind3Follows, aroundMe, globalFollow, mineFollow),
|
||||
peopleLists,
|
||||
interests,
|
||||
listOf(muteListFollow),
|
||||
).flatten().toImmutableList(),
|
||||
)
|
||||
}
|
||||
|
||||
private val _kind3GlobalPeople =
|
||||
livePeopleListsFlow.transform { peopleLists ->
|
||||
checkNotInMainThread()
|
||||
@@ -408,6 +426,11 @@ class TopNavFilterState(
|
||||
.flowOn(Dispatchers.IO)
|
||||
.stateIn(scope, SharingStarted.Eagerly, persistentListOf(allFollows, userFollows, kind3Follows, aroundMe, globalFollow, mineFollow, muteListFollow))
|
||||
|
||||
val podcastRoutes =
|
||||
_podcastRoutes
|
||||
.flowOn(Dispatchers.IO)
|
||||
.stateIn(scope, SharingStarted.Eagerly, persistentListOf(allFollows, userFollows, kind3Follows, aroundMe, globalFollow, mineFollow, muteListFollow))
|
||||
|
||||
fun destroy() {
|
||||
Log.d("Init") { "OnCleared: ${this.javaClass.simpleName}" }
|
||||
}
|
||||
|
||||
+4
-3
@@ -62,9 +62,10 @@ private fun PodcastEpisodesTopNavFilterBar(
|
||||
accountViewModel: AccountViewModel,
|
||||
onChange: (FeedDefinition) -> Unit,
|
||||
) {
|
||||
// Same content-style catalog as Music/Articles — All Follows, Your Follows, kind3
|
||||
// Follows, Around Me, Global, people lists, interest sets, mute list.
|
||||
val allLists by followListsModel.kind3GlobalPeopleRoutes.collectAsStateWithLifecycle()
|
||||
// Same content-style catalog as Music — All Follows, Your Follows, kind3 Follows,
|
||||
// Around Me, Global, Mine (the user's own published shows/episodes), people lists,
|
||||
// interest sets, mute list.
|
||||
val allLists by followListsModel.podcastRoutes.collectAsStateWithLifecycle()
|
||||
|
||||
FeedFilterSpinner(
|
||||
placeholderCode = listName,
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@ private fun PodcastsTopNavFilterBar(
|
||||
accountViewModel: AccountViewModel,
|
||||
onChange: (FeedDefinition) -> Unit,
|
||||
) {
|
||||
val allLists by followListsModel.kind3GlobalPeopleRoutes.collectAsStateWithLifecycle()
|
||||
val allLists by followListsModel.podcastRoutes.collectAsStateWithLifecycle()
|
||||
|
||||
FeedFilterSpinner(
|
||||
placeholderCode = listName,
|
||||
|
||||
Reference in New Issue
Block a user