summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorKalle Lindström <karl.lindstrom@mullvad.net>2024-09-06 09:06:18 +0200
committerDavid Göransson <david.goransson@mullvad.net>2024-09-06 16:16:27 +0200
commit312618ae3e8a7beeb690c8d699cb0173aa1c0f5a (patch)
tree29503df0841ec1faa13841a4474986d03381414d /android/app/src
parentea7357d7055158e46ec6dfadbae9b0591720d339 (diff)
downloadmullvadvpn-312618ae3e8a7beeb690c8d699cb0173aa1c0f5a.tar.xz
mullvadvpn-312618ae3e8a7beeb690c8d699cb0173aa1c0f5a.zip
Refactor to use preview parameter providers
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ApiAccessListUiStatePreviewParameterProvider.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ApiAccessListUiStateParameterProvider.kt)3
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/DeviceListPreviewParameterProvider.kt16
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/DeviceListUiStatePreviewParameterProvider.kt20
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/EditApiAccessMethodUiStatePreviewParameterProvider.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/EditApiAccessMethodUiStateParameterProvider.kt)2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/LoginUiStatePreviewParameterProvider.kt18
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ReportProblemUiStatePreviewParameterProvider.kt21
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessListScreen.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt31
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditApiAccessMethodScreen.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt32
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ReportProblemScreen.kt45
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)