diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-03-26 12:19:27 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-23 10:30:24 +0000 |
| commit | 3e8c45e2b8d270ec1e46a0487212e741c0f6db02 (patch) | |
| tree | 4e6f599959aaabc8281d64d0967681c45d947533 /android/src | |
| parent | 57ec63b3ccb64396ffa29c441f309dd93f872106 (diff) | |
| download | mullvadvpn-3e8c45e2b8d270ec1e46a0487212e741c0f6db02.tar.xz mullvadvpn-3e8c45e2b8d270ec1e46a0487212e741c0f6db02.zip | |
Store selected relay location
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt index 7b1673c448..5ca767c19e 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt @@ -1,5 +1,9 @@ package net.mullvad.mullvadvpn +import kotlinx.coroutines.launch +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope + import android.os.Bundle import android.support.v4.app.Fragment import android.support.v7.widget.LinearLayoutManager @@ -9,6 +13,10 @@ import android.view.View import android.view.ViewGroup import android.widget.ImageButton +import net.mullvad.mullvadvpn.model.Constraint +import net.mullvad.mullvadvpn.model.LocationConstraint +import net.mullvad.mullvadvpn.model.RelaySettingsUpdate +import net.mullvad.mullvadvpn.relaylist.RelayItem import net.mullvad.mullvadvpn.relaylist.RelayItemDividerDecoration import net.mullvad.mullvadvpn.relaylist.RelayList import net.mullvad.mullvadvpn.relaylist.RelayListAdapter @@ -39,6 +47,7 @@ class SelectLocationFragment : Fragment() { relayListAdapter.onSelect = { relayItem -> parentActivity.selectedRelayItem = relayItem + updateLocationConstraint(relayItem) close() } @@ -49,4 +58,20 @@ class SelectLocationFragment : Fragment() { addItemDecoration(RelayItemDividerDecoration(context!!)) } } + + private fun updateLocationConstraint(relayItem: RelayItem?) = + GlobalScope.launch(Dispatchers.Default) { + val parentActivity = activity as MainActivity + var constraint: Constraint<LocationConstraint> + + if (relayItem == null) { + constraint = Constraint.Any() + } else { + constraint = Constraint.Only(relayItem.location) + } + + parentActivity.asyncDaemon.await().updateRelaySettings( + RelaySettingsUpdate.RelayConstraintsUpdate(constraint) + ) + } } |
