diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-03-25 16:32:32 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-22 21:18:40 +0000 |
| commit | 70ce3664e0e5b2b643181a4ce5e7685639cc9eed (patch) | |
| tree | 051ff21120c1693e6a844469a62fe3b9405de9f0 | |
| parent | 99977309a8bea1560516e2c67d24cff634f072cb (diff) | |
| download | mullvadvpn-70ce3664e0e5b2b643181a4ce5e7685639cc9eed.tar.xz mullvadvpn-70ce3664e0e5b2b643181a4ce5e7685639cc9eed.zip | |
Store reference to relay item instead of its code
6 files changed, 9 insertions, 51 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt index 355ed3ef7e..b68671afbd 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt @@ -12,6 +12,7 @@ import kotlinx.coroutines.Job import android.os.Bundle import android.support.v4.app.FragmentActivity +import net.mullvad.mullvadvpn.relaylist.RelayItem import net.mullvad.mullvadvpn.relaylist.RelayList class MainActivity : FragmentActivity() { @@ -26,7 +27,7 @@ class MainActivity : FragmentActivity() { val relayList: RelayList get() = runBlocking { asyncRelayList.await() } - var selectedRelayItemCode: String? = null + var selectedRelayItem: RelayItem? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt index 320a13eec8..7b1673c448 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt @@ -35,10 +35,10 @@ class SelectLocationFragment : Fragment() { private fun configureRelayList(relayList: RecyclerView) { val parentActivity = activity as MainActivity val relayListAdapter = - RelayListAdapter(parentActivity.relayList, parentActivity.selectedRelayItemCode) + RelayListAdapter(parentActivity.relayList, parentActivity.selectedRelayItem) - relayListAdapter.onSelect = { relayItemCode -> - parentActivity.selectedRelayItemCode = relayItemCode + relayListAdapter.onSelect = { relayItem -> + parentActivity.selectedRelayItem = relayItem close() } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt index 182a0ae3e5..a5e1d5cce8 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt @@ -47,6 +47,4 @@ class RelayCity( } fun getRelayCount(): Int = relays.size - - fun findRelayByCode(code: String): RelayItem? = relays.find { relay -> relay.code == code } } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt index ab78172b51..80b63875d5 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt @@ -45,18 +45,4 @@ class RelayCountry( } fun getRelayCount(): Int = cities.map { city -> city.getRelayCount() }.sum() - - fun findRelayItemByCode(cityCode: String, relayCode: String?): RelayItem? { - for (city in cities) { - if (city.code == cityCode) { - if (relayCode != null) { - return city.findRelayByCode("$cityCode-$relayCode") - } else { - return city - } - } - } - - return null - } } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt index 45374f6f84..a70ac13eaa 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt @@ -8,7 +8,7 @@ class RelayList { val cities = country.cities.map { city -> val relays = city.relays.map { relay -> Relay(relay.hostname) } - RelayCity(city.name, "${country.code}-${city.code}", false, relays) + RelayCity(city.name, city.code, false, relays) } RelayCountry(country.name, country.code, false, cities) 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 53eaf4e86e..de3336a4ea 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListAdapter.kt @@ -11,17 +11,12 @@ import net.mullvad.mullvadvpn.R class RelayListAdapter( private val relayList: RelayList, - private val initialSelectedItemCode: String? + private var selectedItem: RelayItem? ) : Adapter<RelayItemHolder>() { private val activeIndices = LinkedList<WeakReference<RelayListAdapterPosition>>() - private var selectedItem: RelayItem? = null private var selectedItemHolder: RelayItemHolder? = null - var onSelect: ((String?) -> Unit)? = null - - init { - initialSelectedItemCode?.let { code -> selectedItem = findRelayItemByCode(code) } - } + var onSelect: ((RelayItem?) -> Unit)? = null override fun onCreateViewHolder(parentView: ViewGroup, type: Int): RelayItemHolder { val inflater = LayoutInflater.from(parentView.context) @@ -59,7 +54,7 @@ class RelayListAdapter( selectedItemHolder = holder selectedItemHolder?.apply { selected = true } - onSelect?.invoke(item?.code) + onSelect?.invoke(item) } fun expandItem(itemIndex: RelayListAdapterPosition, childCount: Int) { @@ -105,26 +100,4 @@ class RelayListAdapter( holder.selected = false } } - - private fun findRelayItemByCode(code: String): RelayItem? { - val codeParts = code.split('-') - - for (country in relayList.countries) { - if (country.code == codeParts[0]) { - if (codeParts.size == 1) { - return country - } else { - var relayCode: String? = null - - if (codeParts.size == 3) { - relayCode = codeParts[2] - } - - return country.findRelayItemByCode("${codeParts[0]}-${codeParts[1]}", relayCode) - } - } - } - - return null - } } |
