diff options
| author | Kalle Lindström <karl.lindstrom@mullvad.net> | 2024-09-06 09:06:18 +0200 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2024-09-06 16:16:27 +0200 |
| commit | 312618ae3e8a7beeb690c8d699cb0173aa1c0f5a (patch) | |
| tree | 29503df0841ec1faa13841a4474986d03381414d /android/app/src | |
| parent | ea7357d7055158e46ec6dfadbae9b0591720d339 (diff) | |
| download | mullvadvpn-312618ae3e8a7beeb690c8d699cb0173aa1c0f5a.tar.xz mullvadvpn-312618ae3e8a7beeb690c8d699cb0173aa1c0f5a.zip | |
Refactor to use preview parameter providers
Diffstat (limited to 'android/app/src')
11 files changed, 83 insertions, 115 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ApiAccessListUiStateParameterProvider.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ApiAccessListUiStatePreviewParameterProvider.kt index 8ad648284f..0553b02d55 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ApiAccessListUiStateParameterProvider.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ApiAccessListUiStatePreviewParameterProvider.kt @@ -3,7 +3,8 @@ package net.mullvad.mullvadvpn.compose.preview import androidx.compose.ui.tooling.preview.PreviewParameterProvider import net.mullvad.mullvadvpn.compose.state.ApiAccessListUiState -class ApiAccessListUiStateParameterProvider : PreviewParameterProvider<ApiAccessListUiState> { +class ApiAccessListUiStatePreviewParameterProvider : + PreviewParameterProvider<ApiAccessListUiState> { override val values: Sequence<ApiAccessListUiState> = sequenceOf( diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/DeviceListPreviewParameterProvider.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/DeviceListPreviewParameterProvider.kt deleted file mode 100644 index 7b9b491f68..0000000000 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/DeviceListPreviewParameterProvider.kt +++ /dev/null @@ -1,16 +0,0 @@ -package net.mullvad.mullvadvpn.compose.preview - -import androidx.compose.ui.tooling.preview.PreviewParameterProvider -import net.mullvad.mullvadvpn.compose.preview.DevicePreviewData.generateDevices -import net.mullvad.mullvadvpn.compose.state.DeviceItemUiState - -class DeviceListPreviewParameterProvider : PreviewParameterProvider<List<DeviceItemUiState>> { - override val values = - sequenceOf( - generateDevices(NUMBER_OF_DEVICES_NORMAL), - generateDevices(NUMBER_OF_DEVICES_TOO_MANY), - ) -} - -private const val NUMBER_OF_DEVICES_NORMAL = 4 -private const val NUMBER_OF_DEVICES_TOO_MANY = 5 diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/DeviceListUiStatePreviewParameterProvider.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/DeviceListUiStatePreviewParameterProvider.kt new file mode 100644 index 0000000000..53102efb21 --- /dev/null +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/DeviceListUiStatePreviewParameterProvider.kt @@ -0,0 +1,20 @@ +package net.mullvad.mullvadvpn.compose.preview + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import net.mullvad.mullvadvpn.compose.preview.DevicePreviewData.generateDevices +import net.mullvad.mullvadvpn.compose.state.DeviceListUiState +import net.mullvad.mullvadvpn.lib.model.GetDeviceListError + +class DeviceListUiStatePreviewParameterProvider : PreviewParameterProvider<DeviceListUiState> { + override val values = + sequenceOf( + DeviceListUiState.Content(devices = generateDevices(NUMBER_OF_DEVICES_NORMAL)), + DeviceListUiState.Content(devices = generateDevices(NUMBER_OF_DEVICES_TOO_MANY)), + DeviceListUiState.Content(devices = emptyList()), + DeviceListUiState.Loading, + DeviceListUiState.Error(GetDeviceListError.Unknown(IllegalStateException("Error"))), + ) +} + +private const val NUMBER_OF_DEVICES_NORMAL = 4 +private const val NUMBER_OF_DEVICES_TOO_MANY = 5 diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/EditApiAccessMethodUiStateParameterProvider.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/EditApiAccessMethodUiStatePreviewParameterProvider.kt index d521b78ff2..3aa0c888c1 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/EditApiAccessMethodUiStateParameterProvider.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/EditApiAccessMethodUiStatePreviewParameterProvider.kt @@ -7,7 +7,7 @@ import net.mullvad.mullvadvpn.compose.state.EditApiAccessMethodUiState import net.mullvad.mullvadvpn.lib.model.ApiAccessMethod import net.mullvad.mullvadvpn.lib.model.InvalidDataError -class EditApiAccessMethodUiStateParameterProvider : +class EditApiAccessMethodUiStatePreviewParameterProvider : PreviewParameterProvider<EditApiAccessMethodUiState> { override val values = sequenceOf( diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/LoginUiStatePreviewParameterProvider.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/LoginUiStatePreviewParameterProvider.kt new file mode 100644 index 0000000000..2e66238c82 --- /dev/null +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/LoginUiStatePreviewParameterProvider.kt @@ -0,0 +1,18 @@ +package net.mullvad.mullvadvpn.compose.preview + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import net.mullvad.mullvadvpn.compose.state.LoginError +import net.mullvad.mullvadvpn.compose.state.LoginState +import net.mullvad.mullvadvpn.compose.state.LoginUiState + +class LoginUiStatePreviewParameterProvider : PreviewParameterProvider<LoginUiState> { + override val values: Sequence<LoginUiState> + get() = + sequenceOf( + LoginUiState(), + LoginUiState(loginState = LoginState.Loading.LoggingIn), + LoginUiState(loginState = LoginState.Loading.CreatingAccount), + LoginUiState(loginState = LoginState.Idle(LoginError.InvalidCredentials)), + LoginUiState(loginState = LoginState.Success), + ) +} diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ReportProblemUiStatePreviewParameterProvider.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ReportProblemUiStatePreviewParameterProvider.kt new file mode 100644 index 0000000000..52822a316a --- /dev/null +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ReportProblemUiStatePreviewParameterProvider.kt @@ -0,0 +1,21 @@ +package net.mullvad.mullvadvpn.compose.preview + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import net.mullvad.mullvadvpn.dataproxy.SendProblemReportResult +import net.mullvad.mullvadvpn.viewmodel.ReportProblemUiState +import net.mullvad.mullvadvpn.viewmodel.SendingReportUiState + +class ReportProblemUiStatePreviewParameterProvider : + PreviewParameterProvider<ReportProblemUiState> { + override val values: Sequence<ReportProblemUiState> + get() = + sequenceOf( + ReportProblemUiState(), + ReportProblemUiState(sendingState = SendingReportUiState.Sending), + ReportProblemUiState(sendingState = SendingReportUiState.Success("email@mail.com")), + ReportProblemUiState( + sendingState = + SendingReportUiState.Error(SendProblemReportResult.Error.CollectLog) + ), + ) +} diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessListScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessListScreen.kt index 3773c6e54a..29303f0abf 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessListScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessListScreen.kt @@ -33,7 +33,7 @@ import net.mullvad.mullvadvpn.compose.component.NavigateBackIconButton import net.mullvad.mullvadvpn.compose.component.ScaffoldWithMediumTopBar import net.mullvad.mullvadvpn.compose.constant.ContentType import net.mullvad.mullvadvpn.compose.extensions.itemsWithDivider -import net.mullvad.mullvadvpn.compose.preview.ApiAccessListUiStateParameterProvider +import net.mullvad.mullvadvpn.compose.preview.ApiAccessListUiStatePreviewParameterProvider import net.mullvad.mullvadvpn.compose.state.ApiAccessListUiState import net.mullvad.mullvadvpn.compose.test.API_ACCESS_LIST_INFO_TEST_TAG import net.mullvad.mullvadvpn.compose.transitions.SlideInFromRightTransition @@ -47,7 +47,8 @@ import org.koin.androidx.compose.koinViewModel @Preview @Composable private fun PreviewApiAccessList( - @PreviewParameter(ApiAccessListUiStateParameterProvider::class) state: ApiAccessListUiState + @PreviewParameter(ApiAccessListUiStatePreviewParameterProvider::class) + state: ApiAccessListUiState ) { AppTheme { ApiAccessListScreen(state = state) } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt index ba3f805363..48b2d62839 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt @@ -49,8 +49,7 @@ import net.mullvad.mullvadvpn.compose.component.MullvadCircularProgressIndicator import net.mullvad.mullvadvpn.compose.component.ScaffoldWithTopBar import net.mullvad.mullvadvpn.compose.component.drawVerticalScrollbar import net.mullvad.mullvadvpn.compose.extensions.dropUnlessResumed -import net.mullvad.mullvadvpn.compose.preview.DeviceListPreviewParameterProvider -import net.mullvad.mullvadvpn.compose.state.DeviceItemUiState +import net.mullvad.mullvadvpn.compose.preview.DeviceListUiStatePreviewParameterProvider import net.mullvad.mullvadvpn.compose.state.DeviceListUiState import net.mullvad.mullvadvpn.compose.transitions.DefaultTransition import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle @@ -58,7 +57,6 @@ import net.mullvad.mullvadvpn.compose.util.showSnackbarImmediately import net.mullvad.mullvadvpn.lib.model.AccountNumber import net.mullvad.mullvadvpn.lib.model.Device import net.mullvad.mullvadvpn.lib.model.DeviceId -import net.mullvad.mullvadvpn.lib.model.GetDeviceListError import net.mullvad.mullvadvpn.lib.theme.AppTheme import net.mullvad.mullvadvpn.lib.theme.Dimens import net.mullvad.mullvadvpn.lib.theme.color.selected @@ -72,32 +70,9 @@ import org.koin.androidx.compose.koinViewModel @Composable @Preview private fun PreviewDeviceListScreenContent( - @PreviewParameter(DeviceListPreviewParameterProvider::class) devices: List<DeviceItemUiState> + @PreviewParameter(DeviceListUiStatePreviewParameterProvider::class) state: DeviceListUiState ) { - AppTheme { DeviceListScreen(state = DeviceListUiState.Content(devices = devices)) } -} - -@Composable -@Preview -private fun PreviewDeviceListScreenEmpty() { - AppTheme { DeviceListScreen(state = DeviceListUiState.Content(devices = emptyList())) } -} - -@Composable -@Preview -private fun PreviewDeviceListLoading() { - AppTheme { DeviceListScreen(state = DeviceListUiState.Loading) } -} - -@Composable -@Preview -private fun PreviewDeviceListError() { - AppTheme { - DeviceListScreen( - state = - DeviceListUiState.Error(GetDeviceListError.Unknown(IllegalStateException("Error"))) - ) - } + AppTheme { DeviceListScreen(state = state) } } data class DeviceListNavArgs(val accountNumber: AccountNumber) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditApiAccessMethodScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditApiAccessMethodScreen.kt index bab3bbcc50..6e7f606089 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditApiAccessMethodScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditApiAccessMethodScreen.kt @@ -12,7 +12,6 @@ import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SnackbarDuration import androidx.compose.material3.SnackbarHostState -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -49,7 +48,7 @@ import net.mullvad.mullvadvpn.compose.component.NavigateCloseIconButton import net.mullvad.mullvadvpn.compose.component.ScaffoldWithSmallTopBar import net.mullvad.mullvadvpn.compose.component.drawVerticalScrollbar import net.mullvad.mullvadvpn.compose.component.textResource -import net.mullvad.mullvadvpn.compose.preview.EditApiAccessMethodUiStateParameterProvider +import net.mullvad.mullvadvpn.compose.preview.EditApiAccessMethodUiStatePreviewParameterProvider import net.mullvad.mullvadvpn.compose.state.ApiAccessMethodTypes import net.mullvad.mullvadvpn.compose.state.EditApiAccessFormData import net.mullvad.mullvadvpn.compose.state.EditApiAccessMethodUiState @@ -76,7 +75,7 @@ import org.koin.androidx.compose.koinViewModel @Preview @Composable private fun PreviewEditApiAccessMethodScreen( - @PreviewParameter(EditApiAccessMethodUiStateParameterProvider::class) + @PreviewParameter(EditApiAccessMethodUiStatePreviewParameterProvider::class) state: EditApiAccessMethodUiState ) { AppTheme { EditApiAccessMethodScreen(state = state) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt index e5a59a2635..16bfb7ab95 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt @@ -47,6 +47,7 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.dropUnlessResumed import com.ramcosta.composedestinations.annotation.Destination @@ -63,6 +64,7 @@ import net.mullvad.mullvadvpn.compose.button.PrimaryButton import net.mullvad.mullvadvpn.compose.button.VariantButton import net.mullvad.mullvadvpn.compose.component.MullvadCircularProgressIndicatorLarge import net.mullvad.mullvadvpn.compose.component.ScaffoldWithTopBar +import net.mullvad.mullvadvpn.compose.preview.LoginUiStatePreviewParameterProvider import net.mullvad.mullvadvpn.compose.state.LoginError import net.mullvad.mullvadvpn.compose.state.LoginState import net.mullvad.mullvadvpn.compose.state.LoginState.Idle @@ -84,32 +86,10 @@ import org.koin.androidx.compose.koinViewModel @Preview @Composable -private fun PreviewIdle() { - AppTheme { LoginScreen(state = LoginUiState()) } -} - -@Preview -@Composable -private fun PreviewLoggingIn() { - AppTheme { LoginScreen(state = LoginUiState(loginState = Loading.LoggingIn)) } -} - -@Preview -@Composable -private fun PreviewCreatingAccount() { - AppTheme { LoginScreen(state = LoginUiState(loginState = Loading.CreatingAccount)) } -} - -@Preview -@Composable -private fun PreviewLoginError() { - AppTheme { LoginScreen(state = LoginUiState(loginState = Idle(LoginError.InvalidCredentials))) } -} - -@Preview -@Composable -private fun PreviewLoginSuccess() { - AppTheme { LoginScreen(state = LoginUiState(loginState = Success)) } +private fun PreviewLoginScreen( + @PreviewParameter(LoginUiStatePreviewParameterProvider::class) state: LoginUiState +) { + AppTheme { LoginScreen(state = state) } } @Destination<RootGraph>(style = LoginTransition::class) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ReportProblemScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ReportProblemScreen.kt index 7f1190a2ad..151bcac52c 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ReportProblemScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ReportProblemScreen.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.dropUnlessResumed import com.ramcosta.composedestinations.annotation.Destination @@ -41,11 +42,11 @@ import net.mullvad.mullvadvpn.compose.button.VariantButton import net.mullvad.mullvadvpn.compose.component.MullvadCircularProgressIndicatorLarge import net.mullvad.mullvadvpn.compose.component.NavigateBackIconButton import net.mullvad.mullvadvpn.compose.component.ScaffoldWithMediumTopBar +import net.mullvad.mullvadvpn.compose.preview.ReportProblemUiStatePreviewParameterProvider import net.mullvad.mullvadvpn.compose.textfield.mullvadWhiteTextFieldColors import net.mullvad.mullvadvpn.compose.transitions.SlideInFromRightTransition import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle import net.mullvad.mullvadvpn.compose.util.SecureScreenWhileInView -import net.mullvad.mullvadvpn.dataproxy.SendProblemReportResult import net.mullvad.mullvadvpn.lib.theme.AppTheme import net.mullvad.mullvadvpn.lib.theme.Dimens import net.mullvad.mullvadvpn.viewmodel.ReportProblemSideEffect @@ -56,43 +57,11 @@ import org.koin.androidx.compose.koinViewModel @Preview @Composable -private fun PreviewReportProblemScreen() { - AppTheme { ReportProblemScreen(state = ReportProblemUiState()) } -} - -@Preview -@Composable -private fun PreviewReportProblemSendingScreen() { - AppTheme { - ReportProblemScreen( - state = ReportProblemUiState(sendingState = SendingReportUiState.Sending) - ) - } -} - -@Preview -@Composable -private fun PreviewReportProblemSuccessScreen() { - AppTheme { - ReportProblemScreen( - state = - ReportProblemUiState(sendingState = SendingReportUiState.Success("email@mail.com")) - ) - } -} - -@Preview -@Composable -private fun PreviewReportProblemErrorScreen() { - AppTheme { - ReportProblemScreen( - state = - ReportProblemUiState( - sendingState = - SendingReportUiState.Error(SendProblemReportResult.Error.CollectLog) - ) - ) - } +private fun PreviewReportProblemScreen( + @PreviewParameter(ReportProblemUiStatePreviewParameterProvider::class) + state: ReportProblemUiState +) { + AppTheme { ReportProblemScreen(state = state) } } @Destination<RootGraph>(style = SlideInFromRightTransition::class) |
