summaryrefslogtreecommitdiffhomepage
path: root/android/app/src/main
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2024-06-07 18:51:56 +0200
committerAlbin <albin@mullvad.net>2024-06-10 10:36:18 +0200
commitf937ea54f41f947de8ddd606f6071f191fb1cdfb (patch)
treeab5be555271de269a199dcfae85d6050610415b3 /android/app/src/main
parent561c4d8262fde4d70c13fb1de0642bee521fbbe3 (diff)
downloadmullvadvpn-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.kt8
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt24
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/LoginUiState.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/WelcomeUiState.kt4
-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.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/DeviceListViewModel.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt16
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()))
}