diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-06-16 10:22:47 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-06-18 11:53:28 +0200 |
| commit | 5453eece3a53c4cc45c8987a88789e43fb214912 (patch) | |
| tree | c36308988a46a5125949f47611e7f76cba21c27a /android/src/main | |
| parent | 335cc80d9347f43264765a3dd359eda83c782bc8 (diff) | |
| download | mullvadvpn-5453eece3a53c4cc45c8987a88789e43fb214912.tar.xz mullvadvpn-5453eece3a53c4cc45c8987a88789e43fb214912.zip | |
Update account history RPCs
Diffstat (limited to 'android/src/main')
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 } |
