diff options
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt')
-rw-r--r-- | app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt index 2fe78f02..8132382a 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt @@ -28,6 +28,7 @@ import android.webkit.WebResourceRequest import android.webkit.WebView import ca.allanwang.kau.utils.fadeIn import ca.allanwang.kau.utils.isVisible +import ca.allanwang.kau.utils.withMainContext import com.pitchedapps.frost.dbflow.CookieModel import com.pitchedapps.frost.facebook.FB_LOGIN_URL import com.pitchedapps.frost.facebook.FB_USER_MATCHER @@ -39,6 +40,10 @@ import com.pitchedapps.frost.injectors.jsInject import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.Prefs import com.pitchedapps.frost.utils.isFacebookUrl +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.launch +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlin.coroutines.resume /** * Created by Allan Wang on 2017-05-29. @@ -60,13 +65,18 @@ class LoginWebView @JvmOverloads constructor( webChromeClient = LoginChromeClient() } - fun loadLogin(progressCallback: (Int) -> Unit, loginCallback: (CookieModel) -> Unit) { - this.progressCallback = progressCallback - this.loginCallback = loginCallback - L.d { "Begin loading login" } - FbCookie.reset { - setupWebview() - loadUrl(FB_LOGIN_URL) + suspend fun loadLogin(progressCallback: (Int) -> Unit): CookieModel = withMainContext { + coroutineScope { + suspendCancellableCoroutine<CookieModel> { cont -> + this@LoginWebView.progressCallback = progressCallback + this@LoginWebView.loginCallback = { cont.resume(it) } + L.d { "Begin loading login" } + launch { + FbCookie.reset() + setupWebview() + loadUrl(FB_LOGIN_URL) + } + } } } |