Selaa lähdekoodia

More coroutine network call fixes

arkon 5 vuotta sitten
vanhempi
commit
34bf9b729e

+ 5 - 1
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]

+ 2 - 6
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<Extension.Available> = try {
                 api.findExtensions()
             } catch (e: Exception) {
                 emptyList()
             }
 
-            launchUI {
-                availableExtensions = extensions
-            }
+            availableExtensions = extensions
         }
     }
 

+ 14 - 20
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
-
-                            // Create confirmation window
-                            NewUpdateDialogController(body, url).showDialog(router)
-                        }
-                        is UpdateResult.NoNewUpdate -> {
-                            activity?.toast(R.string.update_check_no_new_updates)
-                        }
+                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)
                     }
                 }
             } catch (error: Exception) {
-                launchUI {
-                    activity?.toast(error.message)
-                    Timber.e(error)
-                }
+                activity?.toast(error.message)
+                Timber.e(error)
             }
         }
     }