Revert "Use jsDelivr as fallback when GitHub can't be reached for extensions list (closes #5517)"
This reverts commit 7891b4de31a75413563ca7565dfda529e928a7a6.
This commit is contained in:
parent
c030a68d12
commit
ed19ad8819
@ -23,34 +23,22 @@ internal class ExtensionGithubApi {
|
|||||||
private val networkService: NetworkHelper by injectLazy()
|
private val networkService: NetworkHelper by injectLazy()
|
||||||
private val preferences: PreferencesHelper by injectLazy()
|
private val preferences: PreferencesHelper by injectLazy()
|
||||||
|
|
||||||
private var requiresFallbackSource = false
|
|
||||||
|
|
||||||
suspend fun findExtensions(): List<Extension.Available> {
|
suspend fun findExtensions(): List<Extension.Available> {
|
||||||
return withIOContext {
|
return withIOContext {
|
||||||
val response = try {
|
networkService.client
|
||||||
networkService.client
|
.newCall(GET("${REPO_URL_PREFIX}index.min.json"))
|
||||||
.newCall(GET("${REPO_URL_PREFIX}index.min.json"))
|
.await()
|
||||||
.await()
|
.parseAs<JsonArray>()
|
||||||
} catch (e: Throwable) {
|
.let { parseResponse(it) }
|
||||||
requiresFallbackSource = true
|
} /* SY --> */ + preferences.extensionRepos().get().flatMap { repoPath ->
|
||||||
|
val url = "$BASE_URL$repoPath/repo/"
|
||||||
networkService.client
|
networkService.client
|
||||||
.newCall(GET("${FALLBACK_REPO_URL_PREFIX}index.min.json"))
|
.newCall(GET("${url}index.min.json"))
|
||||||
.await()
|
.await()
|
||||||
}
|
.parseAs<JsonArray>()
|
||||||
|
.let {
|
||||||
parseResponse(response.parseAs()) + preferences.extensionRepos().get().flatMap { repoPath ->
|
parseResponse(it, url)
|
||||||
try {
|
}
|
||||||
networkService.client
|
|
||||||
.newCall(GET("$BASE_URL$repoPath/repo/index.min.json"))
|
|
||||||
.await()
|
|
||||||
} catch (e: Exception) {
|
|
||||||
networkService.client
|
|
||||||
.newCall(GET("$FALLBACK_BASE_URL$repoPath@repo/index.min.json"))
|
|
||||||
.await()
|
|
||||||
}.parseAs<JsonArray>()
|
|
||||||
.let { parseResponse(it, getUrlPrefix(repoPath)) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// SY <--
|
// SY <--
|
||||||
}
|
}
|
||||||
@ -85,7 +73,7 @@ internal class ExtensionGithubApi {
|
|||||||
return extensionsWithUpdate
|
return extensionsWithUpdate
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun parseResponse(json: JsonArray /* SY --> */, repoUrl: String = getUrlPrefix() /* SY <-- */): List<Extension.Available> {
|
private fun parseResponse(json: JsonArray /* SY --> */, repoUrl: String = REPO_URL_PREFIX /* SY <-- */): List<Extension.Available> {
|
||||||
return json
|
return json
|
||||||
.filter { element ->
|
.filter { element ->
|
||||||
val versionName = element.jsonObject["version"]!!.jsonPrimitive.content
|
val versionName = element.jsonObject["version"]!!.jsonPrimitive.content
|
||||||
@ -109,32 +97,19 @@ internal class ExtensionGithubApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getApkUrl(extension: Extension.Available): String {
|
fun getApkUrl(extension: Extension.Available): String {
|
||||||
return /* SY --> */ "${extension.repoUrl}apk/${extension.apkName}" /* SY <-- */
|
return /* SY --> */ "${extension.repoUrl}/apk/${extension.apkName}" /* SY <-- */
|
||||||
}
|
|
||||||
|
|
||||||
private fun getUrlPrefix(): String {
|
|
||||||
return when (requiresFallbackSource) {
|
|
||||||
true -> FALLBACK_REPO_URL_PREFIX
|
|
||||||
false -> REPO_URL_PREFIX
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
private fun getUrlPrefix(repoUrl: String): String {
|
|
||||||
return when (requiresFallbackSource) {
|
|
||||||
true -> "${FALLBACK_BASE_URL}$repoUrl@repo/"
|
|
||||||
false -> "${BASE_URL}$repoUrl/repo/"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun Extension.isBlacklisted(
|
private fun Extension.isBlacklisted(
|
||||||
blacklistEnabled: Boolean = preferences.enableSourceBlacklist().get()
|
blacklistEnabled: Boolean = preferences.enableSourceBlacklist().get()
|
||||||
): Boolean {
|
): Boolean {
|
||||||
return pkgName in BlacklistedSources.BLACKLISTED_EXTENSIONS && blacklistEnabled
|
return pkgName in BlacklistedSources.BLACKLISTED_EXTENSIONS && blacklistEnabled
|
||||||
}
|
}
|
||||||
// SY <--
|
// SY <--
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val BASE_URL = "https://raw.githubusercontent.com/"
|
||||||
|
const val REPO_URL_PREFIX = "${BASE_URL}tachiyomiorg/tachiyomi-extensions/repo/"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const val BASE_URL = "https://raw.githubusercontent.com/"
|
|
||||||
const val FALLBACK_BASE_URL = "https://cdn.jsdelivr.net/gh/"
|
|
||||||
private const val REPO_URL_PREFIX = "${BASE_URL}tachiyomiorg/tachiyomi-extensions/repo/"
|
|
||||||
private const val FALLBACK_REPO_URL_PREFIX = "${FALLBACK_BASE_URL}tachiyomiorg/tachiyomi-extensions@repo/"
|
|
||||||
|
@ -8,6 +8,7 @@ import eu.davidea.viewholders.FlexibleViewHolder
|
|||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.databinding.ExtensionCardItemBinding
|
import eu.kanade.tachiyomi.databinding.ExtensionCardItemBinding
|
||||||
|
import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi
|
||||||
import eu.kanade.tachiyomi.extension.model.Extension
|
import eu.kanade.tachiyomi.extension.model.Extension
|
||||||
import eu.kanade.tachiyomi.extension.model.InstallStep
|
import eu.kanade.tachiyomi.extension.model.InstallStep
|
||||||
import eu.kanade.tachiyomi.source.ConfigurableSource
|
import eu.kanade.tachiyomi.source.ConfigurableSource
|
||||||
@ -59,8 +60,8 @@ class ExtensionHolder(view: View, val adapter: ExtensionAdapter) :
|
|||||||
// SY -->
|
// SY -->
|
||||||
private fun String.plusRepo(extension: Extension): String {
|
private fun String.plusRepo(extension: Extension): String {
|
||||||
return if (extension is Extension.Available) {
|
return if (extension is Extension.Available) {
|
||||||
when {
|
when (extension.repoUrl) {
|
||||||
extension.repoUrl.contains("tachiyomiorg/tachiyomi-extensions") -> this
|
ExtensionGithubApi.REPO_URL_PREFIX -> this
|
||||||
else -> {
|
else -> {
|
||||||
this + if (this.isEmpty()) {
|
this + if (this.isEmpty()) {
|
||||||
""
|
""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user