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() {
|
override fun updateCount() {
|
||||||
launchUI {
|
launchUI {
|
||||||
if (router.backstack.last().controller() == this@MigrationListController) {
|
if (router.backstack.lastOrNull()?.controller() == this@MigrationListController) {
|
||||||
setTitle()
|
setTitle()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,31 +60,34 @@ class MangaDexLoginHelper(val client: OkHttpClient, val preferences: Preferences
|
|||||||
|
|
||||||
val jsonString = MdUtil.jsonParser.encodeToString(loginRequest)
|
val jsonString = MdUtil.jsonParser.encodeToString(loginRequest)
|
||||||
|
|
||||||
val postResult = client.newCall(
|
val postResult = runCatching {
|
||||||
POST(
|
client.newCall(
|
||||||
MdUtil.loginUrl,
|
POST(
|
||||||
Headers.Builder().build(),
|
MdUtil.loginUrl,
|
||||||
jsonString.toRequestBody("application/json".toMediaType())
|
Headers.Builder().build(),
|
||||||
)
|
jsonString.toRequestBody("application/json".toMediaType())
|
||||||
).await()
|
)
|
||||||
|
).await()
|
||||||
|
}
|
||||||
|
|
||||||
|
val response = postResult.getOrNull() ?: return@withIOContext LoginResult.Failure(postResult.exceptionOrNull())
|
||||||
// if it fails to parse then login failed
|
// if it fails to parse then login failed
|
||||||
val loginResponse = try {
|
val loginResponse = try {
|
||||||
postResult.parseAs<LoginResponse>(MdUtil.jsonParser)
|
response.parseAs<LoginResponse>(MdUtil.jsonParser)
|
||||||
} catch (e: SerializationException) {
|
} catch (e: SerializationException) {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
if (postResult.code == 200 && loginResponse != null) {
|
if (response.code == 200 && loginResponse != null) {
|
||||||
LoginResult.Success(loginResponse.token)
|
LoginResult.Success(loginResponse.token)
|
||||||
} else {
|
} else {
|
||||||
LoginResult.Failure
|
LoginResult.Failure()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class LoginResult {
|
sealed class LoginResult {
|
||||||
object Failure : LoginResult()
|
data class Failure(val e: Throwable? = null) : LoginResult()
|
||||||
data class Success(val token: LoginBodyToken) : 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)
|
val password = preferences.trackPassword(mdList)
|
||||||
if (username.isNullOrBlank() || password.isNullOrBlank()) {
|
if (username.isNullOrBlank() || password.isNullOrBlank()) {
|
||||||
xLogI("No username or password stored, can't login")
|
xLogI("No username or password stored, can't login")
|
||||||
return LoginResult.Failure
|
return LoginResult.Failure()
|
||||||
}
|
}
|
||||||
return login(username, password)
|
return login(username, password)
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@ class TokenAuthenticator(private val loginHelper: MangaDexLoginHelper) : Authent
|
|||||||
return if (token != null) {
|
return if (token != null) {
|
||||||
response.request.newBuilder().header("Authorization", token).build()
|
response.request.newBuilder().header("Authorization", token).build()
|
||||||
} else {
|
} else {
|
||||||
// throw Exception("Unable to authenticate request, please re login")
|
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -28,7 +27,7 @@ class TokenAuthenticator(private val loginHelper: MangaDexLoginHelper) : Authent
|
|||||||
var validated = false
|
var validated = false
|
||||||
|
|
||||||
runBlocking {
|
runBlocking {
|
||||||
val checkToken = try {
|
val checkTokenResult = runCatching {
|
||||||
loginHelper.isAuthenticated(
|
loginHelper.isAuthenticated(
|
||||||
MdUtil.getAuthHeaders(
|
MdUtil.getAuthHeaders(
|
||||||
Headers.Builder().build(),
|
Headers.Builder().build(),
|
||||||
@ -36,8 +35,14 @@ class TokenAuthenticator(private val loginHelper: MangaDexLoginHelper) : Authent
|
|||||||
loginHelper.mdList
|
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
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user