diff options
| author | Albin <albin@mullvad.net> | 2024-06-07 18:51:56 +0200 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2024-06-10 10:36:18 +0200 |
| commit | f937ea54f41f947de8ddd606f6071f191fb1cdfb (patch) | |
| tree | ab5be555271de269a199dcfae85d6050610415b3 /android/app/src/main | |
| parent | 561c4d8262fde4d70c13fb1de0642bee521fbbe3 (diff) | |
| download | mullvadvpn-f937ea54f41f947de8ddd606f6071f191fb1cdfb.tar.xz mullvadvpn-f937ea54f41f947de8ddd606f6071f191fb1cdfb.zip | |
Unify account number naming
Use variations of "account number" rather than
"account token" throughout the kotlin code base.
Diffstat (limited to 'android/app/src/main')
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt | 8 | ||||
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt | 24 | ||||
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt | 4 | ||||
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt | 4 | ||||
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt | 4 | ||||
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountNumberVisualTransformation.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountTokenVisualTransformation.kt) | 12 | ||||
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/VoucherVisualTransformation.kt | 6 | ||||
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt | 4 | ||||
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt | 16 |
9 files changed, 41 insertions, 41 deletions
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 e781c12de9..64414b38c0 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 @@ -54,7 +54,7 @@ import net.mullvad.mullvadvpn.compose.state.DeviceListUiState import net.mullvad.mullvadvpn.compose.transitions.DefaultTransition import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle import net.mullvad.mullvadvpn.compose.util.showSnackbarImmediately -import net.mullvad.mullvadvpn.lib.model.AccountToken +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 @@ -105,13 +105,13 @@ private fun PreviewDeviceListError() { @Composable fun DeviceList( navigator: DestinationsNavigator, - accountToken: String, + accountNumber: String, confirmRemoveResultRecipient: ResultRecipient<RemoveDeviceConfirmationDialogDestination, DeviceId> ) { val viewModel = koinViewModel<DeviceListViewModel>( - parameters = { parametersOf(AccountToken(accountToken)) } + parameters = { parametersOf(AccountNumber(accountNumber)) } ) val state by viewModel.uiState.collectAsStateWithLifecycle() @@ -148,7 +148,7 @@ fun DeviceList( snackbarHostState = snackbarHostState, onBackClick = navigator::navigateUp, onContinueWithLogin = { - navigator.navigate(LoginDestination(accountToken)) { + navigator.navigate(LoginDestination(accountNumber)) { launchSingleTop = true popUpTo(LoginDestination) { inclusive = true } } 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 f4f617ec93..9e5515649d 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 @@ -76,7 +76,7 @@ import net.mullvad.mullvadvpn.compose.test.LOGIN_TITLE_TEST_TAG import net.mullvad.mullvadvpn.compose.textfield.mullvadWhiteTextFieldColors import net.mullvad.mullvadvpn.compose.transitions.LoginTransition import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle -import net.mullvad.mullvadvpn.compose.util.accountTokenVisualTransformation +import net.mullvad.mullvadvpn.compose.util.accountNumberVisualTransformation import net.mullvad.mullvadvpn.lib.theme.AppTheme import net.mullvad.mullvadvpn.lib.theme.Dimens import net.mullvad.mullvadvpn.lib.theme.color.AlphaTopBar @@ -118,16 +118,16 @@ private fun PreviewLoginSuccess() { @Composable fun Login( navigator: DestinationsNavigator, - accountToken: String? = null, + accountNumber: String? = null, vm: LoginViewModel = koinViewModel() ) { val state by vm.uiState.collectAsStateWithLifecycle() // Login with argument, e.g when user comes from Too Many Devices screen - LaunchedEffect(accountToken) { - if (accountToken != null) { - vm.onAccountNumberChange(accountToken) - vm.login(accountToken) + LaunchedEffect(accountNumber) { + if (accountNumber != null) { + vm.onAccountNumberChange(accountNumber) + vm.login(accountNumber) } } @@ -144,7 +144,7 @@ fun Login( popUpTo(NavGraphs.root) { inclusive = true } } is LoginUiSideEffect.TooManyDevices -> - navigator.navigate(DeviceListDestination(it.accountToken.value)) { + navigator.navigate(DeviceListDestination(it.accountNumber.value)) { launchSingleTop = true } LoginUiSideEffect.NavigateToOutOfTime -> @@ -291,7 +291,7 @@ private fun ColumnScope.LoginInput( onValueChange = onAccountNumberChange, singleLine = true, maxLines = 1, - visualTransformation = accountTokenVisualTransformation(), + visualTransformation = accountNumberVisualTransformation(), enabled = state.loginState is Idle, colors = mullvadWhiteTextFieldColors(), isError = state.loginState.isError(), @@ -299,13 +299,13 @@ private fun ColumnScope.LoginInput( AnimatedVisibility(visible = state.lastUsedAccount != null && expandedDropdown) { val token = state.lastUsedAccount?.value.orEmpty() - val accountTransformation = remember { accountTokenVisualTransformation() } + val accountTransformation = remember { accountNumberVisualTransformation() } val transformedText = remember(token) { accountTransformation.filter(AnnotatedString(token)).text } AccountDropDownItem( modifier = Modifier.onFocusChanged { ddFocusState = it }, - accountToken = transformedText.toString(), + accountNumber = transformedText.toString(), onClick = { state.lastUsedAccount?.let { onAccountNumberChange(it.value) @@ -379,7 +379,7 @@ private fun LoginState.supportingText(): String? { @Composable private fun AccountDropDownItem( modifier: Modifier = Modifier, - accountToken: String, + accountNumber: String, onClick: () -> Unit, onDeleteClick: () -> Unit ) { @@ -404,7 +404,7 @@ private fun AccountDropDownItem( .padding(horizontal = Dimens.mediumPadding, vertical = Dimens.smallPadding), contentAlignment = Alignment.CenterStart ) { - Text(text = accountToken, overflow = TextOverflow.Clip) + Text(text = accountNumber, overflow = TextOverflow.Clip) } IconButton(onClick = onDeleteClick) { Icon( diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt index 29bc0c3306..342f115943 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt @@ -54,7 +54,7 @@ import net.mullvad.mullvadvpn.compose.transitions.HomeTransition import net.mullvad.mullvadvpn.compose.util.CollectSideEffectWithLifecycle import net.mullvad.mullvadvpn.compose.util.createCopyToClipboardHandle import net.mullvad.mullvadvpn.lib.common.util.groupWithSpaces -import net.mullvad.mullvadvpn.lib.model.AccountToken +import net.mullvad.mullvadvpn.lib.model.AccountNumber import net.mullvad.mullvadvpn.lib.payment.model.PaymentProduct import net.mullvad.mullvadvpn.lib.payment.model.ProductId import net.mullvad.mullvadvpn.lib.payment.model.ProductPrice @@ -72,7 +72,7 @@ private fun PreviewWelcomeScreen() { WelcomeScreen( state = WelcomeUiState( - accountNumber = AccountToken("4444555566667777"), + accountNumber = AccountNumber("4444555566667777"), deviceName = "Happy Mole", billingPaymentState = PaymentState.PaymentAvailable( diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt index 0babd243da..6b2f0e7d04 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt @@ -1,12 +1,12 @@ package net.mullvad.mullvadvpn.compose.state -import net.mullvad.mullvadvpn.lib.model.AccountToken +import net.mullvad.mullvadvpn.lib.model.AccountNumber const val MIN_ACCOUNT_LOGIN_LENGTH = 8 data class LoginUiState( val accountNumberInput: String = "", - val lastUsedAccount: AccountToken? = null, + val lastUsedAccount: AccountNumber? = null, val loginState: LoginState = LoginState.Idle(null) ) { val loginButtonEnabled = diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt index 02e8217172..dd9a57626c 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt @@ -1,11 +1,11 @@ package net.mullvad.mullvadvpn.compose.state -import net.mullvad.mullvadvpn.lib.model.AccountToken +import net.mullvad.mullvadvpn.lib.model.AccountNumber import net.mullvad.mullvadvpn.lib.model.TunnelState data class WelcomeUiState( val tunnelState: TunnelState = TunnelState.Disconnected(), - val accountNumber: AccountToken? = null, + val accountNumber: AccountNumber? = null, val deviceName: String? = null, val showSitePayment: Boolean = false, val billingPaymentState: PaymentState? = null, diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountTokenVisualTransformation.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountNumberVisualTransformation.kt index 3160ff9ac1..56426af6f4 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountTokenVisualTransformation.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/AccountNumberVisualTransformation.kt @@ -5,22 +5,22 @@ import androidx.compose.ui.text.input.OffsetMapping import androidx.compose.ui.text.input.TransformedText import androidx.compose.ui.text.input.VisualTransformation -const val ACCOUNT_TOKEN_SEPARATOR = " " -const val ACCOUNT_TOKEN_CHUNK_SIZE = 4 +const val ACCOUNT_NUMBER_SEPARATOR = " " +const val ACCOUNT_NUMBER_CHUNK_SIZE = 4 -fun accountTokenVisualTransformation() = VisualTransformation { +fun accountNumberVisualTransformation() = VisualTransformation { val transformedString = - it.chunked(ACCOUNT_TOKEN_CHUNK_SIZE).joinToString(ACCOUNT_TOKEN_SEPARATOR) + it.chunked(ACCOUNT_NUMBER_CHUNK_SIZE).joinToString(ACCOUNT_NUMBER_SEPARATOR) val transformedAnnotatedString = AnnotatedString(transformedString) TransformedText( transformedAnnotatedString, object : OffsetMapping { override fun originalToTransformed(offset: Int): Int = - offset + (offset - 1) / ACCOUNT_TOKEN_CHUNK_SIZE + offset + (offset - 1) / ACCOUNT_NUMBER_CHUNK_SIZE override fun transformedToOriginal(offset: Int): Int = - offset - (offset - 1) / (ACCOUNT_TOKEN_CHUNK_SIZE + 1) + offset - (offset - 1) / (ACCOUNT_NUMBER_CHUNK_SIZE + 1) } ) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/VoucherVisualTransformation.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/VoucherVisualTransformation.kt index c4d5eec0a1..2c97f20314 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/VoucherVisualTransformation.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/util/VoucherVisualTransformation.kt @@ -23,16 +23,16 @@ fun vouchersVisualTransformation() = VisualTransformation { text -> AnnotatedString(out), object : OffsetMapping { override fun originalToTransformed(offset: Int): Int { - val res = offset + offset / ACCOUNT_TOKEN_CHUNK_SIZE + val res = offset + offset / ACCOUNT_NUMBER_CHUNK_SIZE // Limit max input to 19 characters (16 voucher - 3 dividers) return min( res, - MAX_VOUCHER_LENGTH + MAX_VOUCHER_LENGTH / ACCOUNT_TOKEN_CHUNK_SIZE - 1 + MAX_VOUCHER_LENGTH + MAX_VOUCHER_LENGTH / ACCOUNT_NUMBER_CHUNK_SIZE - 1 ) } override fun transformedToOriginal(offset: Int): Int = - offset - offset / (ACCOUNT_TOKEN_CHUNK_SIZE + 1) + offset - offset / (ACCOUNT_NUMBER_CHUNK_SIZE + 1) } ) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt index d2c8780606..b1c5736988 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt @@ -17,7 +17,7 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.compose.state.DeviceItemUiState import net.mullvad.mullvadvpn.compose.state.DeviceListUiState -import net.mullvad.mullvadvpn.lib.model.AccountToken +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 @@ -25,7 +25,7 @@ import net.mullvad.mullvadvpn.lib.shared.DeviceRepository class DeviceListViewModel( private val deviceRepository: DeviceRepository, - private val token: AccountToken, + private val token: AccountNumber, private val dispatcher: CoroutineDispatcher = Dispatchers.Default, ) : ViewModel() { private val loadingDevices = MutableStateFlow<Set<DeviceId>>(emptySet()) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt index e568021177..fc2f5e86f9 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt @@ -24,7 +24,7 @@ import net.mullvad.mullvadvpn.compose.state.LoginState.Idle import net.mullvad.mullvadvpn.compose.state.LoginState.Loading import net.mullvad.mullvadvpn.compose.state.LoginState.Success import net.mullvad.mullvadvpn.compose.state.LoginUiState -import net.mullvad.mullvadvpn.lib.model.AccountToken +import net.mullvad.mullvadvpn.lib.model.AccountNumber import net.mullvad.mullvadvpn.lib.model.LoginAccountError import net.mullvad.mullvadvpn.lib.shared.AccountRepository import net.mullvad.mullvadvpn.usecase.ConnectivityUseCase @@ -40,7 +40,7 @@ sealed interface LoginUiSideEffect { data object NavigateToOutOfTime : LoginUiSideEffect - data class TooManyDevices(val accountToken: AccountToken) : LoginUiSideEffect + data class TooManyDevices(val accountNumber: AccountNumber) : LoginUiSideEffect } class LoginViewModel( @@ -55,15 +55,15 @@ class LoginViewModel( private val _uiSideEffect = Channel<LoginUiSideEffect>() val uiSideEffect = _uiSideEffect.receiveAsFlow() - private val _mutableAccountHistory: MutableStateFlow<AccountToken?> = MutableStateFlow(null) + private val _mutableAccountHistory: MutableStateFlow<AccountNumber?> = MutableStateFlow(null) private val _uiState = combine( _loginInput, _mutableAccountHistory, _loginState, - ) { loginInput, historyAccountToken, loginState -> - LoginUiState(loginInput, historyAccountToken, loginState) + ) { loginInput, historyAccountNumber, loginState -> + LoginUiState(loginInput, historyAccountNumber, loginState) } val uiState: StateFlow<LoginUiState> = @@ -94,7 +94,7 @@ class LoginViewModel( } } - fun login(accountToken: String) { + fun login(accountNumber: String) { if (!isInternetAvailable()) { _loginState.value = Idle(LoginError.NoInternetConnection) return @@ -103,7 +103,7 @@ class LoginViewModel( viewModelScope.launch(dispatcher) { // Ensure we always take at least MINIMUM_LOADING_SPINNER_TIME_MILLIS to show the // loading indicator - val result = async { accountRepository.login(AccountToken(accountToken)) } + val result = async { accountRepository.login(AccountNumber(accountNumber)) } delay(MINIMUM_LOADING_SPINNER_TIME_MILLIS) @@ -155,7 +155,7 @@ class LoginViewModel( when (this) { LoginAccountError.InvalidAccount -> Idle(LoginError.InvalidCredentials) is LoginAccountError.MaxDevicesReached -> - Idle().also { _uiSideEffect.send(LoginUiSideEffect.TooManyDevices(accountToken)) } + Idle().also { _uiSideEffect.send(LoginUiSideEffect.TooManyDevices(accountNumber)) } LoginAccountError.RpcError, is LoginAccountError.Unknown -> Idle(LoginError.Unknown(this.toString())) } |
