forked from recloudstream/cloudstream
Faster startup and fix bug removing plugins
This commit is contained in:
parent
e45246f834
commit
d91446c654
3 changed files with 39 additions and 34 deletions
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue