diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
index ce85e00955..b7a4fa67c9 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
@@ -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)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt
index aaf67e02d9..59ae42b4f4 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt
@@ -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(
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 88d9ca381d..0bbf1c305b 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
@@ -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 -> ""
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/details/ExtensionDetailsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/details/ExtensionDetailsController.kt
index 7e68109c25..27dd50f13f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/details/ExtensionDetailsController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/details/ExtensionDetailsController.kt
@@ -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"
}
}
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 569fc1dceb..387680b8b8 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
@@ -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)
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutLinksPreference.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutLinksPreference.kt
index 664ca096ef..cfe13e7035 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutLinksPreference.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutLinksPreference.kt
@@ -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) :
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
index cecfd371b4..af4ddae567 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
@@ -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)
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt
index 0d63ae638d..7ec41b1c31 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt
@@ -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)
diff --git a/app/src/main/res/menu/extension_details.xml b/app/src/main/res/menu/extension_details.xml
index c41bcadccf..ffbc344196 100644
--- a/app/src/main/res/menu/extension_details.xml
+++ b/app/src/main/res/menu/extension_details.xml
@@ -2,15 +2,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
-
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 96b882a43e..b43a64fa61 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -918,6 +918,8 @@
Helpful translation links
Website
Open source licenses
+ Open source repo
+ Unable to open url
Log in to %1$s