diff --git a/app/src/main/java/com/futo/platformplayer/subscription/SmartSubscriptionAlgorithm.kt b/app/src/main/java/com/futo/platformplayer/subscription/SmartSubscriptionAlgorithm.kt index ea224ae9..1c3355b5 100644 --- a/app/src/main/java/com/futo/platformplayer/subscription/SmartSubscriptionAlgorithm.kt +++ b/app/src/main/java/com/futo/platformplayer/subscription/SmartSubscriptionAlgorithm.kt @@ -69,12 +69,17 @@ class SmartSubscriptionAlgorithm( if(limit == null || limit <= 0) finalTasks.addAll(clientTasks.second); else { - val fetchTasks = clientTasks.second.take(limit); - val cacheTasks = clientTasks.second.drop(limit); - - for(cacheTask in cacheTasks) - cacheTask.fromCache = true; + val fetchTasks = mutableListOf(); + val cacheTasks = mutableListOf(); + for(task in clientTasks.second) { + if(!task.fromCache && fetchTasks.size < limit) + fetchTasks.add(task); + else { + task.fromCache = true; + cacheTasks.add(task); + } + } Logger.i(TAG, "Subscription Client Budget [${clientTasks.first.name}]: ${fetchTasks.size}/${limit}") finalTasks.addAll(fetchTasks + cacheTasks); diff --git a/app/src/main/java/com/futo/platformplayer/subscription/SubscriptionsTaskFetchAlgorithm.kt b/app/src/main/java/com/futo/platformplayer/subscription/SubscriptionsTaskFetchAlgorithm.kt index 98d251d1..affdb7c9 100644 --- a/app/src/main/java/com/futo/platformplayer/subscription/SubscriptionsTaskFetchAlgorithm.kt +++ b/app/src/main/java/com/futo/platformplayer/subscription/SubscriptionsTaskFetchAlgorithm.kt @@ -57,7 +57,8 @@ abstract class SubscriptionsTaskFetchAlgorithm( for(clientTasks in tasksGrouped) { val clientTaskCount = clientTasks.value.filter { !it.fromCache }.size; val clientCacheCount = clientTasks.value.size - clientTaskCount; - if(clientCacheCount > 0 && clientTaskCount > 0 && StateApp.instance.contextOrNull?.let { it is MainActivity && it.isFragmentActive() } == true) { + val limit = clientTasks.key.getSubscriptionRateLimit(); + if(clientCacheCount > 0 && clientTaskCount > 0 && limit != null && clientTaskCount >= limit && StateApp.instance.contextOrNull?.let { it is MainActivity && it.isFragmentActive() } == true) { UIDialogs.toast("[${clientTasks.key.name}] only updating ${clientTaskCount} most urgent channels (rqs). (${clientCacheCount} cached)"); } }