|
|
|
@ -12,7 +12,12 @@ import androidx.core.net.toUri
|
|
|
|
import androidx.core.view.isInvisible
|
|
|
|
import androidx.core.view.isInvisible
|
|
|
|
import androidx.core.view.isVisible
|
|
|
|
import androidx.core.view.isVisible
|
|
|
|
import androidx.core.view.updatePadding
|
|
|
|
import androidx.core.view.updatePadding
|
|
|
|
|
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
|
|
|
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
|
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
|
|
|
|
import kotlinx.coroutines.runInterruptible
|
|
|
|
|
|
|
|
import kotlinx.coroutines.yield
|
|
|
|
import okhttp3.Headers
|
|
|
|
import okhttp3.Headers
|
|
|
|
import okhttp3.HttpUrl
|
|
|
|
import okhttp3.HttpUrl
|
|
|
|
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
|
|
|
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
|
|
|
@ -118,11 +123,14 @@ class CloudFlareActivity : BaseActivity<ActivityBrowserBinding>(), CloudFlareCal
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
R.id.action_retry -> {
|
|
|
|
R.id.action_retry -> {
|
|
|
|
viewBinding.webView.stopLoading()
|
|
|
|
lifecycleScope.launch {
|
|
|
|
val targetUrl = intent?.dataString?.toHttpUrlOrNull()
|
|
|
|
viewBinding.webView.stopLoading()
|
|
|
|
if (targetUrl != null) {
|
|
|
|
yield()
|
|
|
|
clearCfCookies(targetUrl)
|
|
|
|
val targetUrl = intent?.dataString?.toHttpUrlOrNull()
|
|
|
|
viewBinding.webView.loadUrl(targetUrl.toString())
|
|
|
|
if (targetUrl != null) {
|
|
|
|
|
|
|
|
clearCfCookies(targetUrl)
|
|
|
|
|
|
|
|
viewBinding.webView.loadUrl(targetUrl.toString())
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
true
|
|
|
|
true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -168,7 +176,7 @@ class CloudFlareActivity : BaseActivity<ActivityBrowserBinding>(), CloudFlareCal
|
|
|
|
subtitle?.toString()?.toHttpUrlOrNull()?.topPrivateDomain() ?: subtitle
|
|
|
|
subtitle?.toString()?.toHttpUrlOrNull()?.topPrivateDomain() ?: subtitle
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun clearCfCookies(url: HttpUrl) {
|
|
|
|
private suspend fun clearCfCookies(url: HttpUrl) = runInterruptible(Dispatchers.Default) {
|
|
|
|
cookieJar.removeCookies(url) { cookie ->
|
|
|
|
cookieJar.removeCookies(url) { cookie ->
|
|
|
|
val name = cookie.name
|
|
|
|
val name = cookie.name
|
|
|
|
name.startsWith("cf_") || name.startsWith("_cf") || name.startsWith("__cf")
|
|
|
|
name.startsWith("cf_") || name.startsWith("_cf") || name.startsWith("__cf")
|
|
|
|
|