diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt index 721733400..392d4fd2d 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt @@ -11,26 +11,22 @@ import eu.kanade.tachiyomi.util.lang.withIOContext import exh.syDebugVersion import uy.kohesive.injekt.injectLazy import java.util.Date +import java.util.concurrent.TimeUnit class AppUpdateChecker { private val networkService: NetworkHelper by injectLazy() private val preferences: PreferencesHelper by injectLazy() - private val repo: String by lazy { - // Sy --> - if (syDebugVersion != "0") { - "jobobby04/TachiyomiSYPreview" - } else { - "jobobby04/tachiyomiSY" - } - // SY <-- - } - suspend fun checkForUpdate(context: Context): AppUpdateResult { + // Limit checks to once a day at most + if (Date().time < preferences.lastAppCheck().get() + TimeUnit.DAYS.toMillis(1)) { + return AppUpdateResult.NoNewUpdate + } + return withIOContext { val result = networkService.client - .newCall(GET("https://api.github.com/repos/$repo/releases/latest")) + .newCall(GET("https://api.github.com/repos/$GITHUB_REPO/releases/latest")) .await() .parseAs() .let { @@ -71,3 +67,13 @@ class AppUpdateChecker { } } } + +val GITHUB_REPO: String by lazy { + // Sy --> + if (syDebugVersion != "0") { + "jobobby04/TachiyomiSYPreview" + } else { + "jobobby04/tachiyomiSY" + } + // SY <-- +} 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 dc2d54c52..fa31b615f 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 @@ -14,6 +14,7 @@ import exh.source.BlacklistedSources import kotlinx.serialization.Serializable import uy.kohesive.injekt.injectLazy import java.util.Date +import java.util.concurrent.TimeUnit internal class ExtensionGithubApi { @@ -39,6 +40,11 @@ internal class ExtensionGithubApi { } suspend fun checkForUpdates(context: Context): List { + // Limit checks to once a day at most + if (Date().time < preferences.lastExtCheck().get() + TimeUnit.DAYS.toMillis(1)) { + return emptyList() + } + val extensions = findExtensions() preferences.lastExtCheck().set(Date().time) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ConductorExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ConductorExtensions.kt index 33ac644f4..414ab8a85 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ConductorExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/ConductorExtensions.kt @@ -10,6 +10,10 @@ import eu.kanade.tachiyomi.ui.base.changehandler.OneWayFadeChangeHandler import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.util.system.openInBrowser +fun Router.setRoot(controller: Controller, id: Int) { + setRoot(controller.withFadeTransaction().tag(id.toString())) +} + fun Router.popControllerWithTag(tag: String): Boolean { val controller = getControllerWithTag(tag) if (controller != null) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index 9d69aa9fa..a16ba0085 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -46,6 +46,7 @@ import eu.kanade.tachiyomi.ui.base.controller.FabController import eu.kanade.tachiyomi.ui.base.controller.NoAppBarElevationController import eu.kanade.tachiyomi.ui.base.controller.RootController import eu.kanade.tachiyomi.ui.base.controller.TabbedController +import eu.kanade.tachiyomi.ui.base.controller.setRoot import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.browse.BrowseController import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController @@ -180,11 +181,11 @@ class MainActivity : BaseViewBindingActivity() { val currentRoot = router.backstack.firstOrNull() if (currentRoot?.tag()?.toIntOrNull() != id) { when (id) { - R.id.nav_library -> setRoot(LibraryController(), id) - R.id.nav_updates -> setRoot(UpdatesController(), id) - R.id.nav_history -> setRoot(HistoryController(), id) - R.id.nav_browse -> setRoot(BrowseController(), id) - R.id.nav_more -> setRoot(MoreController(), id) + R.id.nav_library -> router.setRoot(LibraryController(), id) + R.id.nav_updates -> router.setRoot(UpdatesController(), id) + R.id.nav_history -> router.setRoot(HistoryController(), id) + R.id.nav_browse -> router.setRoot(BrowseController(), id) + R.id.nav_more -> router.setRoot(MoreController(), id) } } else if (!isHandlingShortcut) { when (id) { @@ -376,37 +377,24 @@ class MainActivity : BaseViewBindingActivity() { override fun onResume() { super.onResume() - checkForExtensionUpdates() - if (BuildConfig.INCLUDE_UPDATER) { - checkForAppUpdates() - } + checkForUpdates() } - private fun checkForAppUpdates() { - // Limit checks to once a day at most - if (Date().time < preferences.lastAppCheck().get() + TimeUnit.DAYS.toMillis(1)) { - return - } - + private fun checkForUpdates() { lifecycleScope.launchIO { - try { - val result = AppUpdateChecker().checkForUpdate(this@MainActivity) - if (result is AppUpdateResult.NewUpdate) { - NewUpdateDialogController(result).showDialog(router) + // App updates + if (BuildConfig.INCLUDE_UPDATER) { + try { + val result = AppUpdateChecker().checkForUpdate(this@MainActivity) + if (result is AppUpdateResult.NewUpdate) { + NewUpdateDialogController(result).showDialog(router) + } + } catch (e: Exception) { + logcat(LogPriority.ERROR, e) } - } catch (e: Exception) { - logcat(LogPriority.ERROR, e) } - } - } - private fun checkForExtensionUpdates() { - // Limit checks to once a day at most - if (Date().time < preferences.lastExtCheck().get() + TimeUnit.DAYS.toMillis(1)) { - return - } - - lifecycleScope.launchIO { + // Extension updates try { val pendingUpdates = ExtensionGithubApi().checkForUpdates(this@MainActivity) preferences.extensionUpdatesCount().set(pendingUpdates.size) @@ -556,10 +544,6 @@ class MainActivity : BaseViewBindingActivity() { } } - private fun setRoot(controller: Controller, id: Int) { - router.setRoot(controller.withFadeTransaction().tag(id.toString())) - } - private fun syncActivityViewWithController(to: Controller?, from: Controller? = null, isPush: Boolean = true) { if (from is DialogController || to is DialogController) { return