From 34bf9b729e25a1caa5dce5e7455344cfec06efae Mon Sep 17 00:00:00 2001 From: arkon Date: Fri, 14 Feb 2020 09:23:54 -0500 Subject: [PATCH] More coroutine network call fixes --- .../updater/devrepo/DevRepoUpdateChecker.kt | 6 +++- .../tachiyomi/extension/ExtensionManager.kt | 8 ++--- .../ui/setting/SettingsAboutController.kt | 32 ++++++++----------- 3 files changed, 20 insertions(+), 26 deletions(-) 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 index 094beaabc..d221a3b93 100644 --- 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 @@ -6,6 +6,8 @@ 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 @@ -23,7 +25,9 @@ class DevRepoUpdateChecker : UpdateChecker() { } override suspend fun checkForUpdate(): UpdateResult { - val response = client.newCall(GET(DevRepoRelease.LATEST_URL)).await(assertSuccess = false) + val response = withContext(Dispatchers.IO) { + client.newCall(GET(DevRepoRelease.LATEST_URL)).await(assertSuccess = false) + } // Get latest repo version number from header in format "Location: tachiyomi-r1512.apk" val latestVersionNumber: String = versionRegex.find(response.header("Location")!!)!!.groupValues[1] 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 12310e974..9a624e76a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -12,9 +12,7 @@ import eu.kanade.tachiyomi.extension.util.ExtensionInstallReceiver import eu.kanade.tachiyomi.extension.util.ExtensionInstaller import eu.kanade.tachiyomi.extension.util.ExtensionLoader import eu.kanade.tachiyomi.source.SourceManager -import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.launchNow -import eu.kanade.tachiyomi.util.lang.launchUI import kotlinx.coroutines.async import rx.Observable import uy.kohesive.injekt.Injekt @@ -146,16 +144,14 @@ class ExtensionManager( * Finds the available extensions in the [api] and updates [availableExtensions]. */ fun findAvailableExtensions() { - launchIO { + launchNow { val extensions: List = try { api.findExtensions() } catch (e: Exception) { emptyList() } - launchUI { - availableExtensions = extensions - } + availableExtensions = extensions } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAboutController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAboutController.kt index 738dbba1e..2e68109fe 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAboutController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAboutController.kt @@ -16,8 +16,7 @@ import eu.kanade.tachiyomi.data.updater.UpdaterJob import eu.kanade.tachiyomi.data.updater.UpdaterService import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.main.ChangelogDialogController -import eu.kanade.tachiyomi.util.lang.launchIO -import eu.kanade.tachiyomi.util.lang.launchUI +import eu.kanade.tachiyomi.util.lang.launchNow import eu.kanade.tachiyomi.util.lang.toTimestampString import eu.kanade.tachiyomi.util.preference.* import eu.kanade.tachiyomi.util.system.toast @@ -119,28 +118,23 @@ class SettingsAboutController : SettingsController() { activity?.toast(R.string.update_check_look_for_updates) - launchIO { + launchNow { try { - val result = updateChecker.checkForUpdate() - launchUI { - when (result) { - is UpdateResult.NewUpdate<*> -> { - val body = result.release.info - val url = result.release.downloadLink + when (val result = updateChecker.checkForUpdate()) { + is UpdateResult.NewUpdate<*> -> { + val body = result.release.info + val url = result.release.downloadLink - // Create confirmation window - NewUpdateDialogController(body, url).showDialog(router) - } - is UpdateResult.NoNewUpdate -> { - activity?.toast(R.string.update_check_no_new_updates) - } + // Create confirmation window + NewUpdateDialogController(body, url).showDialog(router) + } + is UpdateResult.NoNewUpdate -> { + activity?.toast(R.string.update_check_no_new_updates) } } } catch (error: Exception) { - launchUI { - activity?.toast(error.message) - Timber.e(error) - } + activity?.toast(error.message) + Timber.e(error) } } }