fix login on Android API level <24 (#2432)
This commit is contained in:
parent
ad077cf092
commit
7aa328b3dc
1 changed files with 15 additions and 3 deletions
|
@ -16,6 +16,7 @@ import android.webkit.WebStorage
|
||||||
import android.webkit.WebView
|
import android.webkit.WebView
|
||||||
import android.webkit.WebViewClient
|
import android.webkit.WebViewClient
|
||||||
import androidx.activity.result.contract.ActivityResultContract
|
import androidx.activity.result.contract.ActivityResultContract
|
||||||
|
import androidx.core.net.toUri
|
||||||
import com.keylesspalace.tusky.BaseActivity
|
import com.keylesspalace.tusky.BaseActivity
|
||||||
import com.keylesspalace.tusky.BuildConfig
|
import com.keylesspalace.tusky.BuildConfig
|
||||||
import com.keylesspalace.tusky.databinding.LoginWebviewBinding
|
import com.keylesspalace.tusky.databinding.LoginWebviewBinding
|
||||||
|
@ -103,8 +104,8 @@ class LoginWebViewActivity : BaseActivity(), Injectable {
|
||||||
|
|
||||||
webView.webViewClient = object : WebViewClient() {
|
webView.webViewClient = object : WebViewClient() {
|
||||||
override fun onReceivedError(
|
override fun onReceivedError(
|
||||||
view: WebView?,
|
view: WebView,
|
||||||
request: WebResourceRequest?,
|
request: WebResourceRequest,
|
||||||
error: WebResourceError
|
error: WebResourceError
|
||||||
) {
|
) {
|
||||||
Log.d("LoginWeb", "Failed to load ${data.url}: $error")
|
Log.d("LoginWeb", "Failed to load ${data.url}: $error")
|
||||||
|
@ -115,7 +116,17 @@ class LoginWebViewActivity : BaseActivity(), Injectable {
|
||||||
view: WebView,
|
view: WebView,
|
||||||
request: WebResourceRequest
|
request: WebResourceRequest
|
||||||
): Boolean {
|
): Boolean {
|
||||||
val url = request.url
|
return shouldOverrideUrlLoading(request.url)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* overriding this deprecated method is necessary for it to work on api levels < 24 */
|
||||||
|
@Suppress("OVERRIDE_DEPRECATION")
|
||||||
|
override fun shouldOverrideUrlLoading(view: WebView?, urlString: String?): Boolean {
|
||||||
|
val url = urlString?.toUri() ?: return false
|
||||||
|
return shouldOverrideUrlLoading(url)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun shouldOverrideUrlLoading(url: Uri): Boolean {
|
||||||
return if (url.scheme == oauthUrl.scheme && url.host == oauthUrl.host) {
|
return if (url.scheme == oauthUrl.scheme && url.host == oauthUrl.host) {
|
||||||
val error = url.getQueryParameter("error")
|
val error = url.getQueryParameter("error")
|
||||||
if (error != null) {
|
if (error != null) {
|
||||||
|
@ -130,6 +141,7 @@ class LoginWebViewActivity : BaseActivity(), Injectable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
webView.setBackgroundColor(Color.TRANSPARENT)
|
webView.setBackgroundColor(Color.TRANSPARENT)
|
||||||
|
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
|
|
Loading…
Reference in a new issue