Likely fix background crashes

This commit is contained in:
Jobobby04 2021-05-10 22:00:56 -04:00
parent be6637c7fd
commit 2ec5581e8c
3 changed files with 25 additions and 17 deletions

View File

@ -272,7 +272,7 @@ class MigrationListController(bundle: Bundle? = null) :
override fun updateCount() {
launchUI {
if (router.backstack.last().controller() == this@MigrationListController) {
if (router.backstack.lastOrNull()?.controller() == this@MigrationListController) {
setTitle()
}
}

View File

@ -60,31 +60,34 @@ class MangaDexLoginHelper(val client: OkHttpClient, val preferences: Preferences
val jsonString = MdUtil.jsonParser.encodeToString(loginRequest)
val postResult = client.newCall(
POST(
MdUtil.loginUrl,
Headers.Builder().build(),
jsonString.toRequestBody("application/json".toMediaType())
)
).await()
val postResult = runCatching {
client.newCall(
POST(
MdUtil.loginUrl,
Headers.Builder().build(),
jsonString.toRequestBody("application/json".toMediaType())
)
).await()
}
val response = postResult.getOrNull() ?: return@withIOContext LoginResult.Failure(postResult.exceptionOrNull())
// if it fails to parse then login failed
val loginResponse = try {
postResult.parseAs<LoginResponse>(MdUtil.jsonParser)
response.parseAs<LoginResponse>(MdUtil.jsonParser)
} catch (e: SerializationException) {
null
}
if (postResult.code == 200 && loginResponse != null) {
if (response.code == 200 && loginResponse != null) {
LoginResult.Success(loginResponse.token)
} else {
LoginResult.Failure
LoginResult.Failure()
}
}
}
sealed class LoginResult {
object Failure : LoginResult()
data class Failure(val e: Throwable? = null) : LoginResult()
data class Success(val token: LoginBodyToken) : LoginResult()
}
@ -93,7 +96,7 @@ class MangaDexLoginHelper(val client: OkHttpClient, val preferences: Preferences
val password = preferences.trackPassword(mdList)
if (username.isNullOrBlank() || password.isNullOrBlank()) {
xLogI("No username or password stored, can't login")
return LoginResult.Failure
return LoginResult.Failure()
}
return login(username, password)
}

View File

@ -18,7 +18,6 @@ class TokenAuthenticator(private val loginHelper: MangaDexLoginHelper) : Authent
return if (token != null) {
response.request.newBuilder().header("Authorization", token).build()
} else {
// throw Exception("Unable to authenticate request, please re login")
null
}
}
@ -28,7 +27,7 @@ class TokenAuthenticator(private val loginHelper: MangaDexLoginHelper) : Authent
var validated = false
runBlocking {
val checkToken = try {
val checkTokenResult = runCatching {
loginHelper.isAuthenticated(
MdUtil.getAuthHeaders(
Headers.Builder().build(),
@ -36,8 +35,14 @@ class TokenAuthenticator(private val loginHelper: MangaDexLoginHelper) : Authent
loginHelper.mdList
)
)
} catch (e: NoSessionException) {
this@TokenAuthenticator.xLogD("Session token does not exist")
}
val checkToken = if (checkTokenResult.isSuccess) {
checkTokenResult.getOrNull() ?: false
} else {
val e = checkTokenResult.exceptionOrNull()
if (e is NoSessionException) {
this@TokenAuthenticator.xLogD("Session token does not exist")
}
false
}