diff --git a/app/src/main/java/net/jeena/jtubetv/ui/screens/ChannelsScreen.kt b/app/src/main/java/net/jeena/jtubetv/ui/screens/ChannelsScreen.kt index 7502c04..26bdd54 100644 --- a/app/src/main/java/net/jeena/jtubetv/ui/screens/ChannelsScreen.kt +++ b/app/src/main/java/net/jeena/jtubetv/ui/screens/ChannelsScreen.kt @@ -270,7 +270,19 @@ class ChannelsViewModel(private val store: TokenStore) : ViewModel() { } private fun rebuildRowsInner(host: String?) { - val locals = allChannels.filter { it.host == host } + val allLocals = allChannels.filter { it.host == host } + // The video-listing fast path cannot see channels with no videos at all — + // an account owning only such channels used to lose its row entirely + // (tvbot: the local tvbots channel exists, it just never uploaded). Merge + // the logged-in user's own local channels in; the group sort below still + // puts the own row first. The account-channels listing already carries + // the full card shape (avatar/banners/followers), no extra calls. + var locals = allLocals + if (userChannels.isNotEmpty()) { + val missing = userChannels + .filter { it.host == host && allLocals.none { l -> l.name == it.name } } + if (missing.isNotEmpty()) locals = allLocals + missing + } val ownNames = userChannels.map { c -> c.name }.toSet() val byOwner = locals.groupBy { ownerKey(it) } val groups = byOwner.values.map { row ->