Skip to content

Commit 97e320e

Browse files
authored
Merge pull request #54 from Nexters/fix/navigate-back
웹뷰에서 뒤로가기 브릿지 호출 시 페이지 내에서 뒤로 갈 수 있으면 뒤로 가도록 처리합니다.
2 parents 8af88fd + 8f9bb45 commit 97e320e

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

feature/proposal-detail/src/main/java/com/plottwist/feature/proposal_detail/ProposalDetailScreen.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.compose.runtime.Composable
88
import androidx.compose.runtime.getValue
99
import androidx.compose.runtime.mutableStateOf
1010
import androidx.compose.runtime.remember
11+
import androidx.compose.runtime.rememberCoroutineScope
1112
import androidx.compose.runtime.setValue
1213
import androidx.compose.ui.Modifier
1314
import androidx.compose.ui.tooling.preview.Preview
@@ -17,6 +18,7 @@ import com.plottwist.core.ui.component.TopAppBarCloseButton
1718
import com.plottwist.core.ui.web.component.BRIDGE_NAME
1819
import com.plottwist.core.ui.web.component.DefaultBridge
1920
import com.plottwist.core.ui.web.component.TukWebView
21+
import kotlinx.coroutines.launch
2022
import org.orbitmvi.orbit.compose.collectAsState
2123
import org.orbitmvi.orbit.compose.collectSideEffect
2224

@@ -28,6 +30,7 @@ fun ProposalDetailScreen(
2830
) {
2931
val state by viewModel.collectAsState()
3032
var webView by remember { mutableStateOf<WebView?>(null) }
33+
val coroutineScope = rememberCoroutineScope()
3134

3235
viewModel.collectSideEffect {
3336
when (it) {
@@ -43,7 +46,15 @@ fun ProposalDetailScreen(
4346
ProposalDetailScreen(
4447
modifier = modifier,
4548
proposalId = state.proposalId,
46-
onBackClick = { viewModel.handleAction(ProposalDetailAction.ClickBack) },
49+
onBackClick = {
50+
coroutineScope.launch {
51+
if (webView?.canGoBack() == true) {
52+
webView?.goBack()
53+
} else {
54+
viewModel.handleAction(ProposalDetailAction.ClickBack)
55+
}
56+
}
57+
},
4758
onPageFinished = {
4859

4960
},

feature/webview/src/main/java/com/plottwist/feature/webview/WebViewScreen.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.compose.runtime.Composable
88
import androidx.compose.runtime.getValue
99
import androidx.compose.runtime.mutableStateOf
1010
import androidx.compose.runtime.remember
11+
import androidx.compose.runtime.rememberCoroutineScope
1112
import androidx.compose.runtime.setValue
1213
import androidx.compose.ui.Modifier
1314
import androidx.compose.ui.tooling.preview.Preview
@@ -17,6 +18,7 @@ import com.plottwist.core.designsystem.component.TukTopAppBarType
1718
import com.plottwist.core.ui.web.component.BRIDGE_NAME
1819
import com.plottwist.core.ui.web.component.DefaultBridge
1920
import com.plottwist.core.ui.web.component.TukWebView
21+
import kotlinx.coroutines.launch
2022
import org.orbitmvi.orbit.compose.collectAsState
2123
import org.orbitmvi.orbit.compose.collectSideEffect
2224

@@ -28,6 +30,7 @@ fun WebViewScreen(
2830
) {
2931
val state by viewModel.collectAsState()
3032
var webView : WebView? by remember { mutableStateOf(null) }
33+
val coroutineScope = rememberCoroutineScope()
3134

3235
viewModel.collectSideEffect { sideEffect ->
3336
when (sideEffect) {
@@ -57,7 +60,15 @@ fun WebViewScreen(
5760

5861
WebViewScreen(
5962
modifier = modifier,
60-
onBackClick = { viewModel.handleAction(WebViewAction.ClickBack) },
63+
onBackClick = {
64+
coroutineScope.launch {
65+
if (webView?.canGoBack() == true) {
66+
webView?.goBack()
67+
} else {
68+
viewModel.handleAction(WebViewAction.ClickBack)
69+
}
70+
}
71+
},
6172
onWebViewCreated = {
6273
webView = it
6374
},

0 commit comments

Comments
 (0)