summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-03-26 12:19:27 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-23 10:30:24 +0000
commit3e8c45e2b8d270ec1e46a0487212e741c0f6db02 (patch)
tree4e6f599959aaabc8281d64d0967681c45d947533 /android
parent57ec63b3ccb64396ffa29c441f309dd93f872106 (diff)
downloadmullvadvpn-3e8c45e2b8d270ec1e46a0487212e741c0f6db02.tar.xz
mullvadvpn-3e8c45e2b8d270ec1e46a0487212e741c0f6db02.zip
Store selected relay location
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt25
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)
+ )
+ }
}