summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-03-25 15:58:42 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-22 21:18:39 +0000
commit99977309a8bea1560516e2c67d24cff634f072cb (patch)
treed3e75bcbaf333dd4a3c4aa63a9e2208f1e5656ca /android
parentf51e43aaa4bc5fe7ee6d77d206acb22c5176818d (diff)
downloadmullvadvpn-99977309a8bea1560516e2c67d24cff634f072cb.tar.xz
mullvadvpn-99977309a8bea1560516e2c67d24cff634f072cb.zip
Replace fake relay list with real relay list
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt14
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt8
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt155
3 files changed, 27 insertions, 150 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
index f9eb6d9a29..355ed3ef7e 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
@@ -1,8 +1,10 @@
package net.mullvad.mullvadvpn
import kotlinx.coroutines.async
+import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.CompletableDeferred
+import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
@@ -10,6 +12,8 @@ import kotlinx.coroutines.Job
import android.os.Bundle
import android.support.v4.app.FragmentActivity
+import net.mullvad.mullvadvpn.relaylist.RelayList
+
class MainActivity : FragmentActivity() {
val activityCreated = CompletableDeferred<Unit>()
@@ -17,6 +21,11 @@ class MainActivity : FragmentActivity() {
val daemon
get() = runBlocking { asyncDaemon.await() }
+ var asyncRelayList: Deferred<RelayList> = fetchRelayList()
+ private set
+ val relayList: RelayList
+ get() = runBlocking { asyncRelayList.await() }
+
var selectedRelayItemCode: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
@@ -31,6 +40,7 @@ class MainActivity : FragmentActivity() {
}
override fun onDestroy() {
+ asyncRelayList.cancel()
asyncDaemon.cancel()
super.onDestroy()
@@ -48,4 +58,8 @@ class MainActivity : FragmentActivity() {
ApiRootCaFile().extract(this@MainActivity)
MullvadDaemon()
}
+
+ private fun fetchRelayList() = GlobalScope.async(Dispatchers.Default) {
+ RelayList(asyncDaemon.await().getRelayLocations())
+ }
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt
index 369e4d9289..320a13eec8 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt
@@ -10,6 +10,7 @@ import android.view.ViewGroup
import android.widget.ImageButton
import net.mullvad.mullvadvpn.relaylist.RelayItemDividerDecoration
+import net.mullvad.mullvadvpn.relaylist.RelayList
import net.mullvad.mullvadvpn.relaylist.RelayListAdapter
class SelectLocationFragment : Fragment() {
@@ -32,11 +33,12 @@ class SelectLocationFragment : Fragment() {
}
private fun configureRelayList(relayList: RecyclerView) {
- val parentActivity = activity as MainActivity?
- val relayListAdapter = RelayListAdapter(parentActivity?.selectedRelayItemCode)
+ val parentActivity = activity as MainActivity
+ val relayListAdapter =
+ RelayListAdapter(parentActivity.relayList, parentActivity.selectedRelayItemCode)
relayListAdapter.onSelect = { relayItemCode ->
- parentActivity?.selectedRelayItemCode = relayItemCode
+ parentActivity.selectedRelayItemCode = relayItemCode
close()
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt
index 583df4899c..53eaf4e86e 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt
@@ -9,8 +9,10 @@ import android.view.ViewGroup
import net.mullvad.mullvadvpn.R
-class RelayListAdapter(private val initialSelectedItemCode: String?) : Adapter<RelayItemHolder>() {
- private val relayList = fakeRelayList
+class RelayListAdapter(
+ private val relayList: RelayList,
+ private val initialSelectedItemCode: String?
+) : Adapter<RelayItemHolder>() {
private val activeIndices = LinkedList<WeakReference<RelayListAdapterPosition>>()
private var selectedItem: RelayItem? = null
private var selectedItemHolder: RelayItemHolder? = null
@@ -34,7 +36,7 @@ class RelayListAdapter(private val initialSelectedItemCode: String?) : Adapter<R
override fun onBindViewHolder(holder: RelayItemHolder, position: Int) {
var remaining = position
- for (country in relayList) {
+ for (country in relayList.countries) {
val itemOrCount = country.getItem(remaining)
when (itemOrCount) {
@@ -47,7 +49,8 @@ class RelayListAdapter(private val initialSelectedItemCode: String?) : Adapter<R
}
}
- override fun getItemCount() = relayList.map { country -> country.visibleItemCount }.sum()
+ override fun getItemCount() =
+ relayList.countries.map { country -> country.visibleItemCount }.sum()
fun selectItem(item: RelayItem?, holder: RelayItemHolder?) {
selectedItemHolder?.selected = false
@@ -106,7 +109,7 @@ class RelayListAdapter(private val initialSelectedItemCode: String?) : Adapter<R
private fun findRelayItemByCode(code: String): RelayItem? {
val codeParts = code.split('-')
- for (country in relayList) {
+ for (country in relayList.countries) {
if (country.code == codeParts[0]) {
if (codeParts.size == 1) {
return country
@@ -125,145 +128,3 @@ class RelayListAdapter(private val initialSelectedItemCode: String?) : Adapter<R
return null
}
}
-
-val fakeRelayList = listOf(
- RelayCountry(
- "Australia",
- "au",
- false,
- listOf(
- RelayCity(
- "Brisbane",
- "au-bne",
- false,
- listOf(Relay("au-bne-001"))
- ),
- RelayCity(
- "Melbourne",
- "au-mel",
- false,
- listOf(Relay("au-mel-002"), Relay("au-mel-003"), Relay("au-mel-004"))
- ),
- RelayCity(
- "Perth",
- "au-per",
- false,
- listOf(Relay("au-per-001"))
- ),
- RelayCity(
- "Sydney",
- "au-syd",
- false,
- listOf(
- Relay("au1-wireguard"),
- Relay("au-syd-001"),
- Relay("au-syd-002"),
- Relay("au-mel-003")
- )
- )
- )
- ),
- RelayCountry(
- "South Africa",
- "za",
- false,
- listOf(
- RelayCity(
- "Johannesburg",
- "za-jnb",
- false,
- listOf(Relay("za-jnb-001"))
- )
- )
- ),
- RelayCountry(
- "Sweden",
- "se",
- false,
- listOf(
- RelayCity(
- "Gothenburg",
- "se-got",
- false,
- listOf(
- Relay("se3-wireguard"),
- Relay("se5-wireguard"),
- Relay("se-got-001"),
- Relay("se-got-002"),
- Relay("se-got-003"),
- Relay("se-got-004"),
- Relay("se-got-005"),
- Relay("se-got-006"),
- Relay("se-got-007")
- )
- ),
- RelayCity(
- "Helsingborg",
- "se-hel",
- false,
- listOf(
- Relay("se-hel-001"),
- Relay("se-hel-002"),
- Relay("se-hel-003"),
- Relay("se-hel-004"),
- Relay("se-hel-007"),
- Relay("se-hel-008")
- )
- ),
- RelayCity(
- "Malmö",
- "se-mma",
- false,
- listOf(
- Relay("se4-wireguard"),
- Relay("se-mma-001"),
- Relay("se-mma-002"),
- Relay("se-mma-003"),
- Relay("se-mma-004"),
- Relay("se-mma-005"),
- Relay("se-mma-006"),
- Relay("se-mma-007"),
- Relay("se-mma-008"),
- Relay("se-mma-009"),
- Relay("se-mma-010")
- )
- ),
- RelayCity(
- "Stockholm",
- "se-sto",
- false,
- listOf(
- Relay("se2-wireguard"),
- Relay("se6-wireguard"),
- Relay("se7-wireguard"),
- Relay("se8-wireguard"),
- Relay("se-sto-001"),
- Relay("se-sto-002"),
- Relay("se-sto-003"),
- Relay("se-sto-004"),
- Relay("se-sto-005"),
- Relay("se-sto-006"),
- Relay("se-sto-007"),
- Relay("se-sto-008"),
- Relay("se-sto-009"),
- Relay("se-sto-010"),
- Relay("se-sto-011"),
- Relay("se-sto-012"),
- Relay("se-sto-013"),
- Relay("se-sto-014"),
- Relay("se-sto-015"),
- Relay("se-sto-016"),
- Relay("se-sto-017"),
- Relay("se-sto-018"),
- Relay("se-sto-019"),
- Relay("se-sto-020"),
- Relay("se-sto-021"),
- Relay("se-sto-022"),
- Relay("se-sto-023"),
- Relay("se-sto-024"),
- Relay("se-sto-025")
- )
- )
- )
- )
-)