summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-06-16 10:22:47 +0200
committerDavid Lönnhager <david.l@mullvad.net>2021-06-18 11:53:28 +0200
commit5453eece3a53c4cc45c8987a88789e43fb214912 (patch)
treec36308988a46a5125949f47611e7f76cba21c27a /android/src/main
parent335cc80d9347f43264765a3dd359eda83c782bc8 (diff)
downloadmullvadvpn-5453eece3a53c4cc45c8987a88789e43fb214912.tar.xz
mullvadvpn-5453eece3a53c4cc45c8987a88789e43fb214912.zip
Update account history RPCs
Diffstat (limited to 'android/src/main')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Event.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt13
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt16
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/AccountCache.kt8
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryAdapter.kt10
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt11
8 files changed, 29 insertions, 35 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Event.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Event.kt
index faaba05d89..a5854232a8 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Event.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Event.kt
@@ -17,7 +17,7 @@ sealed class Event : Message.EventMessage() {
protected override val messageKey = MESSAGE_KEY
@Parcelize
- data class AccountHistory(val history: List<String>?) : Event()
+ data class AccountHistory(val history: String?) : Event()
@Parcelize
data class AppVersionInfo(val versionInfo: AppVersionInfoData?) : Event()
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt
index 8093cac415..27a93b0a2d 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt
@@ -54,7 +54,7 @@ sealed class Request : Message.RequestMessage() {
data class RegisterListener(val listener: Messenger) : Request()
@Parcelize
- data class RemoveAccountFromHistory(val account: String?) : Request()
+ object ClearAccountHistory : Request()
@Parcelize
data class RemoveCustomDnsServer(val address: InetAddress) : Request()
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
index bab7bcf3ce..4565844daa 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
@@ -52,7 +52,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) {
return getAccountData(daemonInterfaceAddress, accountToken)
}
- fun getAccountHistory(): ArrayList<String>? {
+ fun getAccountHistory(): String? {
return getAccountHistory(daemonInterfaceAddress)
}
@@ -92,8 +92,8 @@ class MullvadDaemon(val vpnService: MullvadVpnService) {
reconnect(daemonInterfaceAddress)
}
- fun removeAccountFromHistory(accountToken: String) {
- removeAccountFromHistory(daemonInterfaceAddress, accountToken)
+ fun clearAccountHistory() {
+ clearAccountHistory(daemonInterfaceAddress)
}
fun setAccount(accountToken: String?) {
@@ -159,7 +159,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) {
daemonInterfaceAddress: Long,
accountToken: String
): GetAccountDataResult
- private external fun getAccountHistory(daemonInterfaceAddress: Long): ArrayList<String>?
+ private external fun getAccountHistory(daemonInterfaceAddress: Long): String?
private external fun getWwwAuthToken(daemonInterfaceAddress: Long): String?
private external fun getCurrentLocation(daemonInterfaceAddress: Long): GeoIpLocation?
private external fun getCurrentVersion(daemonInterfaceAddress: Long): String?
@@ -169,10 +169,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) {
private external fun getVersionInfo(daemonInterfaceAddress: Long): AppVersionInfo?
private external fun getWireguardKey(daemonInterfaceAddress: Long): PublicKey?
private external fun reconnect(daemonInterfaceAddress: Long)
- private external fun removeAccountFromHistory(
- daemonInterfaceAddress: Long,
- accountToken: String
- )
+ private external fun clearAccountHistory(daemonInterfaceAddress: Long)
private external fun setAccount(daemonInterfaceAddress: Long, accountToken: String?)
private external fun setAllowLan(daemonInterfaceAddress: Long, allowLan: Boolean)
private external fun setAutoConnect(daemonInterfaceAddress: Long, alwaysOn: Boolean)
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt
index 5e6524e3a0..768b00e1b5 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt
@@ -42,7 +42,7 @@ class AccountCache(private val endpoint: ServiceEndpoint) {
val onAccountNumberChange = EventNotifier<String?>(null)
val onAccountExpiryChange = EventNotifier<DateTime?>(null)
- val onAccountHistoryChange = EventNotifier<List<String>>(listOf<String>())
+ val onAccountHistoryChange = EventNotifier<String?>(null)
val onLoginStatusChange = EventNotifier<LoginStatus?>(null)
var newlyCreatedAccount = false
@@ -104,10 +104,8 @@ class AccountCache(private val endpoint: ServiceEndpoint) {
invalidateAccountExpiry(request.expiry)
}
- registerHandler(Request.RemoveAccountFromHistory::class) { request ->
- request.account?.let { account ->
- removeAccountFromHistory(account)
- }
+ registerHandler(Request.ClearAccountHistory::class) { _ ->
+ clearAccountHistory()
}
}
}
@@ -162,9 +160,9 @@ class AccountCache(private val endpoint: ServiceEndpoint) {
}
}
- private fun removeAccountFromHistory(accountToken: String) {
- jobTracker.newBackgroundJob("removeAccountFromHistory $accountToken") {
- daemon.await().removeAccountFromHistory(accountToken)
+ private fun clearAccountHistory() {
+ jobTracker.newBackgroundJob("clearAccountHistory") {
+ daemon.await().clearAccountHistory()
fetchAccountHistory()
}
}
@@ -227,7 +225,7 @@ class AccountCache(private val endpoint: ServiceEndpoint) {
private fun fetchAccountHistory() {
jobTracker.newBackgroundJob("fetchHistory") {
- daemon.await().getAccountHistory()?.let { history ->
+ daemon.await().getAccountHistory().let { history ->
accountHistory = history
}
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
index 83f0ecc3ad..399490f04b 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
@@ -51,7 +51,7 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen), Na
accountLogin = view.findViewById<AccountLogin>(R.id.account_login).apply {
onLogin = { accountToken -> login(accountToken) }
- onRemoveFromHistory = { account -> accountCache.removeAccountFromHistory(account) }
+ onClearHistory = { -> accountCache.clearAccountHistory() }
}
view.findViewById<Button>(R.id.create_account)
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/AccountCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/AccountCache.kt
index e2c344f63f..9bf5942f4c 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/AccountCache.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/AccountCache.kt
@@ -11,7 +11,7 @@ import org.joda.time.DateTime
class AccountCache(private val connection: Messenger, eventDispatcher: EventDispatcher) {
val onAccountNumberChange = EventNotifier<String?>(null)
val onAccountExpiryChange = EventNotifier<DateTime?>(null)
- val onAccountHistoryChange = EventNotifier<List<String>>(listOf<String>())
+ val onAccountHistoryChange = EventNotifier<String?>(null)
val onLoginStatusChange = EventNotifier<LoginStatus?>(null)
private var accountHistory by onAccountHistoryChange.notifiable()
@@ -20,7 +20,7 @@ class AccountCache(private val connection: Messenger, eventDispatcher: EventDisp
init {
eventDispatcher.apply {
registerHandler(Event.AccountHistory::class) { event ->
- accountHistory = event.history ?: listOf<String>()
+ accountHistory = event.history
}
registerHandler(Event.LoginStatus::class) { event ->
@@ -54,8 +54,8 @@ class AccountCache(private val connection: Messenger, eventDispatcher: EventDisp
connection.send(request.message)
}
- fun removeAccountFromHistory(account: String) {
- connection.send(Request.RemoveAccountFromHistory(account).message)
+ fun clearAccountHistory() {
+ connection.send(Request.ClearAccountHistory.message)
}
fun onDestroy() {
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryAdapter.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryAdapter.kt
index caefcfe51f..48a05dd63e 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryAdapter.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountHistoryAdapter.kt
@@ -14,12 +14,12 @@ class AccountHistoryAdapter : Adapter<AccountHistoryHolder>() {
}
}
- var accountHistory by observable(listOf<String>()) { _, _, _ ->
+ var accountHistory by observable<String?>(null) { _, _, _ ->
notifyDataSetChanged()
}
var onSelectEntry: ((String) -> Unit)? = null
- var onRemoveEntry: ((String) -> Unit)? = null
+ var onRemoveEntry: (() -> Unit)? = null
var onChildFocusChanged: ((String, Boolean) -> Unit)? = null
override fun onCreateViewHolder(parentView: ViewGroup, type: Int): AccountHistoryHolder {
@@ -28,14 +28,14 @@ class AccountHistoryAdapter : Adapter<AccountHistoryHolder>() {
return AccountHistoryHolder(view, formatter).apply {
onSelect = { account -> onSelectEntry?.invoke(account) }
- onRemove = { account -> onRemoveEntry?.invoke(account) }
+ onRemove = { _ -> onRemoveEntry?.invoke() }
onFocusChanged = { account, hasFocus -> onChildFocusChanged?.invoke(account, hasFocus) }
}
}
override fun onBindViewHolder(holder: AccountHistoryHolder, position: Int) {
- holder.accountToken = accountHistory[position]
+ holder.accountToken = accountHistory ?: ""
}
- override fun getItemCount() = accountHistory.size
+ override fun getItemCount() = if (accountHistory !== null) 1 else 0
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt
index e4256a9dc5..aa3463eb94 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt
@@ -99,13 +99,12 @@ class AccountLogin : RelativeLayout {
val hasFocus
get() = focused
- var accountHistory by observable<List<String>?>(null) { _, _, history ->
- val entryCount = history?.size ?: 0
-
- historyHeight = entryCount * (historyEntryHeight + dividerHeight)
-
+ var accountHistory by observable<String?>(null) { _, _, history ->
if (history != null) {
+ historyHeight = historyEntryHeight + dividerHeight
historyAdapter.accountHistory = history
+ } else {
+ historyHeight = 0
}
}
@@ -123,7 +122,7 @@ class AccountLogin : RelativeLayout {
get() = input.onLogin
set(value) { input.onLogin = value }
- var onRemoveFromHistory: ((String) -> Unit)?
+ var onClearHistory: (() -> Unit)?
get() = historyAdapter.onRemoveEntry
set(value) { historyAdapter.onRemoveEntry = value }