From e2380d3afbd48b3bce37fa4160e5084767cc1061 Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Fri, 6 Oct 2023 11:31:27 -0700 Subject: [PATCH] Change wording for installing private extensions Instead of "install" and "uninstall", changing the wording to "add" and "remove" when private installation is set --- .../ui/extension/ExtensionAdapter.kt | 2 ++ .../ui/extension/ExtensionBottomSheet.kt | 21 +++++++++---------- .../tachiyomi/ui/extension/ExtensionHolder.kt | 11 ++++++++-- .../details/ExtensionDetailsHeaderAdapter.kt | 15 +++++-------- .../tachiyomi/ui/source/BrowseController.kt | 11 ++++++++++ 5 files changed, 37 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionAdapter.kt index 2b1828b3de..2b6c1ba11f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionAdapter.kt @@ -4,6 +4,7 @@ import android.widget.TextView import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.extension.util.ExtensionInstaller import eu.kanade.tachiyomi.ui.extension.ExtensionAdapter.OnButtonClickListener import uy.kohesive.injekt.injectLazy @@ -18,6 +19,7 @@ class ExtensionAdapter(val listener: OnButtonClickListener) : val preferences: PreferencesHelper by injectLazy() var installedSortOrder = preferences.installedExtensionsOrder().get() + var installPrivately = preferences.extensionInstaller().get() == ExtensionInstaller.PRIVATE init { setDisplayHeadersAtStartUp(true) 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 b0c6dabb70..07c4fdf2b6 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 @@ -22,7 +22,6 @@ import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.InstallStep import eu.kanade.tachiyomi.extension.model.InstalledExtensionsOrder import eu.kanade.tachiyomi.extension.util.ExtensionInstaller -import eu.kanade.tachiyomi.extension.util.ExtensionLoader import eu.kanade.tachiyomi.ui.extension.details.ExtensionDetailsController import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.migration.BaseMigrationInterface @@ -300,7 +299,7 @@ class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: At if (binding.tabs.selectedTabPosition == 0) { val extension = (extAdapter?.getItem(position) as? ExtensionItem)?.extension ?: return if (extension is Extension.Installed || extension is Extension.Untrusted) { - uninstallExtension(extension.pkgName) + uninstallExtension(extension.name, extension.pkgName) } } } @@ -411,21 +410,17 @@ class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: At override fun trustSignature(signatureHash: String) { presenter.trustSignature(signatureHash) } - override fun uninstallExtension(pkgName: String) { + presenter.uninstallExtension(pkgName) + } + + private fun uninstallExtension(extName: String, pkgName: String) { if (context.isPackageInstalled(pkgName)) { presenter.uninstallExtension(pkgName) } else { - val extName = run { - val appInfo = ExtensionLoader.getExtensionPackageInfoFromPkgName( - context, - pkgName, - )?.applicationInfo ?: return@run pkgName - context.packageManager.getApplicationLabel(appInfo).toString() - } controller.activity!!.materialAlertDialog() .setTitle(extName) - .setPositiveButton(R.string.uninstall) { _, _ -> + .setPositiveButton(R.string.remove) { _, _ -> presenter.uninstallExtension(pkgName) } .setNegativeButton(android.R.string.cancel) { _, _ -> } @@ -433,6 +428,10 @@ class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: At } } + fun setCanInstallPrivately(installPrivately: Boolean) { + extAdapter?.installPrivately = installPrivately + } + fun onDestroy() { presenter.onDestroy() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionHolder.kt index 067e5047fe..88d9ca381d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionHolder.kt @@ -60,7 +60,14 @@ class ExtensionHolder(view: View, val adapter: ExtensionAdapter) : .takeUnless { it == 0L }?.let { binding.date.isVisible = true binding.date.text = - itemView.context.timeSpanFromNow(R.string.installed_, it) + itemView.context.timeSpanFromNow( + if (extension.isShared) { + R.string.installed_ + } else { + R.string.added_ + }, + it, + ) infoText.add("") } } @@ -156,7 +163,7 @@ class ExtensionHolder(view: View, val adapter: ExtensionAdapter) : setText(R.string.trust) } else { resetStrokeColor() - setText(R.string.install) + setText(if (adapter.installPrivately) R.string.add else R.string.install) } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/details/ExtensionDetailsHeaderAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/details/ExtensionDetailsHeaderAdapter.kt index 447c531027..482de0e6c7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/details/ExtensionDetailsHeaderAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/details/ExtensionDetailsHeaderAdapter.kt @@ -9,7 +9,6 @@ import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.ExtensionDetailHeaderBinding -import eu.kanade.tachiyomi.extension.util.ExtensionLoader import eu.kanade.tachiyomi.ui.extension.getApplicationIcon import eu.kanade.tachiyomi.util.system.LocaleHelper import eu.kanade.tachiyomi.util.system.materialAlertDialog @@ -54,16 +53,9 @@ class ExtensionDetailsHeaderAdapter(private val presenter: ExtensionDetailsPrese if (extension.isShared) { presenter.uninstallExtension() } else { - val extName = run { - val appInfo = ExtensionLoader.getExtensionPackageInfoFromPkgName( - context, - extension.pkgName, - )?.applicationInfo ?: return@run extension.name - context.packageManager.getApplicationLabel(appInfo).toString() - } context.materialAlertDialog() - .setTitle(extName) - .setPositiveButton(R.string.uninstall) { _, _ -> + .setTitle(extension.name) + .setPositiveButton(R.string.remove) { _, _ -> presenter.uninstallExtension() } .setNegativeButton(android.R.string.cancel) { _, _ -> } @@ -79,6 +71,9 @@ class ExtensionDetailsHeaderAdapter(private val presenter: ExtensionDetailsPrese } binding.extensionAppInfoButton.isVisible = extension.isShared + if (!extension.isShared) { + binding.extensionUninstallButton.text = context.getString(R.string.remove) + } if (extension.isUnofficial) { binding.extensionWarningBanner.isVisible = true diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/BrowseController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/BrowseController.kt index dfe6089bb4..64d8e4a67c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/BrowseController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/BrowseController.kt @@ -31,6 +31,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.databinding.BrowseControllerBinding +import eu.kanade.tachiyomi.extension.util.ExtensionInstaller import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.Source @@ -64,6 +65,9 @@ import eu.kanade.tachiyomi.util.view.toolbarHeight import eu.kanade.tachiyomi.util.view.updateGradiantBGRadius import eu.kanade.tachiyomi.util.view.withFadeTransaction import eu.kanade.tachiyomi.widget.LinearLayoutManagerAccurateOffset +import kotlinx.coroutines.flow.drop +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach import kotlinx.parcelize.Parcelize import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get @@ -174,6 +178,13 @@ class BrowseController : requestFilePermissionsSafe(301, preferences) binding.bottomSheet.root.onCreate(this) + preferences.extensionInstaller().asFlow() + .drop(1) + .onEach { + binding.bottomSheet.root.setCanInstallPrivately(it == ExtensionInstaller.PRIVATE) + } + .launchIn(viewScope) + binding.bottomSheet.root.sheetBehavior?.isGestureInsetBottomIgnored = true binding.bottomSheet.root.sheetBehavior?.addBottomSheetCallback(