From 3e7768146d82e56238334906d631d56c6506a72c Mon Sep 17 00:00:00 2001 From: Infi Date: Wed, 17 Jan 2024 17:59:15 +0100 Subject: [PATCH] feat: remove webchallenge Signed-off-by: Infi --- app/src/main/AndroidManifest.xml | 4 -- .../revolt/activities/WebChallengeActivity.kt | 52 ------------------- .../chat/revolt/api/internals/WebChallenge.kt | 17 ------ .../java/chat/revolt/screens/SplashScreen.kt | 28 ---------- .../main/res/layout/activity_webchallenge.xml | 10 ---- 5 files changed, 111 deletions(-) delete mode 100644 app/src/main/java/chat/revolt/activities/WebChallengeActivity.kt delete mode 100644 app/src/main/java/chat/revolt/api/internals/WebChallenge.kt delete mode 100644 app/src/main/res/layout/activity_webchallenge.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7ba7aadf..3117e179 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -51,10 +51,6 @@ - - Unit) : WebViewClient() { - @Override - override fun onPageFinished(view: WebView, url: String) { - super.onPageFinished(view, url) - pageLoaded() - } -} - -class WebChallengeActivity : AppCompatActivity() { - private lateinit var binding: ActivityWebchallengeBinding - - @SuppressLint("SetJavaScriptEnabled") - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = ActivityWebchallengeBinding.inflate(layoutInflater) - setContentView(binding.root) - - binding.webView.settings.apply { - javaScriptEnabled = true - domStorageEnabled = true - userAgentString = buildUserAgent("WebChallenge") - } - - binding.webView.webViewClient = WebChallengeClient { - binding.webView.evaluateJavascript( - "(function() { return document.getElementById('cf-wrapper') === null; })();" - ) { result -> - if (result == "false") { - Log.d( - "WebChallenge", - "Challenge has been solved or we have been considered human." - ) - finish() - } - } - } - - binding.webView.loadUrl(REVOLT_BASE) - } -} diff --git a/app/src/main/java/chat/revolt/api/internals/WebChallenge.kt b/app/src/main/java/chat/revolt/api/internals/WebChallenge.kt deleted file mode 100644 index 7aba31a1..00000000 --- a/app/src/main/java/chat/revolt/api/internals/WebChallenge.kt +++ /dev/null @@ -1,17 +0,0 @@ -package chat.revolt.api.internals - -import chat.revolt.api.REVOLT_BASE -import chat.revolt.api.RevoltHttp -import io.ktor.client.request.get -import io.ktor.client.statement.bodyAsText - -object WebChallenge { - suspend fun needsCloudflare(): Boolean { - RevoltHttp.get(REVOLT_BASE).let { - val text = it.bodyAsText() - return text.contains( - "window._cf_chl_opt" - ) // FIXME Naive, prone to captcha page changing - } - } -} diff --git a/app/src/main/java/chat/revolt/screens/SplashScreen.kt b/app/src/main/java/chat/revolt/screens/SplashScreen.kt index 2461bdf5..878bf3b0 100644 --- a/app/src/main/java/chat/revolt/screens/SplashScreen.kt +++ b/app/src/main/java/chat/revolt/screens/SplashScreen.kt @@ -2,13 +2,10 @@ package chat.revolt.screens import android.annotation.SuppressLint import android.content.Context -import android.content.Intent import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.util.Log import android.widget.Toast -import androidx.activity.compose.rememberLauncherForActivityResult -import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -27,7 +24,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel @@ -35,10 +31,8 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.navigation.NavController import chat.revolt.R -import chat.revolt.activities.WebChallengeActivity import chat.revolt.api.RevoltAPI import chat.revolt.api.RevoltHttp -import chat.revolt.api.internals.WebChallenge import chat.revolt.api.routes.onboard.needsOnboarding import chat.revolt.components.screens.splash.DisconnectedScreen import chat.revolt.persistence.KVStorage @@ -99,13 +93,6 @@ class SplashScreenViewModel @Inject constructor( if (!isConnected) return@launch - val needsCloudflare = WebChallenge.needsCloudflare() - - if (needsCloudflare) { - setNavigateTo("webchallenge") - return@launch - } - val token = kvStorage.get("sessionToken") ?: return@launch setNavigateTo("login") val id = kvStorage.get("sessionId") ?: "" @@ -142,16 +129,6 @@ class SplashScreenViewModel @Inject constructor( @Composable fun SplashScreen(navController: NavController, viewModel: SplashScreenViewModel = hiltViewModel()) { - val context = LocalContext.current - - val webChallengeActivityResult = rememberLauncherForActivityResult( - ActivityResultContracts.StartActivityForResult() - ) { result -> - if (result.resultCode == 0) { - viewModel.checkLoggedInState() - } - } - if (!viewModel.isConnected) { DisconnectedScreen( onRetry = { @@ -197,11 +174,6 @@ fun SplashScreen(navController: NavController, viewModel: SplashScreenViewModel } } - "webchallenge" -> { - val intent = Intent(context, WebChallengeActivity::class.java) - webChallengeActivityResult.launch(intent) - } - "home" -> { navController.navigate("chat") { popUpTo("splash") { diff --git a/app/src/main/res/layout/activity_webchallenge.xml b/app/src/main/res/layout/activity_webchallenge.xml deleted file mode 100644 index 7636ffbd..00000000 --- a/app/src/main/res/layout/activity_webchallenge.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - \ No newline at end of file