Faster startup and fix bug removing plugins

This commit is contained in:
Blatzar 2022-08-14 18:09:19 +02:00
parent e45246f834
commit d91446c654
3 changed files with 39 additions and 34 deletions

View file

@ -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<Array<SettingsGeneral.CustomSite>>(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<Array<SettingsGeneral.CustomSite>>(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()
}

View file

@ -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 {

View file

@ -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