From b3d05d50fa6ebd1dc9322c2e29f057e69ee6a9d8 Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Sun, 22 Aug 2021 23:26:50 -0400 Subject: [PATCH] Update all extension button now runs extension job instead of throwing all exts into the dl queue --- .../ui/extension/ExtensionBottomPresenter.kt | 46 +++++++++++-------- .../ui/extension/ExtensionBottomSheet.kt | 9 ++-- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomPresenter.kt index a373b3c9a7..07b26dfd7c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomPresenter.kt @@ -1,11 +1,13 @@ package eu.kanade.tachiyomi.ui.extension import android.content.pm.PackageInstaller +import androidx.core.content.ContextCompat import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.getOrDefault +import eu.kanade.tachiyomi.extension.ExtensionInstallService import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.extension.ExtensionsChangedListener import eu.kanade.tachiyomi.extension.model.Extension @@ -300,31 +302,37 @@ class ExtensionBottomPresenter( } fun installExtension(extension: Extension.Available) { - if (isNotMIUIOptimized()) { - presenterScope.launch { - extensionManager.installExtension(ExtensionManager.ExtensionInfo(extension), presenterScope) - .launchIn(this) - } + presenterScope.launch { + extensionManager.installExtension( + ExtensionManager.ExtensionInfo(extension), + presenterScope + ) + .launchIn(this) } } fun updateExtension(extension: Extension.Installed) { - if (isNotMIUIOptimized()) { - val availableExt = - extensionManager.availableExtensions.find { it.pkgName == extension.pkgName } ?: return - presenterScope.launch { - extensionManager.installExtension(ExtensionManager.ExtensionInfo(availableExt), presenterScope) - .launchIn(this) - } - } + val availableExt = + extensionManager.availableExtensions.find { it.pkgName == extension.pkgName } ?: return + installExtension(availableExt) } - fun isNotMIUIOptimized(): Boolean { -// if (MiuiUtil.isMiui() && !MiuiUtil.isMiuiOptimizationDisabled()) { -// preferences.context.toast(R.string.extensions_miui_warning, Toast.LENGTH_LONG) -// return false -// } - return true + fun updateExtensions(extensions: List) { + if (extensions.isEmpty()) return + val context = bottomSheet.context + extensions.forEach { + val pkgName = it.pkgName + currentDownloads[pkgName] = InstallStep.Pending to null + val item = updateInstallStep(it, InstallStep.Pending, null) ?: return@forEach + bottomSheet.downloadUpdate(item) + } + val intent = ExtensionInstallService.jobIntent( + bottomSheet.context, + extensions.mapNotNull { extension -> + extensionManager.availableExtensions.find { it.pkgName == extension.pkgName } + } + ) + ContextCompat.startForegroundService(context, intent) } fun uninstallExtension(pkgName: String) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt index e47868c14c..96d1ca7712 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt @@ -235,15 +235,18 @@ class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: At fun updateAllExtensions(position: Int) { val header = (extAdapter?.getSectionHeader(position)) as? ExtensionGroupItem ?: return val items = extAdapter?.getSectionItemPositions(header) - items?.forEach { + val extensions = items?.mapNotNull { val extItem = (extAdapter?.getItem(it) as? ExtensionItem) ?: return val extension = (extAdapter?.getItem(it) as? ExtensionItem)?.extension ?: return if (extItem.installStep == null && extension is Extension.Installed && extension.hasUpdate ) { - presenter.updateExtension(extension) + extension + } else { + null } - } + }.orEmpty() + presenter.updateExtensions(extensions) } override fun onItemClick(view: View?, position: Int): Boolean {