summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson90@gmail.com>2023-12-18 08:59:48 +0100
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-12-19 13:40:50 +0100
commit1df9f4b5328432ca77048d789ba907f9dde60a5e (patch)
tree622b044523fb656529221afb25065aa519ccf43f /android
parentdce93ba278004b9dc05e2ddda35655bd372e03cc (diff)
downloadmullvadvpn-1df9f4b5328432ca77048d789ba907f9dde60a5e.tar.xz
mullvadvpn-1df9f4b5328432ca77048d789ba907f9dde60a5e.zip
Lift IS_PLAY_BUILD
Diffstat (limited to 'android')
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreenTest.kt66
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreenTest.kt14
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationBanner.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationData.kt8
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt14
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/ConnectUiState.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SettingsUiState.kt3
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt13
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/OutOfTimeViewModel.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/SettingsViewModel.kt20
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModel.kt6
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModelTest.kt3
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt3
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/OutOfTimeViewModelTest.kt3
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SettingsViewModelTest.kt3
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModelTest.kt3
20 files changed, 128 insertions, 68 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreenTest.kt
index cd25c8ce0b..dae3bf2ed3 100644
--- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreenTest.kt
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreenTest.kt
@@ -82,7 +82,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = InAppNotification.TunnelStateBlocked
+ inAppNotification = InAppNotification.TunnelStateBlocked,
+ isPlayBuild = false
),
)
}
@@ -117,7 +118,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = InAppNotification.TunnelStateBlocked
+ inAppNotification = InAppNotification.TunnelStateBlocked,
+ isPlayBuild = false
),
)
}
@@ -150,7 +152,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
)
}
@@ -182,7 +185,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
)
}
@@ -215,7 +219,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
)
}
@@ -248,7 +253,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
)
}
@@ -286,7 +292,8 @@ class ConnectScreenTest {
inAppNotification =
InAppNotification.TunnelStateError(
ErrorState(ErrorStateCause.StartTunnelError, true)
- )
+ ),
+ isPlayBuild = false
),
)
}
@@ -325,7 +332,8 @@ class ConnectScreenTest {
inAppNotification =
InAppNotification.TunnelStateError(
ErrorState(ErrorStateCause.StartTunnelError, false)
- )
+ ),
+ isPlayBuild = false
),
)
}
@@ -358,7 +366,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = InAppNotification.TunnelStateBlocked
+ inAppNotification = InAppNotification.TunnelStateBlocked,
+ isPlayBuild = false
),
)
}
@@ -393,7 +402,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = InAppNotification.TunnelStateBlocked
+ inAppNotification = InAppNotification.TunnelStateBlocked,
+ isPlayBuild = false
),
)
}
@@ -428,7 +438,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
onSwitchLocationClick = mockedClickHandler
)
@@ -460,7 +471,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
onDisconnectClick = mockedClickHandler
)
@@ -492,7 +504,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
onReconnectClick = mockedClickHandler
)
@@ -523,7 +536,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
onConnectClick = mockedClickHandler
)
@@ -554,7 +568,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
onCancelClick = mockedClickHandler
)
@@ -586,7 +601,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
onToggleTunnelInfo = mockedClickHandler
)
@@ -625,7 +641,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = true,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = null
+ inAppNotification = null,
+ isPlayBuild = false
),
)
}
@@ -663,7 +680,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = InAppNotification.UpdateAvailable(versionInfo)
+ inAppNotification = InAppNotification.UpdateAvailable(versionInfo),
+ isPlayBuild = false
),
)
}
@@ -699,7 +717,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = InAppNotification.UnsupportedVersion(versionInfo)
+ inAppNotification = InAppNotification.UnsupportedVersion(versionInfo),
+ isPlayBuild = false
),
)
}
@@ -732,7 +751,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = InAppNotification.AccountExpiry(expiryDate)
+ inAppNotification = InAppNotification.AccountExpiry(expiryDate),
+ isPlayBuild = false
),
)
}
@@ -770,7 +790,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = InAppNotification.UnsupportedVersion(versionInfo)
+ inAppNotification = InAppNotification.UnsupportedVersion(versionInfo),
+ isPlayBuild = false
),
)
}
@@ -802,7 +823,8 @@ class ConnectScreenTest {
isTunnelInfoExpanded = false,
deviceName = "",
daysLeftUntilExpiry = null,
- inAppNotification = InAppNotification.AccountExpiry(expiryDate)
+ inAppNotification = InAppNotification.AccountExpiry(expiryDate),
+ isPlayBuild = false
),
)
}
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreenTest.kt
index e15ed012d6..f5daf29bb2 100644
--- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreenTest.kt
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreenTest.kt
@@ -25,7 +25,12 @@ class SettingsScreenTest {
composeTestRule.setContentWithTheme {
SettingsScreen(
uiState =
- SettingsUiState(appVersion = "", isLoggedIn = true, isUpdateAvailable = true),
+ SettingsUiState(
+ appVersion = "",
+ isLoggedIn = true,
+ isUpdateAvailable = true,
+ isPlayBuild = false
+ ),
)
}
// Assert
@@ -43,7 +48,12 @@ class SettingsScreenTest {
composeTestRule.setContentWithTheme {
SettingsScreen(
uiState =
- SettingsUiState(appVersion = "", isLoggedIn = false, isUpdateAvailable = true),
+ SettingsUiState(
+ appVersion = "",
+ isLoggedIn = false,
+ isUpdateAvailable = true,
+ isPlayBuild = false
+ ),
)
}
// Assert
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationBanner.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationBanner.kt
index 2bcda3ea35..3d4a71f1af 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationBanner.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationBanner.kt
@@ -71,7 +71,7 @@ private fun PreviewNotificationBanner() {
)
)
)
- .map { it.toNotificationData({}, {}, {}) }
+ .map { it.toNotificationData(false, {}, {}, {}) }
bannerDataList.forEach {
MullvadTopBar(
@@ -90,6 +90,7 @@ private fun PreviewNotificationBanner() {
@Composable
fun NotificationBanner(
notification: InAppNotification?,
+ isPlayBuild: Boolean,
onClickUpdateVersion: () -> Unit,
onClickShowAccount: () -> Unit,
onClickDismissNewDevice: () -> Unit
@@ -106,6 +107,7 @@ fun NotificationBanner(
if (visibleNotification != null)
Notification(
visibleNotification.toNotificationData(
+ isPlayBuild = isPlayBuild,
onClickUpdateVersion,
onClickShowAccount,
onClickDismissNewDevice
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationData.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationData.kt
index 16efa6c88b..99501d1f4d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationData.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationData.kt
@@ -12,7 +12,6 @@ import androidx.core.text.HtmlCompat
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.compose.extensions.getExpiryQuantityString
import net.mullvad.mullvadvpn.compose.extensions.toAnnotatedString
-import net.mullvad.mullvadvpn.constant.IS_PLAY_BUILD
import net.mullvad.mullvadvpn.lib.common.util.getErrorNotificationResources
import net.mullvad.mullvadvpn.repository.InAppNotification
import net.mullvad.mullvadvpn.ui.notification.StatusLevel
@@ -39,6 +38,7 @@ data class NotificationAction(
@Composable
fun InAppNotification.toNotificationData(
+ isPlayBuild: Boolean,
onClickUpdateVersion: () -> Unit,
onClickShowAccount: () -> Unit,
onDismissNewDevice: () -> Unit
@@ -71,7 +71,7 @@ fun InAppNotification.toNotificationData(
message = LocalContext.current.resources.getExpiryQuantityString(expiry),
statusLevel = StatusLevel.Error,
action =
- if (IS_PLAY_BUILD) null
+ if (isPlayBuild) null
else
NotificationAction(
R.drawable.icon_extlink,
@@ -90,7 +90,7 @@ fun InAppNotification.toNotificationData(
message = stringResource(id = R.string.unsupported_version_description),
statusLevel = StatusLevel.Error,
action =
- if (IS_PLAY_BUILD) null
+ if (isPlayBuild) null
else NotificationAction(R.drawable.icon_extlink, onClickUpdateVersion)
)
is InAppNotification.UpdateAvailable ->
@@ -103,7 +103,7 @@ fun InAppNotification.toNotificationData(
),
statusLevel = StatusLevel.Warning,
action =
- if (IS_PLAY_BUILD) null
+ if (isPlayBuild) null
else NotificationAction(R.drawable.icon_extlink, onClickUpdateVersion)
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt
index cbf1f53c3d..b1de1ad809 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt
@@ -114,7 +114,9 @@ fun Connect(navigator: DestinationsNavigator) {
Intent(
Intent.ACTION_VIEW,
Uri.parse(
- context.getString(R.string.download_url).appendHideNavOnPlayBuild()
+ context
+ .getString(R.string.download_url)
+ .appendHideNavOnPlayBuild(state.isPlayBuild)
)
)
.apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK }
@@ -190,6 +192,7 @@ fun ConnectScreen(
) {
NotificationBanner(
notification = uiState.inAppNotification,
+ isPlayBuild = uiState.isPlayBuild,
onClickUpdateVersion = onUpdateVersionClick,
onClickShowAccount = onManageAccountClick,
onClickDismissNewDevice = onDismissNewDeviceClick,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt
index d057da60f8..9805a7bb3b 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt
@@ -33,7 +33,6 @@ import net.mullvad.mullvadvpn.compose.extensions.itemWithDivider
import net.mullvad.mullvadvpn.compose.state.SettingsUiState
import net.mullvad.mullvadvpn.compose.test.LAZY_LIST_TEST_TAG
import net.mullvad.mullvadvpn.compose.transitions.SettingsTransition
-import net.mullvad.mullvadvpn.constant.IS_PLAY_BUILD
import net.mullvad.mullvadvpn.lib.common.util.openLink
import net.mullvad.mullvadvpn.lib.theme.AppTheme
import net.mullvad.mullvadvpn.lib.theme.Dimens
@@ -51,7 +50,8 @@ private fun PreviewSettings() {
SettingsUiState(
appVersion = "2222.22",
isLoggedIn = true,
- isUpdateAvailable = true
+ isUpdateAvailable = true,
+ isPlayBuild = false
),
)
}
@@ -123,13 +123,13 @@ fun SettingsScreen(
Uri.parse(
context.resources
.getString(R.string.download_url)
- .appendHideNavOnPlayBuild()
+ .appendHideNavOnPlayBuild(uiState.isPlayBuild)
)
)
},
bodyView =
@Composable {
- if (IS_PLAY_BUILD.not()) {
+ if (!uiState.isPlayBuild) {
NavigationCellBody(
content = uiState.appVersion,
contentBodyDescription =
@@ -145,7 +145,7 @@ fun SettingsScreen(
}
},
showWarning = uiState.isUpdateAvailable,
- isRowEnabled = IS_PLAY_BUILD.not()
+ isRowEnabled = !uiState.isPlayBuild
)
}
if (uiState.isUpdateAvailable) {
@@ -174,7 +174,7 @@ fun SettingsScreen(
)
}
- if (IS_PLAY_BUILD.not()) {
+ if (!uiState.isPlayBuild) {
itemWithDivider {
val faqGuideLabel = stringResource(id = R.string.faqs_and_guides)
NavigationComposeCell(
@@ -199,7 +199,7 @@ fun SettingsScreen(
Uri.parse(
context.resources
.getString(R.string.privacy_policy_url)
- .appendHideNavOnPlayBuild()
+ .appendHideNavOnPlayBuild(uiState.isPlayBuild)
)
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/ConnectUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/ConnectUiState.kt
index 6ab4839bd1..54c1a0d7c0 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/ConnectUiState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/ConnectUiState.kt
@@ -17,7 +17,8 @@ data class ConnectUiState(
val inAppNotification: InAppNotification?,
val isTunnelInfoExpanded: Boolean,
val deviceName: String?,
- val daysLeftUntilExpiry: Int?
+ val daysLeftUntilExpiry: Int?,
+ val isPlayBuild: Boolean
) {
companion object {
val INITIAL =
@@ -32,7 +33,8 @@ data class ConnectUiState(
isTunnelInfoExpanded = false,
inAppNotification = null,
deviceName = null,
- daysLeftUntilExpiry = null
+ daysLeftUntilExpiry = null,
+ isPlayBuild = false
)
}
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SettingsUiState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SettingsUiState.kt
index 06bd0749eb..b325ed2ce7 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SettingsUiState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/SettingsUiState.kt
@@ -3,5 +3,6 @@ package net.mullvad.mullvadvpn.compose.state
data class SettingsUiState(
val appVersion: String,
val isLoggedIn: Boolean,
- val isUpdateAvailable: Boolean
+ val isUpdateAvailable: Boolean,
+ val isPlayBuild: Boolean
)
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
index e12e3e2322..56d6b71a2d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
@@ -9,6 +9,7 @@ import kotlinx.coroutines.MainScope
import net.mullvad.mullvadvpn.BuildConfig
import net.mullvad.mullvadvpn.applist.ApplicationsIconManager
import net.mullvad.mullvadvpn.applist.ApplicationsProvider
+import net.mullvad.mullvadvpn.constant.IS_PLAY_BUILD
import net.mullvad.mullvadvpn.dataproxy.MullvadProblemReport
import net.mullvad.mullvadvpn.lib.ipc.EventDispatcher
import net.mullvad.mullvadvpn.lib.ipc.MessageHandler
@@ -132,11 +133,13 @@ val uiModule = module {
single { ProblemReportRepository() }
// View models
- viewModel { AccountViewModel(get(), get(), get(), get()) }
+ viewModel { AccountViewModel(get(), get(), get(), get(), IS_PLAY_BUILD) }
viewModel {
ChangelogViewModel(get(), BuildConfig.VERSION_CODE, BuildConfig.ALWAYS_SHOW_CHANGELOG)
}
- viewModel { ConnectViewModel(get(), get(), get(), get(), get(), get(), get(), get()) }
+ viewModel {
+ ConnectViewModel(get(), get(), get(), get(), get(), get(), get(), get(), IS_PLAY_BUILD)
+ }
viewModel { DeviceListViewModel(get(), get()) }
viewModel { DeviceRevokedViewModel(get(), get()) }
viewModel { MtuDialogViewModel(get()) }
@@ -146,14 +149,14 @@ val uiModule = module {
viewModel { LoginViewModel(get(), get(), get(), get()) }
viewModel { PrivacyDisclaimerViewModel(get()) }
viewModel { SelectLocationViewModel(get(), get(), get()) }
- viewModel { SettingsViewModel(get(), get()) }
+ viewModel { SettingsViewModel(get(), get(), IS_PLAY_BUILD) }
viewModel { SplashViewModel(get(), get(), get()) }
viewModel { VoucherDialogViewModel(get(), get()) }
viewModel { VpnSettingsViewModel(get(), get(), get(), get()) }
- viewModel { WelcomeViewModel(get(), get(), get(), get(), get()) }
+ viewModel { WelcomeViewModel(get(), get(), get(), get(), get(), isPlayBuild = IS_PLAY_BUILD) }
viewModel { ReportProblemViewModel(get(), get()) }
viewModel { ViewLogsViewModel(get()) }
- viewModel { OutOfTimeViewModel(get(), get(), get(), get(), get()) }
+ viewModel { OutOfTimeViewModel(get(), get(), get(), get(), get(), isPlayBuild = IS_PLAY_BUILD) }
viewModel { PaymentViewModel(get()) }
viewModel { FilterViewModel(get()) }
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt
index 4214aac209..41e83465a1 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt
@@ -1,9 +1,7 @@
package net.mullvad.mullvadvpn.util
-import net.mullvad.mullvadvpn.constant.IS_PLAY_BUILD
-
-fun String.appendHideNavOnPlayBuild(): String =
- if (IS_PLAY_BUILD) {
+fun String.appendHideNavOnPlayBuild(isPlayBuild: Boolean): String =
+ if (isPlayBuild) {
"$this?hide_nav"
} else {
this
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt
index eda8674802..0f8d624fc4 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModel.kt
@@ -12,7 +12,6 @@ import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.compose.state.PaymentState
-import net.mullvad.mullvadvpn.constant.IS_PLAY_BUILD
import net.mullvad.mullvadvpn.lib.payment.model.ProductId
import net.mullvad.mullvadvpn.model.AccountExpiry
import net.mullvad.mullvadvpn.model.DeviceState
@@ -28,7 +27,8 @@ class AccountViewModel(
private val accountRepository: AccountRepository,
private val serviceConnectionManager: ServiceConnectionManager,
private val paymentUseCase: PaymentUseCase,
- deviceRepository: DeviceRepository
+ deviceRepository: DeviceRepository,
+ private val isPlayBuild: Boolean,
) : ViewModel() {
private val _uiSideEffect = Channel<UiSideEffect>(1, BufferOverflow.DROP_OLDEST)
val uiSideEffect = _uiSideEffect.receiveAsFlow()
@@ -43,7 +43,7 @@ class AccountViewModel(
deviceName = deviceState.deviceName() ?: "",
accountNumber = deviceState.token() ?: "",
accountExpiry = accountExpiry.date(),
- showSitePayment = IS_PLAY_BUILD.not(),
+ showSitePayment = !isPlayBuild,
billingPaymentState = paymentAvailability?.toPaymentState()
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
index 976eed1270..3066006083 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
@@ -54,7 +54,8 @@ class ConnectViewModel(
private val newDeviceNotificationUseCase: NewDeviceNotificationUseCase,
private val relayListUseCase: RelayListUseCase,
private val outOfTimeUseCase: OutOfTimeUseCase,
- private val paymentUseCase: PaymentUseCase
+ private val paymentUseCase: PaymentUseCase,
+ private val isPlayBuild: Boolean
) : ViewModel() {
private val _uiSideEffect = Channel<UiSideEffect>(1, BufferOverflow.DROP_OLDEST)
val uiSideEffect = _uiSideEffect.receiveAsFlow()
@@ -128,7 +129,8 @@ class ConnectViewModel(
},
inAppNotification = notifications.firstOrNull(),
deviceName = deviceName,
- daysLeftUntilExpiry = accountExpiry.date()?.daysFromNow()
+ daysLeftUntilExpiry = accountExpiry.date()?.daysFromNow(),
+ isPlayBuild = isPlayBuild
)
}
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/OutOfTimeViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/OutOfTimeViewModel.kt
index 8c9a39bbdc..833ccf77d2 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/OutOfTimeViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/OutOfTimeViewModel.kt
@@ -17,7 +17,6 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.compose.state.OutOfTimeUiState
import net.mullvad.mullvadvpn.constant.ACCOUNT_EXPIRY_POLL_INTERVAL
-import net.mullvad.mullvadvpn.constant.IS_PLAY_BUILD
import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.repository.AccountRepository
import net.mullvad.mullvadvpn.repository.DeviceRepository
@@ -38,6 +37,7 @@ class OutOfTimeViewModel(
private val paymentUseCase: PaymentUseCase,
private val outOfTimeUseCase: OutOfTimeUseCase,
private val pollAccountExpiry: Boolean = true,
+ private val isPlayBuild: Boolean
) : ViewModel() {
private val _uiSideEffect = Channel<UiSideEffect>(1, BufferOverflow.DROP_OLDEST)
@@ -61,7 +61,7 @@ class OutOfTimeViewModel(
OutOfTimeUiState(
tunnelState = tunnelState,
deviceName = deviceState.deviceName() ?: "",
- showSitePayment = IS_PLAY_BUILD.not(),
+ showSitePayment = !isPlayBuild,
billingPaymentState = paymentAvailability?.toPaymentState(),
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/SettingsViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/SettingsViewModel.kt
index 8ef85cfca8..b836894cb7 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/SettingsViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/SettingsViewModel.kt
@@ -13,7 +13,8 @@ import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager
class SettingsViewModel(
deviceRepository: DeviceRepository,
- serviceConnectionManager: ServiceConnectionManager
+ serviceConnectionManager: ServiceConnectionManager,
+ isPlayBuild: Boolean
) : ViewModel() {
private val vmState: StateFlow<SettingsUiState> =
@@ -25,19 +26,30 @@ class SettingsViewModel(
isLoggedIn = deviceState is DeviceState.LoggedIn,
appVersion = cachedVersionInfo?.version ?: "",
isUpdateAvailable =
- cachedVersionInfo?.let { it.isSupported.not() || it.isOutdated } ?: false
+ cachedVersionInfo?.let { it.isSupported.not() || it.isOutdated } ?: false,
+ isPlayBuild = isPlayBuild
)
}
.stateIn(
viewModelScope,
SharingStarted.WhileSubscribed(),
- SettingsUiState(appVersion = "", isLoggedIn = false, isUpdateAvailable = false)
+ SettingsUiState(
+ appVersion = "",
+ isLoggedIn = false,
+ isUpdateAvailable = false,
+ isPlayBuild
+ )
)
val uiState =
vmState.stateIn(
viewModelScope,
SharingStarted.WhileSubscribed(),
- SettingsUiState(appVersion = "", isLoggedIn = false, isUpdateAvailable = false)
+ SettingsUiState(
+ appVersion = "",
+ isLoggedIn = false,
+ isUpdateAvailable = false,
+ isPlayBuild
+ )
)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModel.kt
index 7c77d183ca..6a2488c961 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModel.kt
@@ -19,7 +19,6 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.compose.state.WelcomeUiState
import net.mullvad.mullvadvpn.constant.ACCOUNT_EXPIRY_POLL_INTERVAL
-import net.mullvad.mullvadvpn.constant.IS_PLAY_BUILD
import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.repository.AccountRepository
import net.mullvad.mullvadvpn.repository.DeviceRepository
@@ -41,7 +40,8 @@ class WelcomeViewModel(
private val serviceConnectionManager: ServiceConnectionManager,
private val paymentUseCase: PaymentUseCase,
private val outOfTimeUseCase: OutOfTimeUseCase,
- private val pollAccountExpiry: Boolean = true
+ private val pollAccountExpiry: Boolean = true,
+ private val isPlayBuild: Boolean
) : ViewModel() {
private val _uiSideEffect = Channel<UiSideEffect>(1, BufferOverflow.DROP_OLDEST)
val uiSideEffect = _uiSideEffect.receiveAsFlow()
@@ -67,7 +67,7 @@ class WelcomeViewModel(
tunnelState = tunnelState,
accountNumber = deviceState.token(),
deviceName = deviceState.deviceName(),
- showSitePayment = IS_PLAY_BUILD.not(),
+ showSitePayment = !isPlayBuild,
billingPaymentState = paymentAvailability?.toPaymentState(),
)
}
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModelTest.kt
index 282d1d3a27..22acc97986 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AccountViewModelTest.kt
@@ -77,7 +77,8 @@ class AccountViewModelTest {
accountRepository = mockAccountRepository,
serviceConnectionManager = mockServiceConnectionManager,
deviceRepository = mockDeviceRepository,
- paymentUseCase = mockPaymentUseCase
+ paymentUseCase = mockPaymentUseCase,
+ isPlayBuild = false
)
}
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt
index 35898df4ab..7271c07433 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt
@@ -150,7 +150,8 @@ class ConnectViewModelTest {
relayListUseCase = mockRelayListUseCase,
newDeviceNotificationUseCase = mockk(),
outOfTimeUseCase = outOfTimeUseCase,
- paymentUseCase = mockPaymentUseCase
+ paymentUseCase = mockPaymentUseCase,
+ isPlayBuild = false
)
}
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/OutOfTimeViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/OutOfTimeViewModelTest.kt
index 0232f12e89..ab861b1e20 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/OutOfTimeViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/OutOfTimeViewModelTest.kt
@@ -97,7 +97,8 @@ class OutOfTimeViewModelTest {
deviceRepository = mockDeviceRepository,
paymentUseCase = mockPaymentUseCase,
outOfTimeUseCase = mockOutOfTimeUseCase,
- pollAccountExpiry = false
+ pollAccountExpiry = false,
+ isPlayBuild = false
)
}
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SettingsViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SettingsViewModelTest.kt
index a858913b31..ff6804c953 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SettingsViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/SettingsViewModelTest.kt
@@ -63,7 +63,8 @@ class SettingsViewModelTest {
viewModel =
SettingsViewModel(
deviceRepository = mockDeviceRepository,
- serviceConnectionManager = mockServiceConnectionManager
+ serviceConnectionManager = mockServiceConnectionManager,
+ isPlayBuild = false
)
}
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModelTest.kt
index 433a9f5709..ac047db2ea 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/WelcomeViewModelTest.kt
@@ -96,7 +96,8 @@ class WelcomeViewModelTest {
serviceConnectionManager = mockServiceConnectionManager,
paymentUseCase = mockPaymentUseCase,
outOfTimeUseCase = mockOutOfTimeUseCase,
- pollAccountExpiry = false
+ pollAccountExpiry = false,
+ isPlayBuild = false
)
}