diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-03-25 15:58:42 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-22 21:18:39 +0000 |
| commit | 99977309a8bea1560516e2c67d24cff634f072cb (patch) | |
| tree | d3e75bcbaf333dd4a3c4aa63a9e2208f1e5656ca /android/src | |
| parent | f51e43aaa4bc5fe7ee6d77d206acb22c5176818d (diff) | |
| download | mullvadvpn-99977309a8bea1560516e2c67d24cff634f072cb.tar.xz mullvadvpn-99977309a8bea1560516e2c67d24cff634f072cb.zip | |
Replace fake relay list with real relay list
Diffstat (limited to 'android/src')
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") - ) - ) - ) - ) -) |
