From c2f7e2e0c611e79b62ca43c7d8712b367796f5b5 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sun, 24 Jan 2021 17:19:08 -0800 Subject: Require main thread for cookiemanager calls --- .../kotlin/com/pitchedapps/frost/facebook/FbCookie.kt | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbCookie.kt b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbCookie.kt index db40495b..65955bdc 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbCookie.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbCookie.kt @@ -29,14 +29,14 @@ import com.pitchedapps.frost.prefs.Prefs import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.cookies import com.pitchedapps.frost.utils.launchLogin -import kotlin.coroutines.resume -import kotlin.coroutines.suspendCoroutine import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.withContext import org.koin.dsl.module +import kotlin.coroutines.resume +import kotlin.coroutines.suspendCoroutine /** * Created by Allan Wang on 2017-05-30. @@ -64,7 +64,10 @@ class FbCookie(private val prefs: Prefs, private val cookieDao: CookieDao) { val messengerCookie: String? get() = CookieManager.getInstance().getCookie(HTTPS_MESSENGER_COM) - private suspend fun CookieManager.suspendSetWebCookie(domain: String, cookie: String?): Boolean { + private suspend fun CookieManager.suspendSetWebCookie( + domain: String, + cookie: String? + ): Boolean { cookie ?: return true return withContext(NonCancellable) { // Save all cookies regardless of result, then check if all succeeded @@ -100,9 +103,11 @@ class FbCookie(private val prefs: Prefs, private val cookieDao: CookieDao) { suspend fun reset() { prefs.userId = -1L - with(CookieManager.getInstance()) { - removeAllCookies() - flush() + withContext(Dispatchers.Main + NonCancellable) { + with(CookieManager.getInstance()) { + removeAllCookies() + flush() + } } } @@ -117,7 +122,7 @@ class FbCookie(private val prefs: Prefs, private val cookieDao: CookieDao) { return } val currentId = prefs.userId - withContext(Dispatchers.IO + NonCancellable) { + withContext(Dispatchers.Main + NonCancellable) { L.d { "Switching User" } // Save current messenger cookie state. cookieDao.updateMessengerCookie(currentId, messengerCookie) -- cgit v1.2.3