Skip to content

Commit 8176188

Browse files
Rawaalbin-mullvad
authored andcommitted
Use dropUnlessResumed to prevent duplicate navigation
1 parent 71e0d10 commit 8176188

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+203
-192
lines changed

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/ContentBlockersInfoDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package net.mullvad.mullvadvpn.compose.dialog
22

33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.res.stringResource
5+
import androidx.lifecycle.compose.dropUnlessResumed
56
import com.ramcosta.composedestinations.annotation.Destination
67
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
78
import com.ramcosta.composedestinations.spec.DestinationStyle
@@ -24,6 +25,6 @@ fun ContentBlockersInfoDialog(navigator: DestinationsNavigator) {
2425
stringResource(id = R.string.settings_changes_effect_warning_content_blocker)
2526
)
2627
},
27-
onDismiss = navigator::navigateUp
28+
onDismiss = dropUnlessResumed { navigator.navigateUp() }
2829
)
2930
}

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CreateCustomListDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import androidx.compose.ui.platform.testTag
1414
import androidx.compose.ui.res.stringResource
1515
import androidx.compose.ui.tooling.preview.Preview
1616
import androidx.lifecycle.compose.collectAsStateWithLifecycle
17+
import androidx.lifecycle.compose.dropUnlessResumed
1718
import com.ramcosta.composedestinations.annotation.Destination
1819
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
1920
import com.ramcosta.composedestinations.result.ResultBackNavigator
@@ -86,7 +87,7 @@ fun CreateCustomList(
8687
state = state,
8788
createCustomList = vm::createCustomList,
8889
onInputChanged = vm::clearError,
89-
onDismiss = backNavigator::navigateBack
90+
onDismiss = dropUnlessResumed { backNavigator.navigateBack() }
9091
)
9192
}
9293

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/CustomDnsInfoDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.compose.dialog
33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.res.stringResource
55
import androidx.compose.ui.tooling.preview.Preview
6+
import androidx.lifecycle.compose.dropUnlessResumed
67
import com.ramcosta.composedestinations.annotation.Destination
78
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
89
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
@@ -20,6 +21,6 @@ private fun PreviewCustomDnsInfoDialog() {
2021
fun CustomDnsInfoDialog(navigator: DestinationsNavigator) {
2122
InfoDialog(
2223
message = stringResource(id = R.string.settings_changes_effect_warning_content_blocker),
23-
onDismiss = navigator::navigateUp
24+
onDismiss = dropUnlessResumed { navigator.navigateUp() }
2425
)
2526
}

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DeleteCustomListConfirmationDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable
44
import androidx.compose.ui.res.stringResource
55
import androidx.compose.ui.tooling.preview.Preview
66
import androidx.lifecycle.compose.collectAsStateWithLifecycle
7+
import androidx.lifecycle.compose.dropUnlessResumed
78
import com.ramcosta.composedestinations.annotation.Destination
89
import com.ramcosta.composedestinations.result.ResultBackNavigator
910
import com.ramcosta.composedestinations.spec.DestinationStyle
@@ -52,7 +53,7 @@ fun DeleteCustomList(
5253
state = state.value,
5354
name = name,
5455
onDelete = viewModel::deleteCustomList,
55-
onBack = navigator::navigateBack
56+
onBack = dropUnlessResumed { navigator.navigateBack() }
5657
)
5758
}
5859

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DeviceNameInfoDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package net.mullvad.mullvadvpn.compose.dialog
22

33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.res.stringResource
5+
import androidx.lifecycle.compose.dropUnlessResumed
56
import com.ramcosta.composedestinations.annotation.Destination
67
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
78
import com.ramcosta.composedestinations.spec.DestinationStyle
@@ -19,6 +20,6 @@ fun DeviceNameInfoDialog(navigator: DestinationsNavigator) {
1920
appendLine()
2021
append(stringResource(id = R.string.device_name_info_third_paragraph))
2122
},
22-
onDismiss = navigator::navigateUp
23+
onDismiss = dropUnlessResumed { navigator.navigateUp() }
2324
)
2425
}

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DiscardChangesDialog.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.compose.ui.Modifier
88
import androidx.compose.ui.focus.FocusRequester
99
import androidx.compose.ui.focus.focusRequester
1010
import androidx.compose.ui.res.stringResource
11+
import androidx.lifecycle.compose.dropUnlessResumed
1112
import com.ramcosta.composedestinations.annotation.Destination
1213
import com.ramcosta.composedestinations.result.ResultBackNavigator
1314
import com.ramcosta.composedestinations.spec.DestinationStyle
@@ -18,18 +19,18 @@ import net.mullvad.mullvadvpn.compose.button.PrimaryButton
1819
@Composable
1920
fun DiscardChangesDialog(resultBackNavigator: ResultBackNavigator<Boolean>) {
2021
AlertDialog(
21-
onDismissRequest = resultBackNavigator::navigateBack,
22+
onDismissRequest = dropUnlessResumed { resultBackNavigator.navigateBack() },
2223
title = { Text(text = stringResource(id = R.string.discard_changes)) },
2324
dismissButton = {
2425
PrimaryButton(
2526
modifier = Modifier.focusRequester(FocusRequester()),
26-
onClick = resultBackNavigator::navigateBack,
27+
onClick = dropUnlessResumed { resultBackNavigator.navigateBack() },
2728
text = stringResource(id = R.string.cancel)
2829
)
2930
},
3031
confirmButton = {
3132
PrimaryButton(
32-
onClick = { resultBackNavigator.navigateBack(result = true) },
33+
onClick = dropUnlessResumed { resultBackNavigator.navigateBack(result = true) },
3334
text = stringResource(id = R.string.discard)
3435
)
3536
},

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DnsDialog.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import androidx.compose.ui.graphics.Color
1414
import androidx.compose.ui.res.stringResource
1515
import androidx.compose.ui.tooling.preview.Preview
1616
import androidx.lifecycle.compose.collectAsStateWithLifecycle
17+
import androidx.lifecycle.compose.dropUnlessResumed
1718
import com.ramcosta.composedestinations.annotation.Destination
1819
import com.ramcosta.composedestinations.result.ResultBackNavigator
1920
import com.ramcosta.composedestinations.spec.DestinationStyle
@@ -75,7 +76,8 @@ fun DnsDialog(
7576
viewModel::onDnsInputChange,
7677
onSaveDnsClick = viewModel::onSaveDnsClick,
7778
onRemoveDnsClick = viewModel::onRemoveDnsClick,
78-
onDismiss = { resultNavigator.navigateBack(result = DnsDialogResult.Cancel) }
79+
onDismiss =
80+
dropUnlessResumed { resultNavigator.navigateBack(result = DnsDialogResult.Cancel) }
7981
)
8082
}
8183

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/EditCustomListNameDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import androidx.compose.ui.platform.testTag
1313
import androidx.compose.ui.res.stringResource
1414
import androidx.compose.ui.tooling.preview.Preview
1515
import androidx.lifecycle.compose.collectAsStateWithLifecycle
16+
import androidx.lifecycle.compose.dropUnlessResumed
1617
import com.ramcosta.composedestinations.annotation.Destination
1718
import com.ramcosta.composedestinations.result.ResultBackNavigator
1819
import com.ramcosta.composedestinations.spec.DestinationStyle
@@ -63,7 +64,7 @@ fun EditCustomListName(
6364
state = state,
6465
updateName = vm::updateCustomListName,
6566
onInputChanged = vm::clearError,
66-
onDismiss = backNavigator::navigateBack
67+
onDismiss = dropUnlessResumed { backNavigator.navigateBack() }
6768
)
6869
}
6970

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/LocalNetworkSharingInfoDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.compose.dialog
33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.res.stringResource
55
import androidx.compose.ui.tooling.preview.Preview
6+
import androidx.lifecycle.compose.dropUnlessResumed
67
import com.ramcosta.composedestinations.annotation.Destination
78
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
89
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
@@ -26,6 +27,6 @@ fun LocalNetworkSharingInfoDialog(navigator: DestinationsNavigator) {
2627
appendLine(stringResource(id = R.string.local_network_sharing_additional_info))
2728
appendLine(textResource(id = R.string.local_network_sharing_ip_ranges))
2829
},
29-
onDismiss = navigator::navigateUp
30+
onDismiss = dropUnlessResumed { navigator.navigateUp() }
3031
)
3132
}

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/MalwareInfoDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.compose.dialog
33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.res.stringResource
55
import androidx.compose.ui.tooling.preview.Preview
6+
import androidx.lifecycle.compose.dropUnlessResumed
67
import com.ramcosta.composedestinations.annotation.Destination
78
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
89
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
@@ -20,6 +21,6 @@ private fun PreviewMalwareInfoDialog() {
2021
fun MalwareInfoDialog(navigator: DestinationsNavigator) {
2122
InfoDialog(
2223
message = stringResource(id = R.string.malware_info),
23-
onDismiss = navigator::navigateUp
24+
onDismiss = dropUnlessResumed { navigator.navigateUp() }
2425
)
2526
}

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/MtuDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import androidx.compose.ui.Modifier
1313
import androidx.compose.ui.res.stringResource
1414
import androidx.compose.ui.tooling.preview.Preview
1515
import androidx.lifecycle.compose.collectAsStateWithLifecycle
16+
import androidx.lifecycle.compose.dropUnlessResumed
1617
import com.ramcosta.composedestinations.annotation.Destination
1718
import com.ramcosta.composedestinations.result.EmptyResultBackNavigator
1819
import com.ramcosta.composedestinations.result.ResultBackNavigator
@@ -57,7 +58,7 @@ fun MtuDialog(mtuInitial: Mtu?, navigator: ResultBackNavigator<Boolean>) {
5758
onInputChanged = viewModel::onInputChanged,
5859
onSaveMtu = viewModel::onSaveClick,
5960
onResetMtu = viewModel::onRestoreClick,
60-
onDismiss = { navigator.navigateBack(true) }
61+
onDismiss = dropUnlessResumed { navigator.navigateBack() }
6162
)
6263
}
6364

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/ObfuscationInfoDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.compose.dialog
33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.res.stringResource
55
import androidx.compose.ui.tooling.preview.Preview
6+
import androidx.lifecycle.compose.dropUnlessResumed
67
import com.ramcosta.composedestinations.annotation.Destination
78
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
89
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
@@ -20,6 +21,6 @@ private fun PreviewObfuscationInfoDialog() {
2021
fun ObfuscationInfoDialog(navigator: DestinationsNavigator) {
2122
InfoDialog(
2223
message = stringResource(id = R.string.obfuscation_info),
23-
onDismiss = navigator::navigateUp
24+
onDismiss = dropUnlessResumed { navigator.navigateUp() }
2425
)
2526
}

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/QuantumResistanceInfoDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.compose.dialog
33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.res.stringResource
55
import androidx.compose.ui.tooling.preview.Preview
6+
import androidx.lifecycle.compose.dropUnlessResumed
67
import com.ramcosta.composedestinations.annotation.Destination
78
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
89
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
@@ -21,6 +22,6 @@ fun QuantumResistanceInfoDialog(navigator: DestinationsNavigator) {
2122
InfoDialog(
2223
message = stringResource(id = R.string.quantum_resistant_info_first_paragaph),
2324
additionalInfo = stringResource(id = R.string.quantum_resistant_info_second_paragaph),
24-
onDismiss = navigator::navigateUp
25+
onDismiss = dropUnlessResumed { navigator.navigateUp() }
2526
)
2627
}

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/RemoveDeviceConfirmationDialog.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import androidx.compose.ui.res.stringResource
1515
import androidx.compose.ui.tooling.preview.Preview
1616
import androidx.compose.ui.tooling.preview.PreviewParameter
1717
import androidx.compose.ui.unit.sp
18+
import androidx.lifecycle.compose.dropUnlessResumed
1819
import com.ramcosta.composedestinations.annotation.Destination
1920
import com.ramcosta.composedestinations.result.EmptyResultBackNavigator
2021
import com.ramcosta.composedestinations.result.ResultBackNavigator
@@ -42,7 +43,7 @@ private fun PreviewRemoveDeviceConfirmationDialog(
4243
@Composable
4344
fun RemoveDeviceConfirmationDialog(navigator: ResultBackNavigator<DeviceId>, device: Device) {
4445
AlertDialog(
45-
onDismissRequest = navigator::navigateBack,
46+
onDismissRequest = dropUnlessResumed { navigator.navigateBack() },
4647
icon = {
4748
Icon(
4849
modifier = Modifier.fillMaxWidth().height(Dimens.dialogIconHeight),
@@ -62,14 +63,14 @@ fun RemoveDeviceConfirmationDialog(navigator: ResultBackNavigator<DeviceId>, dev
6263
},
6364
dismissButton = {
6465
NegativeButton(
65-
onClick = { navigator.navigateBack(result = device.id) },
66+
onClick = dropUnlessResumed { navigator.navigateBack(result = device.id) },
6667
text = stringResource(id = R.string.confirm_removal)
6768
)
6869
},
6970
confirmButton = {
7071
PrimaryButton(
7172
modifier = Modifier.focusRequester(FocusRequester()),
72-
onClick = { navigator.navigateBack() },
73+
onClick = dropUnlessResumed { navigator.navigateBack() },
7374
text = stringResource(id = R.string.back)
7475
)
7576
},

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/ReportProblemNoEmailDialog.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import androidx.compose.ui.graphics.Color
1212
import androidx.compose.ui.res.painterResource
1313
import androidx.compose.ui.res.stringResource
1414
import androidx.compose.ui.tooling.preview.Preview
15+
import androidx.lifecycle.compose.dropUnlessResumed
1516
import com.ramcosta.composedestinations.annotation.Destination
1617
import com.ramcosta.composedestinations.result.EmptyResultBackNavigator
1718
import com.ramcosta.composedestinations.result.ResultBackNavigator
@@ -32,7 +33,7 @@ private fun PreviewReportProblemNoEmailDialog() {
3233
@Composable
3334
fun ReportProblemNoEmailDialog(resultBackNavigator: ResultBackNavigator<Boolean>) {
3435
AlertDialog(
35-
onDismissRequest = resultBackNavigator::navigateBack,
36+
onDismissRequest = dropUnlessResumed { resultBackNavigator.navigateBack() },
3637
icon = {
3738
Icon(
3839
painter = painterResource(id = R.drawable.icon_alert),
@@ -52,14 +53,14 @@ fun ReportProblemNoEmailDialog(resultBackNavigator: ResultBackNavigator<Boolean>
5253
dismissButton = {
5354
NegativeButton(
5455
modifier = Modifier.fillMaxWidth(),
55-
onClick = { resultBackNavigator.navigateBack(result = true) },
56+
onClick = dropUnlessResumed { resultBackNavigator.navigateBack(result = true) },
5657
text = stringResource(id = R.string.send_anyway)
5758
)
5859
},
5960
confirmButton = {
6061
PrimaryButton(
6162
modifier = Modifier.fillMaxWidth(),
62-
onClick = resultBackNavigator::navigateBack,
63+
onClick = dropUnlessResumed { resultBackNavigator.navigateBack() },
6364
text = stringResource(id = R.string.back)
6465
)
6566
},

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/ResetServerIpOverridesConfirmationDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.compose.ui.Modifier
99
import androidx.compose.ui.platform.testTag
1010
import androidx.compose.ui.res.stringResource
1111
import androidx.compose.ui.tooling.preview.Preview
12+
import androidx.lifecycle.compose.dropUnlessResumed
1213
import com.ramcosta.composedestinations.annotation.Destination
1314
import com.ramcosta.composedestinations.result.ResultBackNavigator
1415
import com.ramcosta.composedestinations.spec.DestinationStyle
@@ -43,7 +44,7 @@ fun ResetServerIpOverridesConfirmation(resultBackNavigator: ResultBackNavigator<
4344
}
4445
ResetServerIpOverridesConfirmationDialog(
4546
onClearAllOverrides = vm::clearAllOverrides,
46-
resultBackNavigator::navigateBack
47+
dropUnlessResumed { resultBackNavigator.navigateBack() }
4748
)
4849
}
4950

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/ServerIpOverridesInfoDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.compose.dialog
33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.res.stringResource
55
import androidx.compose.ui.tooling.preview.Preview
6+
import androidx.lifecycle.compose.dropUnlessResumed
67
import com.ramcosta.composedestinations.annotation.Destination
78
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
89
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
@@ -27,6 +28,6 @@ fun ServerIpOverridesInfoDialog(navigator: DestinationsNavigator) {
2728
appendLine()
2829
append(stringResource(id = R.string.server_ip_overrides_info_third_paragraph))
2930
},
30-
onDismiss = navigator::navigateUp
31+
onDismiss = dropUnlessResumed { navigator.navigateUp() }
3132
)
3233
}

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/UdpOverTcpPortInfoDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.compose.dialog
33
import androidx.compose.runtime.Composable
44
import androidx.compose.ui.res.stringResource
55
import androidx.compose.ui.tooling.preview.Preview
6+
import androidx.lifecycle.compose.dropUnlessResumed
67
import com.ramcosta.composedestinations.annotation.Destination
78
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
89
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
@@ -21,6 +22,6 @@ private fun PreviewUdpOverTcpPortInfoDialog() {
2122
fun UdpOverTcpPortInfoDialog(navigator: DestinationsNavigator) {
2223
InfoDialog(
2324
message = stringResource(id = R.string.udp_over_tcp_port_info),
24-
onDismiss = navigator::navigateUp
25+
onDismiss = dropUnlessResumed { navigator.navigateUp() }
2526
)
2627
}

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/WireguardPortInfoDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.os.Parcelable
44
import androidx.compose.runtime.Composable
55
import androidx.compose.ui.res.stringResource
66
import androidx.compose.ui.tooling.preview.Preview
7+
import androidx.lifecycle.compose.dropUnlessResumed
78
import com.ramcosta.composedestinations.annotation.Destination
89
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
910
import com.ramcosta.composedestinations.navigation.EmptyDestinationsNavigator
@@ -40,6 +41,6 @@ fun WireguardPortInfoDialog(
4041
id = R.string.wireguard_port_info_port_range,
4142
argument.portRanges.asString()
4243
),
43-
onDismiss = navigator::navigateUp
44+
onDismiss = dropUnlessResumed { navigator.navigateUp() }
4445
)
4546
}

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/payment/VerificationPendingDialog.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import androidx.compose.runtime.Composable
77
import androidx.compose.ui.graphics.compositeOver
88
import androidx.compose.ui.res.stringResource
99
import androidx.compose.ui.tooling.preview.Preview
10+
import androidx.lifecycle.compose.dropUnlessResumed
1011
import com.ramcosta.composedestinations.annotation.Destination
1112
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
1213
import com.ramcosta.composedestinations.spec.DestinationStyle
@@ -24,7 +25,7 @@ private fun PreviewVerificationPendingDialog() {
2425
@Destination(style = DestinationStyle.Dialog::class)
2526
@Composable
2627
fun VerificationPendingDialog(navigator: DestinationsNavigator) {
27-
VerificationPendingDialog(onClose = navigator::navigateUp)
28+
VerificationPendingDialog(onClose = dropUnlessResumed { navigator.navigateUp() })
2829
}
2930

3031
@Composable

0 commit comments

Comments
 (0)