mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
chore: Disable "unofficial" state
This commit is contained in:
parent
33cb4532e4
commit
23db98d356
10 changed files with 32 additions and 78 deletions
|
@ -198,7 +198,7 @@ class ExtensionManager(
|
|||
val pkgName = installedExt.pkgName
|
||||
val availableExt = availableExtensions.find { it.pkgName == pkgName }
|
||||
|
||||
if (!installedExt.isUnofficial && availableExt == null != installedExt.isObsolete) {
|
||||
if (availableExt == null != installedExt.isObsolete) {
|
||||
mutInstalledExtensions[index] = installedExt.copy(isObsolete = true)
|
||||
changed = true
|
||||
}
|
||||
|
@ -422,7 +422,7 @@ class ExtensionManager(
|
|||
|
||||
private fun Extension.Installed.updateExists(availableExtension: Extension.Available? = null): Boolean {
|
||||
val availableExt = availableExtension ?: availableExtensionsFlow.value.find { it.pkgName == pkgName }
|
||||
if (isUnofficial || availableExt == null) return false
|
||||
if (availableExt == null) return false
|
||||
|
||||
return (availableExt.versionCode > versionCode || availableExt.libVersion > libVersion)
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@ internal class ExtensionGithubApi {
|
|||
val availableExt = extensions.find { it.pkgName == pkgName } ?: continue
|
||||
val hasUpdatedVer = availableExt.versionCode > installedExt.versionCode
|
||||
val hasUpdatedLib = availableExt.libVersion > installedExt.libVersion
|
||||
val hasUpdate = installedExt.isUnofficial.not() && (hasUpdatedVer || hasUpdatedLib)
|
||||
val hasUpdate = hasUpdatedVer || hasUpdatedLib
|
||||
if (hasUpdate) {
|
||||
extensionsWithUpdate.add(availableExt)
|
||||
}
|
||||
|
@ -130,8 +130,8 @@ internal class ExtensionGithubApi {
|
|||
}
|
||||
}
|
||||
|
||||
private const val REPO_URL_PREFIX = "https://raw.githubusercontent.com/keiyoushi/extensions/repo/"
|
||||
private const val FALLBACK_REPO_URL_PREFIX = "https://gcore.jsdelivr.net/gh/keiyoushi/extensions@repo/"
|
||||
const val REPO_URL_PREFIX = "https://raw.githubusercontent.com/keiyoushi/extensions/repo/"
|
||||
const val FALLBACK_REPO_URL_PREFIX = "https://gcore.jsdelivr.net/gh/keiyoushi/extensions@repo/"
|
||||
|
||||
@Serializable
|
||||
private data class ExtensionJsonObject(
|
||||
|
|
|
@ -94,7 +94,6 @@ class ExtensionHolder(view: View, val adapter: ExtensionAdapter) :
|
|||
binding.lang.text = LocaleHelper.getDisplayName(extension.lang)
|
||||
binding.warning.text = when {
|
||||
extension is Extension.Untrusted -> itemView.context.getString(R.string.untrusted)
|
||||
extension is Extension.Installed && extension.isUnofficial -> itemView.context.getString(R.string.unofficial)
|
||||
extension is Extension.Installed && extension.isObsolete -> itemView.context.getString(R.string.obsolete)
|
||||
extension.isNsfw -> itemView.context.getString(R.string.nsfw_short)
|
||||
else -> ""
|
||||
|
|
|
@ -27,6 +27,7 @@ import eu.kanade.tachiyomi.data.preference.SharedPreferencesDataStore
|
|||
import eu.kanade.tachiyomi.core.preference.minusAssign
|
||||
import eu.kanade.tachiyomi.core.preference.plusAssign
|
||||
import eu.kanade.tachiyomi.databinding.ExtensionDetailControllerBinding
|
||||
import eu.kanade.tachiyomi.extension.api.REPO_URL_PREFIX
|
||||
import eu.kanade.tachiyomi.extension.model.Extension
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import eu.kanade.tachiyomi.source.ConfigurableSource
|
||||
|
@ -153,64 +154,29 @@ class ExtensionDetailsController(bundle: Bundle? = null) :
|
|||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.extension_details, menu)
|
||||
|
||||
presenter.extension?.let { extension ->
|
||||
menu.findItem(R.id.action_history).isVisible = !extension.isUnofficial
|
||||
menu.findItem(R.id.action_readme).isVisible = !extension.isUnofficial
|
||||
if (extension.hasReadme) {
|
||||
menu.findItem(R.id.action_readme).icon = view?.context?.contextCompatDrawable(R.drawable.ic_help_24dp)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.action_history -> openChangelog()
|
||||
R.id.action_readme -> openReadme()
|
||||
R.id.action_open_repo -> openRepo()
|
||||
R.id.action_clear_cookies -> clearCookies()
|
||||
}
|
||||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
private fun openChangelog() {
|
||||
val extension = presenter.extension!!
|
||||
val pkgName = extension.pkgName.substringAfter("eu.kanade.tachiyomi.extension.")
|
||||
val pkgFactory = extension.pkgFactory
|
||||
if (extension.hasChangelog) {
|
||||
val url = createUrl(URL_EXTENSION_BLOB, pkgName, pkgFactory, "/CHANGELOG.md")
|
||||
openInBrowser(url)
|
||||
return
|
||||
}
|
||||
|
||||
// Falling back on GitHub commit history because there is no explicit changelog in extension
|
||||
val url = createUrl(URL_EXTENSION_COMMITS, pkgName, pkgFactory)
|
||||
private fun openRepo() {
|
||||
// TODO
|
||||
// val url = getUrl(extension.repoUrl)
|
||||
val url = getUrl()
|
||||
openInBrowser(url)
|
||||
}
|
||||
|
||||
private fun createUrl(url: String, pkgName: String, pkgFactory: String?, path: String = ""): String {
|
||||
return if (!pkgFactory.isNullOrEmpty()) {
|
||||
when (path.isEmpty()) {
|
||||
true -> "$url/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/$pkgFactory"
|
||||
else -> "$url/multisrc/overrides/$pkgFactory/" + (pkgName.split(".").lastOrNull() ?: "") + path
|
||||
}
|
||||
} else {
|
||||
url + "/src/" + pkgName.replace(".", "/") + path
|
||||
}
|
||||
}
|
||||
|
||||
private fun openReadme() {
|
||||
val extension = presenter.extension!!
|
||||
|
||||
if (!extension.hasReadme) {
|
||||
openInBrowser("https://tachiyomi.org/docs/faq/browse/extensions")
|
||||
return
|
||||
}
|
||||
|
||||
val pkgName = extension.pkgName.substringAfter("eu.kanade.tachiyomi.extension.")
|
||||
val pkgFactory = extension.pkgFactory
|
||||
val url = createUrl(URL_EXTENSION_BLOB, pkgName, pkgFactory, "/README.md")
|
||||
openInBrowser(url)
|
||||
return
|
||||
private fun getUrl(repoUrl: String? = REPO_URL_PREFIX): String? {
|
||||
val regex = """https://raw.githubusercontent.com/(.+?)/(.+?)/.+""".toRegex()
|
||||
return regex.find(repoUrl.orEmpty())?.let {
|
||||
val (user, repo) = it.destructured
|
||||
"https://github.com/$user/$repo"
|
||||
} ?: repoUrl
|
||||
}
|
||||
|
||||
private fun clearCookies() {
|
||||
|
@ -396,9 +362,5 @@ class ExtensionDetailsController(bundle: Bundle? = null) :
|
|||
private companion object {
|
||||
const val PKGNAME_KEY = "pkg_name"
|
||||
const val LASTOPENPREFERENCE_KEY = "last_open_preference"
|
||||
private const val URL_EXTENSION_BLOB =
|
||||
"https://github.com/tachiyomiorg/tachiyomi-extensions/blob/master"
|
||||
private const val URL_EXTENSION_COMMITS =
|
||||
"https://github.com/tachiyomiorg/tachiyomi-extensions/commits/master"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,10 +75,7 @@ class ExtensionDetailsHeaderAdapter(private val presenter: ExtensionDetailsPrese
|
|||
binding.extensionUninstallButton.text = context.getString(R.string.remove)
|
||||
}
|
||||
|
||||
if (extension.isUnofficial) {
|
||||
binding.extensionWarningBanner.isVisible = true
|
||||
binding.extensionWarningBanner.setText(R.string.unofficial_extension_message)
|
||||
} else if (extension.isObsolete) {
|
||||
if (extension.isObsolete) {
|
||||
binding.extensionWarningBanner.isVisible = true
|
||||
binding.extensionWarningBanner.setText(R.string.obsolete_extension_message)
|
||||
}
|
||||
|
|
|
@ -2,14 +2,10 @@ package eu.kanade.tachiyomi.ui.more
|
|||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceViewHolder
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||
import eu.kanade.tachiyomi.util.system.openInBrowser
|
||||
import eu.kanade.tachiyomi.util.view.checkHeightThen
|
||||
import eu.kanade.tachiyomi.util.view.compatToolTipText
|
||||
|
||||
class AboutLinksPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
||||
|
|
|
@ -59,13 +59,12 @@ class CrashLogUtil(private val context: Context) {
|
|||
val availableExtension = availableExtensions.find { it.pkgName == installedExtension.pkgName }
|
||||
|
||||
val hasUpdate = (availableExtension?.versionCode ?: 0) > installedExtension.versionCode
|
||||
if (hasUpdate || installedExtension.isObsolete || installedExtension.isUnofficial) {
|
||||
if (hasUpdate || installedExtension.isObsolete) {
|
||||
val extensionInfo =
|
||||
"Extension Name: ${installedExtension.name}\n" +
|
||||
"Installed Version: ${installedExtension.versionName}\n" +
|
||||
"Available Version: ${availableExtension?.versionName ?: "N/A"}\n" +
|
||||
"Obsolete: ${installedExtension.isObsolete}\n" +
|
||||
"Unofficial: ${installedExtension.isUnofficial}\n"
|
||||
"Obsolete: ${installedExtension.isObsolete}\n"
|
||||
extensionInfoList.add(extensionInfo)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -847,7 +847,12 @@ fun Controller.withFadeInTransaction(): RouterTransaction {
|
|||
.popChangeHandler(OneWayFadeChangeHandler())
|
||||
}
|
||||
|
||||
fun Controller.openInBrowser(url: String) {
|
||||
fun Controller.openInBrowser(url: String?) {
|
||||
if (url == null) {
|
||||
activity?.toast(R.string.open_in_browser_fail)
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
val intent = Intent(Intent.ACTION_VIEW, url.toUri())
|
||||
startActivity(intent)
|
||||
|
|
|
@ -2,15 +2,9 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_history"
|
||||
android:icon="@drawable/ic_history_24dp"
|
||||
android:title="@string/whats_new"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_readme"
|
||||
android:icon="@drawable/ic_help_outline_24dp"
|
||||
android:title="@string/faq_and_guides"
|
||||
android:id="@+id/action_open_repo"
|
||||
android:icon="@drawable/ic_open_in_webview_24dp"
|
||||
android:title="@string/action_open_repo"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
|
@ -19,4 +13,4 @@
|
|||
android:title="@string/clear_cookies"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
||||
</menu>
|
|
@ -918,6 +918,8 @@
|
|||
<string name="helpful_translation_links">Helpful translation links</string>
|
||||
<string name="website">Website</string>
|
||||
<string name="open_source_licenses">Open source licenses</string>
|
||||
<string name="action_open_repo">Open source repo</string>
|
||||
<string name="open_in_browser_fail">Unable to open url</string>
|
||||
|
||||
<!-- Login/Logout dialog -->
|
||||
<string name="log_in_to_">Log in to %1$s</string>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue