From 132100983703d73402a65b2f8e059e0dfdce1c6d Mon Sep 17 00:00:00 2001 From: Blatzar <46196380+Blatzar@users.noreply.github.com> Date: Tue, 9 Aug 2022 15:44:32 +0200 Subject: [PATCH] No setup if no PREBUILT_REPOSITORIES and code cleanup --- .../com/lagradost/cloudstream3/MainAPI.kt | 23 +++++++++++-------- .../lagradost/cloudstream3/MainActivity.kt | 2 ++ .../lagradost/cloudstream3/plugins/Plugin.kt | 1 + .../ui/settings/extensions/RepoAdapter.kt | 1 - .../ui/setup/SetupFragmentLanguage.kt | 8 +++++-- 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt index 0de2df7d..80f42ac8 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt @@ -10,7 +10,6 @@ import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.json.JsonMapper import com.fasterxml.jackson.module.kotlin.KotlinModule -import com.lagradost.cloudstream3.mvvm.debugWarning import com.lagradost.cloudstream3.mvvm.logError import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.aniListApi import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.malApi @@ -43,7 +42,6 @@ object APIHolder { val allProviders: MutableList = arrayListOf() - fun initAll() { for (api in allProviders) { api.init() @@ -58,8 +56,18 @@ object APIHolder { var apis: List = arrayListOf() var apiMap: Map? = null - private fun initMap() { - if (apiMap == null) + fun addPluginMapping(plugin: MainAPI) { + apis = apis + plugin + initMap(true) + } + + fun removePluginMapping(plugin: MainAPI) { + apis = apis.filter { it != plugin } + initMap(true) + } + + private fun initMap(forcedUpdate: Boolean = false) { + if (apiMap == null || forcedUpdate) apiMap = apis.mapIndexed { index, api -> api.name to index }.toMap() } @@ -70,11 +78,8 @@ object APIHolder { fun getApiFromNameNull(apiName: String?): MainAPI? { if (apiName == null) return null initMap() - // Fuck it load from allProviders since they're dynamically loaded - // This is required right now because apiMap might be outdated - // TODO FIX when we switch to LoadPlugin() - debugWarning { "FIX LoadPlugin! getApiFromNameNull sucks right now 💀" } - return apiMap?.get(apiName)?.let { apis.getOrNull(it) } ?: allProviders.firstOrNull { it.name == apiName } + return apiMap?.get(apiName)?.let { apis.getOrNull(it) } + ?: allProviders.firstOrNull { it.name == apiName } } fun getApiFromUrlNull(url: String?): MainAPI? { diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt index b57bda4e..47bfffa7 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt @@ -41,6 +41,7 @@ import com.lagradost.cloudstream3.CommonActivity.showToast import com.lagradost.cloudstream3.CommonActivity.updateLocale import com.lagradost.cloudstream3.mvvm.logError import com.lagradost.cloudstream3.network.initClient +import com.lagradost.cloudstream3.plugins.PREBUILT_REPOSITORIES import com.lagradost.cloudstream3.receivers.VideoDownloadRestartReceiver import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.OAuth2Apis import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.accountManagers @@ -673,6 +674,7 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { // If no plugins bring up extensions screen } else if (PluginManager.getPluginsOnline().isEmpty() && PluginManager.getPluginsLocal().isEmpty() + && PREBUILT_REPOSITORIES.isNotEmpty() ) { navController.navigate(R.id.navigation_setup_extensions) } diff --git a/app/src/main/java/com/lagradost/cloudstream3/plugins/Plugin.kt b/app/src/main/java/com/lagradost/cloudstream3/plugins/Plugin.kt index 9a3dd23b..204119de 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/plugins/Plugin.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/plugins/Plugin.kt @@ -35,6 +35,7 @@ abstract class Plugin { Log.i(PLUGIN_TAG, "Adding ${element.name} (${element.mainUrl}) MainAPI") element.sourcePlugin = this.`__filename` APIHolder.allProviders.add(element) + APIHolder.addPluginMapping(element) } /** diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/RepoAdapter.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/RepoAdapter.kt index 52a975b7..960f0c19 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/RepoAdapter.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/RepoAdapter.kt @@ -6,7 +6,6 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.lagradost.cloudstream3.R import com.lagradost.cloudstream3.plugins.PREBUILT_REPOSITORIES -import com.lagradost.cloudstream3.ui.settings.AccountClickCallback import kotlinx.android.synthetic.main.repository_item.view.* class RepoAdapter( diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt index f982e6fa..7dfd535c 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt @@ -14,6 +14,7 @@ import com.lagradost.cloudstream3.BuildConfig import com.lagradost.cloudstream3.CommonActivity import com.lagradost.cloudstream3.R import com.lagradost.cloudstream3.mvvm.normalSafeApiCall +import com.lagradost.cloudstream3.plugins.PREBUILT_REPOSITORIES import com.lagradost.cloudstream3.plugins.PluginManager import com.lagradost.cloudstream3.ui.settings.appLanguages import com.lagradost.cloudstream3.ui.settings.getCurrentLocale @@ -80,11 +81,14 @@ class SetupFragmentLanguage : Fragment() { next_btt?.setOnClickListener { // If no plugins go to plugins page val nextDestination = if (PluginManager.getPluginsOnline() - .isEmpty() + .isEmpty() && PREBUILT_REPOSITORIES.isNotEmpty() ) R.id.action_navigation_global_to_navigation_setup_extensions else R.id.action_navigation_setup_language_to_navigation_setup_provider_languages - findNavController().navigate(nextDestination, SetupFragmentExtensions.newInstance(true)) + findNavController().navigate( + nextDestination, + SetupFragmentExtensions.newInstance(true) + ) } skip_btt?.setOnClickListener {