summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-03-24 14:23:37 +0100
committerAlbin <albin@mullvad.net>2022-04-20 16:36:51 +0200
commit3eb6f68172d0b54a699e13fac176dc58687c3f53 (patch)
tree24bcfa6ae9061454a68407d218ee3c33e5c50a7a /android/app/src
parent7163ba1209d3dc2bc9c10ad8273f87be28e3aa49 (diff)
downloadmullvadvpn-3eb6f68172d0b54a699e13fac176dc58687c3f53.tar.xz
mullvadvpn-3eb6f68172d0b54a699e13fac176dc58687c3f53.zip
Show device name in account view
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceState.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt14
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt9
-rw-r--r--android/app/src/main/res/layout/account.xml7
-rw-r--r--android/app/src/main/res/values/strings.xml1
5 files changed, 34 insertions, 1 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceState.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceState.kt
index 04b87a87cd..a4fd52cabb 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceState.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/model/DeviceState.kt
@@ -17,6 +17,10 @@ sealed class DeviceState : Parcelable {
return this is InitialState
}
+ fun deviceName(): String? {
+ return (this as? DeviceRegistered)?.deviceConfig?.device?.name
+ }
+
fun token(): String? {
return (this as? DeviceRegistered)?.deviceConfig?.token
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt
index 00fa67059c..d94a88ee3c 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountFragment.kt
@@ -15,6 +15,7 @@ import net.mullvad.mullvadvpn.ui.widget.CopyableInformationView
import net.mullvad.mullvadvpn.ui.widget.InformationView
import net.mullvad.mullvadvpn.ui.widget.RedeemVoucherButton
import net.mullvad.mullvadvpn.ui.widget.SitePaymentButton
+import net.mullvad.mullvadvpn.util.capitalizeFirstCharOfEachWord
import net.mullvad.talpid.tunnel.ErrorStateCause
import org.joda.time.DateTime
@@ -52,6 +53,7 @@ class AccountFragment : ServiceDependentFragment(OnNoService.GoBack) {
private lateinit var accountExpiryView: InformationView
private lateinit var accountNumberView: CopyableInformationView
+ private lateinit var deviceNameView: InformationView
private lateinit var sitePaymentButton: SitePaymentButton
private lateinit var redeemVoucherButton: RedeemVoucherButton
private lateinit var titleController: CollapsibleTitleController
@@ -88,7 +90,7 @@ class AccountFragment : ServiceDependentFragment(OnNoService.GoBack) {
}
accountExpiryView = view.findViewById(R.id.account_expiry)
-
+ deviceNameView = view.findViewById(R.id.device_name)
titleController = CollapsibleTitleController(view)
return view
@@ -105,6 +107,16 @@ class AccountFragment : ServiceDependentFragment(OnNoService.GoBack) {
}
}
+ jobTracker.newUiJob("updateDeviceName") {
+ deviceRepository.deviceState
+ .onEach { state ->
+ if (state.isInitialState()) deviceRepository.refreshDeviceState()
+ }
+ .collect { state ->
+ deviceNameView.information = state.deviceName()?.capitalizeFirstCharOfEachWord()
+ }
+ }
+
accountCache.onAccountExpiryChange.subscribe(this) { accountExpiry ->
jobTracker.newUiJob("updateAccountExpiry") {
currentAccountExpiry = accountExpiry
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
new file mode 100644
index 0000000000..df15c47e19
--- /dev/null
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt
@@ -0,0 +1,9 @@
+package net.mullvad.mullvadvpn.util
+
+fun String.capitalizeFirstCharOfEachWord(): String {
+ return split(" ")
+ .joinToString(" ") { word ->
+ word.replaceFirstChar { firstChar -> firstChar.uppercase() }
+ }
+ .trimEnd()
+}
diff --git a/android/app/src/main/res/layout/account.xml b/android/app/src/main/res/layout/account.xml
index 9ca5e6f75b..7f2e2fb598 100644
--- a/android/app/src/main/res/layout/account.xml
+++ b/android/app/src/main/res/layout/account.xml
@@ -42,6 +42,13 @@
android:lines="1"
android:text="@string/settings_account"
style="@style/SettingsExpandedHeader" />
+ <net.mullvad.mullvadvpn.ui.widget.InformationView android:id="@+id/device_name"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingHorizontal="@dimen/side_margin"
+ android:paddingVertical="@dimen/half_vertical_space"
+ mullvad:description="@string/device_name"
+ mullvad:whenMissing="hide" />
<net.mullvad.mullvadvpn.ui.widget.CopyableInformationView android:id="@+id/account_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 13faeb6a83..6c08df83ee 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -55,6 +55,7 @@
<string name="report_a_problem">Report a problem</string>
<string name="faqs_and_guides">FAQs &amp; Guides</string>
<string name="account_number">Account number</string>
+ <string name="device_name">Device name</string>
<string name="mullvad_account_number">Mullvad account number</string>
<string name="copied_mullvad_account_number">Copied Mullvad account number to
clipboard</string>