From d91446c65471f2dd9bd74bd59e413961690f5dca Mon Sep 17 00:00:00 2001 From: Blatzar <46196380+Blatzar@users.noreply.github.com> Date: Sun, 14 Aug 2022 18:09:19 +0200 Subject: [PATCH 1/2] Faster startup and fix bug removing plugins --- .../lagradost/cloudstream3/MainActivity.kt | 67 ++++++++++--------- .../cloudstream3/plugins/PluginManager.kt | 4 +- .../settings/extensions/PluginsViewModel.kt | 2 +- 3 files changed, 39 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt index 319c0c56..b2b37b72 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt @@ -424,16 +424,19 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { override fun onCreate(savedInstanceState: Bundle?) { app.initClient(this) - val settingsManager = PreferenceManager.getDefaultSharedPreferences(this) - if (settingsManager.getBoolean(getString(R.string.auto_update_plugins_key), true)) { - PluginManager.updateAllOnlinePluginsAndLoadThem(this) - } else { - PluginManager.loadAllOnlinePlugins(this) + // Parallelize to speed up startup + ioSafe { + val settingsManager = PreferenceManager.getDefaultSharedPreferences(this@MainActivity) + if (settingsManager.getBoolean(getString(R.string.auto_update_plugins_key), true)) { + PluginManager.updateAllOnlinePluginsAndLoadThem(this@MainActivity) + } else { + PluginManager.loadAllOnlinePlugins(this@MainActivity) + } + + PluginManager.loadAllLocalPlugins(this@MainActivity) } - PluginManager.loadAllLocalPlugins(this) - // ioSafe { // val plugins = // RepositoryParser.getRepoPlugins("https://raw.githubusercontent.com/recloudstream/TestPlugin/master/repo.json") @@ -445,8 +448,10 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { // } // init accounts - for (api in accountManagers) { - api.init() + ioSafe { + for (api in accountManagers) { + api.init() + } } ioSafe { @@ -461,28 +466,28 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { SearchResultBuilder.updateCache(this) - - initAll() - apis = allProviders - - try { - getKey>(USER_PROVIDER_API)?.let { list -> - list.forEach { custom -> - allProviders.firstOrNull { it.javaClass.simpleName == custom.parentJavaClass } - ?.let { - allProviders.add(it.javaClass.newInstance().apply { - name = custom.name - lang = custom.lang - mainUrl = custom.url.trimEnd('/') - canBeOverridden = false - }) - } - } - } + ioSafe { + initAll() apis = allProviders - APIHolder.apiMap = null - } catch (e: Exception) { - logError(e) + try { + getKey>(USER_PROVIDER_API)?.let { list -> + list.forEach { custom -> + allProviders.firstOrNull { it.javaClass.simpleName == custom.parentJavaClass } + ?.let { + allProviders.add(it.javaClass.newInstance().apply { + name = custom.name + lang = custom.lang + mainUrl = custom.url.trimEnd('/') + canBeOverridden = false + }) + } + } + } + apis = allProviders + APIHolder.apiMap = null + } catch (e: Exception) { + logError(e) + } } loadThemes(this) @@ -653,7 +658,7 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { handleAppIntent(intent) - thread { + ioSafe { runAutoUpdate() } diff --git a/app/src/main/java/com/lagradost/cloudstream3/plugins/PluginManager.kt b/app/src/main/java/com/lagradost/cloudstream3/plugins/PluginManager.kt index fa05f0ab..f894be1c 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/plugins/PluginManager.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/plugins/PluginManager.kt @@ -235,7 +235,7 @@ object PluginManager { val sortedPlugins = dir.listFiles() // Always sort plugins alphabetically for reproducible results - Log.d(TAG, "Files in '${LOCAL_PLUGINS_PATH}' folder: ${sortedPlugins}") + Log.d(TAG, "Files in '${LOCAL_PLUGINS_PATH}' folder: $sortedPlugins") sortedPlugins?.sortedBy { it.name }?.apmap { file -> maybeLoadPlugin(activity, file) @@ -376,7 +376,7 @@ object PluginManager { * */ suspend fun deletePlugin(pluginIdentifier: String, isFilePath: Boolean): Boolean { val data = - (if (isFilePath) getPluginsLocal().firstOrNull { it.filePath == pluginIdentifier } + (if (isFilePath) (getPluginsLocal() + getPluginsOnline()).firstOrNull { it.filePath == pluginIdentifier } else getPluginsOnline().firstOrNull { it.url == pluginIdentifier }) ?: return false return try { diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginsViewModel.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginsViewModel.kt index c4bdfb3e..c83cc31d 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginsViewModel.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/PluginsViewModel.kt @@ -128,7 +128,7 @@ class PluginsViewModel : ViewModel() { plugin: Plugin, isLocal: Boolean ) = ioSafe { - Log.i(TAG, "handlePluginAction = $repositoryUrl, $plugin") + Log.i(TAG, "handlePluginAction = $repositoryUrl, $plugin, $isLocal") if (activity == null) return@ioSafe val (repo, metadata) = plugin From 18f1fba047a102ed0b759783269f72cce00d7d2c Mon Sep 17 00:00:00 2001 From: Blatzar <46196380+Blatzar@users.noreply.github.com> Date: Sun, 14 Aug 2022 18:13:44 +0200 Subject: [PATCH 2/2] Fix merge conflict --- .../lagradost/cloudstream3/MainActivity.kt | 63 ++++++++++--------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt index 9d8b43b1..5a915183 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt @@ -447,13 +447,15 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { changeStatusBarState(isEmulatorSettings()) - if (settingsManager.getBoolean(getString(R.string.auto_update_plugins_key), true)) { - PluginManager.updateAllOnlinePluginsAndLoadThem(this) - } else { - PluginManager.loadAllOnlinePlugins(this) - } + ioSafe { + if (settingsManager.getBoolean(getString(R.string.auto_update_plugins_key), true)) { + PluginManager.updateAllOnlinePluginsAndLoadThem(this@MainActivity) + } else { + PluginManager.loadAllOnlinePlugins(this@MainActivity) + } - PluginManager.loadAllLocalPlugins(this) + PluginManager.loadAllLocalPlugins(this@MainActivity) + } // ioSafe { // val plugins = @@ -466,8 +468,10 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { // } // init accounts - for (api in accountManagers) { - api.init() + ioSafe { + for (api in accountManagers) { + api.init() + } } ioSafe { @@ -482,28 +486,29 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { SearchResultBuilder.updateCache(this) - - initAll() - apis = allProviders - - try { - getKey>(USER_PROVIDER_API)?.let { list -> - list.forEach { custom -> - allProviders.firstOrNull { it.javaClass.simpleName == custom.parentJavaClass } - ?.let { - allProviders.add(it.javaClass.newInstance().apply { - name = custom.name - lang = custom.lang - mainUrl = custom.url.trimEnd('/') - canBeOverridden = false - }) - } - } - } + ioSafe { + initAll() apis = allProviders - APIHolder.apiMap = null - } catch (e: Exception) { - logError(e) + + try { + getKey>(USER_PROVIDER_API)?.let { list -> + list.forEach { custom -> + allProviders.firstOrNull { it.javaClass.simpleName == custom.parentJavaClass } + ?.let { + allProviders.add(it.javaClass.newInstance().apply { + name = custom.name + lang = custom.lang + mainUrl = custom.url.trimEnd('/') + canBeOverridden = false + }) + } + } + } + apis = allProviders + APIHolder.apiMap = null + } catch (e: Exception) { + logError(e) + } } // val navView: BottomNavigationView = findViewById(R.id.nav_view)