1
1
package net.mullvad.mullvadvpn.compose.screen
2
2
3
- import android.content.Context
4
3
import androidx.compose.foundation.layout.Column
5
4
import androidx.compose.foundation.layout.Spacer
6
5
import androidx.compose.foundation.layout.fillMaxWidth
@@ -13,16 +12,12 @@ import androidx.compose.foundation.lazy.rememberLazyListState
13
12
import androidx.compose.material3.ButtonDefaults
14
13
import androidx.compose.material3.HorizontalDivider
15
14
import androidx.compose.material3.MaterialTheme
16
- import androidx.compose.material3.SnackbarDuration
17
- import androidx.compose.material3.SnackbarHostState
18
15
import androidx.compose.material3.Text
19
16
import androidx.compose.material3.TextButton
20
17
import androidx.compose.runtime.Composable
21
18
import androidx.compose.runtime.getValue
22
- import androidx.compose.runtime.remember
23
19
import androidx.compose.ui.Alignment
24
20
import androidx.compose.ui.Modifier
25
- import androidx.compose.ui.platform.LocalContext
26
21
import androidx.compose.ui.platform.testTag
27
22
import androidx.compose.ui.res.stringResource
28
23
import androidx.compose.ui.tooling.preview.Preview
@@ -35,10 +30,9 @@ import com.ramcosta.composedestinations.navigation.DestinationsNavigator
35
30
import com.ramcosta.composedestinations.result.NavResult
36
31
import com.ramcosta.composedestinations.result.ResultBackNavigator
37
32
import com.ramcosta.composedestinations.result.ResultRecipient
38
- import kotlinx.coroutines.launch
39
33
import net.mullvad.mullvadvpn.R
40
34
import net.mullvad.mullvadvpn.compose.cell.CheckableRelayLocationCell
41
- import net.mullvad.mullvadvpn.compose.communication.LocationsChanged
35
+ import net.mullvad.mullvadvpn.compose.communication.CustomListActionResultData
42
36
import net.mullvad.mullvadvpn.compose.component.LocationsEmptyText
43
37
import net.mullvad.mullvadvpn.compose.component.MullvadCircularProgressIndicatorLarge
44
38
import net.mullvad.mullvadvpn.compose.component.NavigateBackIconButton
@@ -52,7 +46,6 @@ import net.mullvad.mullvadvpn.compose.test.SAVE_BUTTON_TEST_TAG
52
46
import net.mullvad.mullvadvpn.compose.textfield.SearchTextField
53
47
import net.mullvad.mullvadvpn.compose.transitions.SlideInFromRightTransition
54
48
import net.mullvad.mullvadvpn.compose.util.LaunchedEffectCollect
55
- import net.mullvad.mullvadvpn.compose.util.showSnackbarImmediately
56
49
import net.mullvad.mullvadvpn.lib.model.CustomListId
57
50
import net.mullvad.mullvadvpn.lib.model.RelayItem
58
51
import net.mullvad.mullvadvpn.lib.theme.Dimens
@@ -79,7 +72,7 @@ data class CustomListLocationsNavArgs(
79
72
)
80
73
fun CustomListLocations (
81
74
navigator : DestinationsNavigator ,
82
- backNavigator : ResultBackNavigator <LocationsChanged >,
75
+ backNavigator : ResultBackNavigator <CustomListActionResultData >,
83
76
discardChangesResultRecipient : ResultRecipient <DiscardChangesDestination , Boolean >,
84
77
) {
85
78
val customListsViewModel = koinViewModel<CustomListLocationsViewModel >()
@@ -95,27 +88,16 @@ fun CustomListLocations(
95
88
}
96
89
}
97
90
98
- val snackbarHostState = remember { SnackbarHostState () }
99
- val context: Context = LocalContext .current
100
91
LaunchedEffectCollect (customListsViewModel.uiSideEffect) { sideEffect ->
101
92
when (sideEffect) {
102
- is CustomListLocationsSideEffect .ReturnWithResult ->
93
+ is CustomListLocationsSideEffect .ReturnWithResultData ->
103
94
backNavigator.navigateBack(result = sideEffect.result)
104
- CustomListLocationsSideEffect .CloseScreen -> backNavigator.navigateBack()
105
- CustomListLocationsSideEffect .Error ->
106
- launch {
107
- snackbarHostState.showSnackbarImmediately(
108
- message = context.getString(R .string.error_occurred),
109
- duration = SnackbarDuration .Short
110
- )
111
- }
112
95
}
113
96
}
114
97
115
98
val state by customListsViewModel.uiState.collectAsStateWithLifecycle()
116
99
CustomListLocationsScreen (
117
100
state = state,
118
- snackbarHostState = snackbarHostState,
119
101
onSearchTermInput = customListsViewModel::onSearchTermInput,
120
102
onSaveClick = customListsViewModel::save,
121
103
onRelaySelectionClick = customListsViewModel::onRelaySelectionClick,
@@ -134,15 +116,13 @@ fun CustomListLocations(
134
116
@Composable
135
117
fun CustomListLocationsScreen (
136
118
state : CustomListLocationsUiState ,
137
- snackbarHostState : SnackbarHostState = SnackbarHostState (),
138
119
onSearchTermInput : (String ) -> Unit = {},
139
120
onSaveClick : () -> Unit = {},
140
121
onRelaySelectionClick : (RelayItem .Location , selected: Boolean ) -> Unit = { _, _ -> },
141
122
onExpand : (RelayItem .Location , selected: Boolean ) -> Unit = { _, _ -> },
142
123
onBackClick : () -> Unit = {}
143
124
) {
144
125
ScaffoldWithSmallTopBar (
145
- snackbarHostState = snackbarHostState,
146
126
appBarTitle =
147
127
stringResource(
148
128
if (state.newList) {
0 commit comments