diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdateChecker.kt deleted file mode 100644 index ea912e861..000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdateChecker.kt +++ /dev/null @@ -1,19 +0,0 @@ -package eu.kanade.tachiyomi.data.updater - -import eu.kanade.tachiyomi.data.updater.github.GithubUpdateChecker - -abstract class UpdateChecker { - - companion object { - fun getUpdateChecker(): UpdateChecker { - // SY --> - return GithubUpdateChecker() - // SY <-- - } - } - - /** - * Returns observable containing release information - */ - abstract suspend fun checkForUpdate(): UpdateResult -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterJob.kt index f786afc10..524060c32 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterJob.kt @@ -13,6 +13,7 @@ import androidx.work.Worker import androidx.work.WorkerParameters import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.notification.Notifications +import eu.kanade.tachiyomi.data.updater.github.GithubUpdateChecker import eu.kanade.tachiyomi.util.system.notificationManager import java.util.concurrent.TimeUnit import kotlinx.coroutines.runBlocking @@ -23,7 +24,7 @@ class UpdaterJob(private val context: Context, workerParams: WorkerParameters) : override fun doWork(): Result { return runBlocking { try { - val result = UpdateChecker.getUpdateChecker().checkForUpdate() + val result = GithubUpdateChecker().checkForUpdate() if (result is UpdateResult.NewUpdate<*>) { val url = result.release.downloadLink diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/devrepo/DevRepoRelease.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/devrepo/DevRepoRelease.kt deleted file mode 100644 index 0f2b1ac75..000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/devrepo/DevRepoRelease.kt +++ /dev/null @@ -1,13 +0,0 @@ -package eu.kanade.tachiyomi.data.updater.devrepo - -import eu.kanade.tachiyomi.data.updater.Release - -class DevRepoRelease(override val info: String) : Release { - - override val downloadLink: String - get() = LATEST_URL - - companion object { - const val LATEST_URL = "https://tachiyomi.kanade.eu/latest" - } -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/devrepo/DevRepoUpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/devrepo/DevRepoUpdateChecker.kt deleted file mode 100644 index c224ba457..000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/devrepo/DevRepoUpdateChecker.kt +++ /dev/null @@ -1,41 +0,0 @@ -package eu.kanade.tachiyomi.data.updater.devrepo - -import eu.kanade.tachiyomi.BuildConfig -import eu.kanade.tachiyomi.data.updater.UpdateChecker -import eu.kanade.tachiyomi.data.updater.UpdateResult -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.NetworkHelper -import eu.kanade.tachiyomi.network.await -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import okhttp3.OkHttpClient -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get - -class DevRepoUpdateChecker : UpdateChecker() { - - private val client: OkHttpClient by lazy { - Injekt.get().client.newBuilder() - .followRedirects(false) - .build() - } - - private val versionRegex: Regex by lazy { - Regex("tachiyomi-r(\\d+).apk") - } - - override suspend fun checkForUpdate(): UpdateResult { - val response = withContext(Dispatchers.IO) { - client.newCall(GET(DevRepoRelease.LATEST_URL)).await() - } - - // Get latest repo version number from header in format "Location: tachiyomi-r1512.apk" - val latestVersionNumber: String = versionRegex.find(response.header("Location")!!)!!.groupValues[1] - - return if (latestVersionNumber.toInt() > BuildConfig.COMMIT_COUNT.toInt()) { - DevRepoUpdateResult.NewUpdate(DevRepoRelease("v$latestVersionNumber")) - } else { - DevRepoUpdateResult.NoNewUpdate() - } - } -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/devrepo/DevRepoUpdateResult.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/devrepo/DevRepoUpdateResult.kt deleted file mode 100644 index 1b62201a8..000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/devrepo/DevRepoUpdateResult.kt +++ /dev/null @@ -1,9 +0,0 @@ -package eu.kanade.tachiyomi.data.updater.devrepo - -import eu.kanade.tachiyomi.data.updater.UpdateResult - -sealed class DevRepoUpdateResult : UpdateResult() { - - class NewUpdate(release: DevRepoRelease) : UpdateResult.NewUpdate(release) - class NoNewUpdate : UpdateResult.NoNewUpdate() -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubRelease.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubRelease.kt index 09f1b37d0..ec20699af 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubRelease.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubRelease.kt @@ -28,5 +28,5 @@ class GithubRelease( * Assets class containing download url. * @param downloadLink download url. */ - inner class Assets(@SerializedName("browser_download_url") val downloadLink: String) + class Assets(@SerializedName("browser_download_url") val downloadLink: String) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubService.kt index ec2669a8d..e64a19d5e 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubService.kt @@ -4,11 +4,12 @@ import eu.kanade.tachiyomi.network.NetworkHelper import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import retrofit2.http.GET +import retrofit2.http.Path import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get /** - * Used to connect with the GitHub API. + * Used to connect with the GitHub API to get the latest release version from a repo. */ interface GithubService { @@ -24,11 +25,6 @@ interface GithubService { } } - // SY --> - @GET("/repos/jobobby04/tachiyomiSY/releases/latest") - suspend fun getLatestVersion(): GithubRelease - - @GET("/repos/jobobby04/TachiyomiSYPreview/releases/latest") - suspend fun getLatestDebugVersion(): GithubRelease - // SY <-- + @GET("/repos/{repo}/releases/latest") + suspend fun getLatestVersion(@Path("repo", encoded = true) repo: String): GithubRelease } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubUpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubUpdateChecker.kt index 75516e440..f82ca7ad5 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubUpdateChecker.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubUpdateChecker.kt @@ -1,29 +1,49 @@ package eu.kanade.tachiyomi.data.updater.github import eu.kanade.tachiyomi.BuildConfig -import eu.kanade.tachiyomi.data.updater.UpdateChecker import eu.kanade.tachiyomi.data.updater.UpdateResult import exh.syDebugVersion -// SY --> -class GithubUpdateChecker(val debug: Boolean = false) : UpdateChecker() { +class GithubUpdateChecker { private val service: GithubService = GithubService.create() - override suspend fun checkForUpdate(): UpdateResult { - val release = if (syDebugVersion != "0") { - service.getLatestDebugVersion() + private val repo: String by lazy { + // Sy --> + if (syDebugVersion != "0") { + "jobobby04/TachiyomiSYPreview" } else { - service.getLatestVersion() + "jobobby04/tachiyomiSY" } + // SY <-- + } + + suspend fun checkForUpdate(): UpdateResult { + val release = service.getLatestVersion(repo) - val newVersion = release.version // Check if latest version is different from current version + // SY --> + val newVersion = release.version return if ((newVersion != BuildConfig.VERSION_NAME && (syDebugVersion == "0")) || ((syDebugVersion != "0") && newVersion != syDebugVersion)) { + // SY <-- GithubUpdateResult.NewUpdate(release) } else { GithubUpdateResult.NoNewUpdate() } } + + private fun isNewVersion(versionTag: String): Boolean { + // Removes prefixes like "r" or "v" + val newVersion = versionTag.replace("[^\\d.]".toRegex(), "") + + return if (BuildConfig.DEBUG) { + // Preview builds: based on releases in "tachiyomiorg/android-app-preview" repo + // tagged as something like "r1234" + newVersion.toInt() > BuildConfig.COMMIT_COUNT.toInt() + } else { + // Release builds: based on releases in "inorichi/tachiyomi" repo + // tagged as something like "v0.1.2" + newVersion != BuildConfig.VERSION_NAME + } + } } -// SY <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt index e93ff8398..bba0b1159 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt @@ -10,9 +10,9 @@ import com.afollestad.materialdialogs.MaterialDialog import com.mikepenz.aboutlibraries.LibsBuilder import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.updater.UpdateChecker import eu.kanade.tachiyomi.data.updater.UpdateResult import eu.kanade.tachiyomi.data.updater.UpdaterService +import eu.kanade.tachiyomi.data.updater.github.GithubUpdateChecker import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.main.WhatsNewDialogController import eu.kanade.tachiyomi.ui.setting.SettingsController @@ -37,7 +37,7 @@ class AboutController : SettingsController() { /** * Checks for new releases */ - private val updateChecker by lazy { UpdateChecker.getUpdateChecker() } + private val updateChecker by lazy { GithubUpdateChecker() } private val dateFormat: DateFormat = preferences.dateFormat()