Change wording for installing private extensions

Instead of "install" and "uninstall", changing the wording to "add" and "remove" when private installation is set
This commit is contained in:
Jays2Kings 2023-10-06 11:31:27 -07:00
parent fce1b41645
commit e2380d3afb
5 changed files with 37 additions and 23 deletions

View file

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

View file

@ -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()
}

View file

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

View file

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

View file

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