mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Move code out of updatePlugin code and to its own method. Added separate setting for it.
This commit is contained in:
parent
93712f39fb
commit
25d34b27f9
4 changed files with 83 additions and 30 deletions
|
@ -561,13 +561,26 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
ioSafe {
|
ioSafe {
|
||||||
|
var isLoaded = false
|
||||||
if (settingsManager.getBoolean(
|
if (settingsManager.getBoolean(
|
||||||
getString(R.string.auto_update_plugins_key),
|
getString(R.string.auto_update_plugins_key),
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
PluginManager.updateAllOnlinePluginsAndLoadThem(this@MainActivity)
|
PluginManager.updateAllOnlinePluginsAndLoadThem(this@MainActivity)
|
||||||
} else {
|
isLoaded = true
|
||||||
|
}
|
||||||
|
//Automatically download not existing plugins
|
||||||
|
if (settingsManager.getBoolean(
|
||||||
|
getString(R.string.auto_download_plugins_key),
|
||||||
|
false
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
PluginManager.downloadNotExistingPluginsAndLoad(this@MainActivity)
|
||||||
|
isLoaded = true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isLoaded) {
|
||||||
PluginManager.loadAllOnlinePlugins(this@MainActivity)
|
PluginManager.loadAllOnlinePlugins(this@MainActivity)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,13 +249,69 @@ object PluginManager {
|
||||||
}
|
}
|
||||||
}.flatten().distinctBy { it.onlineData.second.url }
|
}.flatten().distinctBy { it.onlineData.second.url }
|
||||||
|
|
||||||
|
debugPrint {
|
||||||
|
"Outdated plugins: ${outdatedPlugins.filter { it.isOutdated }}"
|
||||||
|
}
|
||||||
|
|
||||||
|
val updatedPlugins = mutableListOf<String>()
|
||||||
|
|
||||||
|
outdatedPlugins.apmap { pluginData ->
|
||||||
|
if (pluginData.isDisabled) {
|
||||||
|
//updatedPlugins.add(activity.getString(R.string.single_plugin_disabled, pluginData.onlineData.second.name))
|
||||||
|
unloadPlugin(pluginData.savedData.filePath)
|
||||||
|
} else if (pluginData.isOutdated) {
|
||||||
|
downloadAndLoadPlugin(
|
||||||
|
activity,
|
||||||
|
pluginData.onlineData.second.url,
|
||||||
|
pluginData.savedData.internalName,
|
||||||
|
File(pluginData.savedData.filePath)
|
||||||
|
).let { success ->
|
||||||
|
if (success)
|
||||||
|
updatedPlugins.add(pluginData.onlineData.second.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
createNotification(activity, updatedPlugins, R.string.plugins_updated)
|
||||||
|
}
|
||||||
|
|
||||||
|
ioSafe {
|
||||||
|
afterPluginsLoadedEvent.invoke(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
Log.i(TAG, "Plugin update done!")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Automatically download plugins not yet existing on local
|
||||||
|
* 1. Gets all online data from online plugins repo
|
||||||
|
* 2. Fetch all undownloaded plugins
|
||||||
|
* 3. Download them and reload plugins
|
||||||
|
**/
|
||||||
|
fun downloadNotExistingPluginsAndLoad(activity: Activity) {
|
||||||
|
// Load all plugins as fast as possible!
|
||||||
|
loadAllOnlinePlugins(activity)
|
||||||
|
|
||||||
|
ioSafe {
|
||||||
|
afterPluginsLoadedEvent.invoke(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
val newDownloadPlugins = mutableListOf<String>()
|
||||||
|
val urls = (getKey<Array<RepositoryData>>(REPOSITORIES_KEY)
|
||||||
|
?: emptyArray()) + PREBUILT_REPOSITORIES
|
||||||
|
val onlinePlugins = urls.toList().apmap {
|
||||||
|
getRepoPlugins(it.url)?.toList() ?: emptyList()
|
||||||
|
}.flatten().distinctBy { it.second.url }
|
||||||
|
|
||||||
// Iterate online repos and returns not downloaded plugins
|
// Iterate online repos and returns not downloaded plugins
|
||||||
val notDownloadedPlugins = onlinePlugins.mapNotNull outer@{ onlineData ->
|
val notDownloadedPlugins = onlinePlugins.mapNotNull outer@{ onlineData ->
|
||||||
val sitePlugin = onlineData.second
|
val sitePlugin = onlineData.second
|
||||||
//Don't include empty urls
|
//Don't include empty urls
|
||||||
if (sitePlugin.url.isBlank()) { return@outer null }
|
if (sitePlugin.url.isBlank()) { return@outer null }
|
||||||
|
if (sitePlugin.repositoryUrl.isNullOrBlank()) { return@outer null }
|
||||||
//Omit already existing plugins
|
//Omit already existing plugins
|
||||||
if (getPluginPath(activity, sitePlugin.internalName, onlineData.first).exists()) {
|
if (getPluginPath(activity, sitePlugin.internalName, sitePlugin.repositoryUrl).exists()) {
|
||||||
//Log.i("DevDebug", "Skip > ${sitePlugin.internalName}")
|
//Log.i("DevDebug", "Skip > ${sitePlugin.internalName}")
|
||||||
return@outer null
|
return@outer null
|
||||||
}
|
}
|
||||||
|
@ -282,30 +338,6 @@ object PluginManager {
|
||||||
}
|
}
|
||||||
//Log.i("DevDebug", "notDownloadedPlugins => ${notDownloadedPlugins.toJson()}")
|
//Log.i("DevDebug", "notDownloadedPlugins => ${notDownloadedPlugins.toJson()}")
|
||||||
|
|
||||||
debugPrint {
|
|
||||||
"Outdated plugins: ${outdatedPlugins.filter { it.isOutdated }}"
|
|
||||||
}
|
|
||||||
|
|
||||||
val updatedPlugins = mutableListOf<String>()
|
|
||||||
val newDownloadPlugins = mutableListOf<String>()
|
|
||||||
|
|
||||||
outdatedPlugins.apmap { pluginData ->
|
|
||||||
if (pluginData.isDisabled) {
|
|
||||||
//updatedPlugins.add(activity.getString(R.string.single_plugin_disabled, pluginData.onlineData.second.name))
|
|
||||||
unloadPlugin(pluginData.savedData.filePath)
|
|
||||||
} else if (pluginData.isOutdated) {
|
|
||||||
downloadAndLoadPlugin(
|
|
||||||
activity,
|
|
||||||
pluginData.onlineData.second.url,
|
|
||||||
pluginData.savedData.internalName,
|
|
||||||
File(pluginData.savedData.filePath)
|
|
||||||
).let { success ->
|
|
||||||
if (success)
|
|
||||||
updatedPlugins.add(pluginData.onlineData.second.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
notDownloadedPlugins.apmap { pluginData ->
|
notDownloadedPlugins.apmap { pluginData ->
|
||||||
downloadAndLoadPlugin(
|
downloadAndLoadPlugin(
|
||||||
activity,
|
activity,
|
||||||
|
@ -319,14 +351,14 @@ object PluginManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
main {
|
main {
|
||||||
createNotification(activity, updatedPlugins + newDownloadPlugins)
|
createNotification(activity, newDownloadPlugins, R.string.plugins_downloaded)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ioSafe {
|
// ioSafe {
|
||||||
afterPluginsLoadedEvent.invoke(true)
|
afterPluginsLoadedEvent.invoke(true)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
Log.i(TAG, "Plugin update done!")
|
Log.i(TAG, "Plugin download done!")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -581,7 +613,8 @@ object PluginManager {
|
||||||
|
|
||||||
private fun createNotification(
|
private fun createNotification(
|
||||||
context: Context,
|
context: Context,
|
||||||
extensionNames: List<String>
|
extensionNames: List<String>,
|
||||||
|
title: Int
|
||||||
): Notification? {
|
): Notification? {
|
||||||
try {
|
try {
|
||||||
if (extensionNames.isEmpty()) return null
|
if (extensionNames.isEmpty()) return null
|
||||||
|
@ -595,7 +628,7 @@ object PluginManager {
|
||||||
.setSilent(true)
|
.setSilent(true)
|
||||||
.setPriority(NotificationCompat.PRIORITY_LOW)
|
.setPriority(NotificationCompat.PRIORITY_LOW)
|
||||||
.setColor(context.colorFromAttribute(R.attr.colorPrimary))
|
.setColor(context.colorFromAttribute(R.attr.colorPrimary))
|
||||||
.setContentTitle(context.getString(R.string.plugins_updated, extensionNames.size))
|
.setContentTitle(context.getString(title, extensionNames.size))
|
||||||
.setSmallIcon(R.drawable.ic_baseline_extension_24)
|
.setSmallIcon(R.drawable.ic_baseline_extension_24)
|
||||||
.setStyle(
|
.setStyle(
|
||||||
NotificationCompat.BigTextStyle()
|
NotificationCompat.BigTextStyle()
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
<string name="search_types_list_key" translatable="false">search_type_list</string>
|
<string name="search_types_list_key" translatable="false">search_type_list</string>
|
||||||
<string name="auto_update_key" translatable="false">auto_update</string>
|
<string name="auto_update_key" translatable="false">auto_update</string>
|
||||||
<string name="auto_update_plugins_key" translatable="false">auto_update_plugins</string>
|
<string name="auto_update_plugins_key" translatable="false">auto_update_plugins</string>
|
||||||
|
<string name="auto_download_plugins_key" translatable="false">auto_download_plugins_key</string>
|
||||||
<string name="skip_update_key" translatable="false">skip_update_key</string>
|
<string name="skip_update_key" translatable="false">skip_update_key</string>
|
||||||
<string name="prerelease_update_key" translatable="false">prerelease_update</string>
|
<string name="prerelease_update_key" translatable="false">prerelease_update</string>
|
||||||
<string name="manual_check_update_key" translatable="false">manual_check_update</string>
|
<string name="manual_check_update_key" translatable="false">manual_check_update</string>
|
||||||
|
@ -269,6 +270,7 @@
|
||||||
<string name="pref_filter_search_quality">Hide selected video quality on Search results</string>
|
<string name="pref_filter_search_quality">Hide selected video quality on Search results</string>
|
||||||
|
|
||||||
<string name="automatic_plugin_updates">Automatic plugin updates</string>
|
<string name="automatic_plugin_updates">Automatic plugin updates</string>
|
||||||
|
<string name="automatic_plugin_download">Automatically download plugins</string>
|
||||||
<string name="updates_settings">Show app updates</string>
|
<string name="updates_settings">Show app updates</string>
|
||||||
<string name="updates_settings_des">Automatically search for new updates on start</string>
|
<string name="updates_settings_des">Automatically search for new updates on start</string>
|
||||||
<string name="uprereleases_settings">Update to prereleases</string>
|
<string name="uprereleases_settings">Update to prereleases</string>
|
||||||
|
|
|
@ -33,6 +33,11 @@
|
||||||
android:icon="@drawable/ic_baseline_extension_24"
|
android:icon="@drawable/ic_baseline_extension_24"
|
||||||
android:key="@string/auto_update_plugins_key"
|
android:key="@string/auto_update_plugins_key"
|
||||||
android:title="@string/automatic_plugin_updates" />
|
android:title="@string/automatic_plugin_updates" />
|
||||||
|
<SwitchPreference
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:icon="@drawable/ic_baseline_extension_24"
|
||||||
|
android:key="@string/auto_download_plugins_key"
|
||||||
|
android:title="@string/automatic_plugin_download" />
|
||||||
<SwitchPreference
|
<SwitchPreference
|
||||||
android:icon="@drawable/ic_baseline_notifications_active_24"
|
android:icon="@drawable/ic_baseline_notifications_active_24"
|
||||||
android:summary="@string/updates_settings_des"
|
android:summary="@string/updates_settings_des"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue