mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-08-28 21:26:33 +00:00
Merge branch 'linked-channel-shorts-fix' into 'master'
Polycentric Channel Shorts Tab Fix See merge request videostreaming/grayjay!100
This commit is contained in:
commit
5f9f6dbde8
3 changed files with 74 additions and 60 deletions
|
@ -71,7 +71,8 @@ class ChannelContentsFragment(private val subType: String? = null) : Fragment(),
|
|||
val lastPolycentricProfile = _lastPolycentricProfile;
|
||||
var pager: IPager<IPlatformContent>? = null;
|
||||
if (lastPolycentricProfile != null && StatePolycentric.instance.enabled)
|
||||
pager = StatePolycentric.instance.getChannelContent(lifecycleScope, lastPolycentricProfile);
|
||||
pager =
|
||||
StatePolycentric.instance.getChannelContent(lifecycleScope, lastPolycentricProfile, type = subType);
|
||||
|
||||
if(pager == null) {
|
||||
if(subType != null)
|
||||
|
|
|
@ -732,7 +732,7 @@ class StatePlatform {
|
|||
}
|
||||
}
|
||||
|
||||
fun getChannelContent(baseClient: IPlatformClient, channelUrl: String, isSubscriptionOptimized: Boolean = false, usePooledClients: Int = 0): IPager<IPlatformContent> {
|
||||
fun getChannelContent(baseClient: IPlatformClient, channelUrl: String, isSubscriptionOptimized: Boolean = false, usePooledClients: Int = 0, type: String? = null): IPager<IPlatformContent> {
|
||||
val clientCapabilities = baseClient.getChannelCapabilities();
|
||||
val client = if(usePooledClients > 1)
|
||||
_channelClientPool.getClientPooled(baseClient, usePooledClients);
|
||||
|
@ -741,6 +741,7 @@ class StatePlatform {
|
|||
var lastStream: OffsetDateTime? = null;
|
||||
|
||||
val pagerResult: IPager<IPlatformContent>;
|
||||
if (type == null) {
|
||||
if(!clientCapabilities.hasType(ResultCapabilities.TYPE_MIXED) &&
|
||||
( clientCapabilities.hasType(ResultCapabilities.TYPE_VIDEOS) ||
|
||||
clientCapabilities.hasType(ResultCapabilities.TYPE_STREAMS) ||
|
||||
|
@ -799,8 +800,16 @@ class StatePlatform {
|
|||
pager.initialize();
|
||||
pagerResult = pager;
|
||||
}
|
||||
else
|
||||
else {
|
||||
pagerResult = client.getChannelContents(channelUrl, ResultCapabilities.TYPE_MIXED, ResultCapabilities.ORDER_CHONOLOGICAL);
|
||||
}
|
||||
} else {
|
||||
pagerResult = if (type == ResultCapabilities.TYPE_SHORTS && clientCapabilities.hasType(ResultCapabilities.TYPE_SHORTS)) {
|
||||
client.getChannelContents(channelUrl, ResultCapabilities.TYPE_SHORTS, ResultCapabilities.ORDER_CHONOLOGICAL);
|
||||
} else {
|
||||
EmptyPager()
|
||||
}
|
||||
}
|
||||
|
||||
//Subscription optimization
|
||||
val sub = StateSubscriptions.instance.getSubscription(channelUrl);
|
||||
|
@ -852,10 +861,10 @@ class StatePlatform {
|
|||
|
||||
return pagerResult;
|
||||
}
|
||||
fun getChannelContent(channelUrl: String, isSubscriptionOptimized: Boolean = false, usePooledClients: Int = 0, ignorePlugins: List<String>? = null): IPager<IPlatformContent> {
|
||||
fun getChannelContent(channelUrl: String, isSubscriptionOptimized: Boolean = false, usePooledClients: Int = 0, ignorePlugins: List<String>? = null, type: String? = null): IPager<IPlatformContent> {
|
||||
Logger.i(TAG, "Platform - getChannelVideos");
|
||||
val baseClient = getChannelClient(channelUrl, ignorePlugins);
|
||||
return getChannelContent(baseClient, channelUrl, isSubscriptionOptimized, usePooledClients);
|
||||
return getChannelContent(baseClient, channelUrl, isSubscriptionOptimized, usePooledClients, type);
|
||||
}
|
||||
fun getChannelContent(channelUrl: String, type: String?, ordering: String = ResultCapabilities.ORDER_CHONOLOGICAL): IPager<IPlatformContent> {
|
||||
val client = getChannelClient(channelUrl);
|
||||
|
|
|
@ -236,7 +236,7 @@ class StatePolycentric {
|
|||
return Pair(didUpdate, listOf(url));
|
||||
}
|
||||
|
||||
fun getChannelContent(scope: CoroutineScope, profile: PolycentricProfile, isSubscriptionOptimized: Boolean = false, channelConcurrency: Int = -1): IPager<IPlatformContent>? {
|
||||
fun getChannelContent(scope: CoroutineScope, profile: PolycentricProfile, isSubscriptionOptimized: Boolean = false, channelConcurrency: Int = -1, type: String? = null): IPager<IPlatformContent>? {
|
||||
ensureEnabled()
|
||||
|
||||
//TODO: Currently abusing subscription concurrency for parallelism
|
||||
|
@ -248,7 +248,11 @@ class StatePolycentric {
|
|||
|
||||
return@mapNotNull Pair(client, scope.async(Dispatchers.IO) {
|
||||
try {
|
||||
if (type == null) {
|
||||
return@async StatePlatform.instance.getChannelContent(url, isSubscriptionOptimized, concurrency);
|
||||
} else {
|
||||
return@async StatePlatform.instance.getChannelContent(url, isSubscriptionOptimized, concurrency, type = type);
|
||||
}
|
||||
} catch (ex: Throwable) {
|
||||
Logger.e(TAG, "getChannelContent", ex);
|
||||
return@async null;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue