Skip to content

Commit 8b3257e

Browse files
committed
fix: back handler
1 parent 07202c3 commit 8b3257e

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

app/src/main/java/com/mrepol742/webappp/WebViewScreen.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,21 @@ import android.annotation.SuppressLint
44
import android.app.Activity
55
import android.util.Log
66
import android.webkit.WebView
7+
import androidx.activity.compose.BackHandler
78
import androidx.compose.foundation.layout.fillMaxSize
89
import androidx.compose.runtime.Composable
10+
import androidx.compose.runtime.LaunchedEffect
911
import androidx.compose.runtime.MutableState
12+
import androidx.compose.runtime.getValue
13+
import androidx.compose.runtime.mutableStateOf
14+
import androidx.compose.runtime.remember
15+
import androidx.compose.runtime.setValue
1016
import androidx.compose.ui.Modifier
1117
import androidx.compose.ui.viewinterop.AndroidView
1218
import com.mrepol742.webappp.client.SecureChromeClient
1319
import com.mrepol742.webappp.client.SecureWebViewClient
1420
import com.mrepol742.webappp.utils.DownloadListener
21+
import kotlinx.coroutines.delay
1522

1623
@SuppressLint("SetJavaScriptEnabled")
1724
@Composable
@@ -58,4 +65,18 @@ fun WebViewScreen(allowedDomain: String, initialUrl: String, webViewState: Mutab
5865
}
5966
}
6067
)
68+
69+
var canGoBack by remember { mutableStateOf(false) }
70+
71+
LaunchedEffect(webViewState.value) {
72+
val webView = webViewState.value ?: return@LaunchedEffect
73+
while (true) {
74+
canGoBack = webView.canGoBack()
75+
delay(100) // Poll every 100ms
76+
}
77+
}
78+
79+
BackHandler(enabled = canGoBack) {
80+
webViewState.value?.goBack()
81+
}
6182
}

0 commit comments

Comments
 (0)