Likely fix background crashes
This commit is contained in:
parent
be6637c7fd
commit
2ec5581e8c
@ -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()
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user