diff --git a/app/src/main/java/org/wikipedia/csrf/CsrfTokenClient.kt b/app/src/main/java/org/wikipedia/csrf/CsrfTokenClient.kt index c054e2fd54a..43b8f8bfc56 100644 --- a/app/src/main/java/org/wikipedia/csrf/CsrfTokenClient.kt +++ b/app/src/main/java/org/wikipedia/csrf/CsrfTokenClient.kt @@ -3,6 +3,7 @@ package org.wikipedia.csrf import io.reactivex.rxjava3.core.Completable import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.schedulers.Schedulers +import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext @@ -36,6 +37,8 @@ object CsrfTokenClient { // Log in explicitly try { LoginClient().loginBlocking(site, AccountUtil.userName, AccountUtil.password!!, "") + } catch (e: CancellationException) { + throw e } catch (e: Exception) { L.e(e) lastError = e @@ -51,6 +54,8 @@ object CsrfTokenClient { if (AccountUtil.isLoggedIn && token == ANON_TOKEN) { throw RuntimeException("App believes we're logged in, but got anonymous token.") } + } catch (e: CancellationException) { + throw e } catch (e: Exception) { L.e(e) lastError = e diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditViewModel.kt b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditViewModel.kt index 07a615af813..1aa5d3bd73c 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditViewModel.kt +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditViewModel.kt @@ -124,7 +124,7 @@ class DescriptionEditViewModel(bundle: Bundle) : ViewModel() { if (shouldWriteToLocalWiki()) pageTitle.wikiSite else Constants.wikidataWikiSite } - val csrfToken = withContext(Dispatchers.IO) { CsrfTokenClient.getToken(csrfSite).blockingSingle() } + val csrfToken = CsrfTokenClient.getTokenBlocking(csrfSite) val response = if (shouldWriteToLocalWiki()) { // If the description is being applied to an article on English Wikipedia, it