Dan Ballard pushed to branch tor-browser-128.9.0esr-14.5-1 at The Tor Project / Applications / Tor Browser

Commits:

2 changed files:

Changes:

  • mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistFragment.kt
    ... ... @@ -47,6 +47,8 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler {
    47 47
         private var _binding: FragmentTorConnectionAssistBinding? = null
    
    48 48
         private val binding get() = _binding!!
    
    49 49
     
    
    50
    +    private lateinit var regionDropDownSpinnerAdapter: ArrayAdapter<String>
    
    51
    +
    
    50 52
         override fun onCreateView(
    
    51 53
             inflater: LayoutInflater,
    
    52 54
             container: ViewGroup?,
    
    ... ... @@ -127,7 +129,7 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler {
    127 129
             setTorConnectImage(screen)
    
    128 130
             setTitle(screen)
    
    129 131
             setQuickStart(screen)
    
    130
    -        setCountryDropDown(screen)
    
    132
    +        updateRegionDropdown(screen)
    
    131 133
             setButton1(screen)
    
    132 134
             setButton2(screen)
    
    133 135
             setSplashLogo(screen)
    
    ... ... @@ -203,19 +205,18 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler {
    203 205
             }
    
    204 206
         }
    
    205 207
     
    
    206
    -    private fun setCountryDropDown(screen: ConnectAssistUiState) {
    
    208
    +    private fun updateRegionDropdown(screen: ConnectAssistUiState) {
    
    207 209
             if (screen.regionDropDownVisible) {
    
    208
    -            val spinnerAdapter: ArrayAdapter<String> = initializeSpinner()
    
    209 210
                 if (binding.countryDropDown.isEmpty()) {
    
    210
    -                populateRegionDropDown(spinnerAdapter)
    
    211
    -                setOnItemSelectedListener()
    
    211
    +                regionDropDownSpinnerAdapter = initializeSpinner()
    
    212
    +                torConnectionAssistViewModel.fetchRegionNames()
    
    212 213
                 }
    
    213 214
     
    
    214
    -            setFirstItemInCountryDropDown(spinnerAdapter, getString(screen.regionDropDownDefaultItem))
    
    215
    +            setFirstItemInCountryDropDown(getString(screen.regionDropDownDefaultItem))
    
    215 216
     
    
    216 217
                 if (screen == ConnectAssistUiState.ChooseRegion || screen == ConnectAssistUiState.ConfirmRegion || screen == ConnectAssistUiState.RegionNotFound) {
    
    217 218
                     torConnectionAssistViewModel.selectDefaultRegion()
    
    218
    -                binding.countryDropDown.setSelection(spinnerAdapter.getPosition(torConnectionAssistViewModel.selectedCountryCode.value))
    
    219
    +                setDropDownSelectionToSelectedCountryCode()
    
    219 220
                 }
    
    220 221
     
    
    221 222
                 binding.unblockTheInternetInCountryDescription.visibility = View.VISIBLE
    
    ... ... @@ -226,14 +227,23 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler {
    226 227
             }
    
    227 228
         }
    
    228 229
     
    
    229
    -    private fun setFirstItemInCountryDropDown(
    
    230
    -        spinnerAdapter: ArrayAdapter<String>,
    
    231
    -        item: String,
    
    232
    -    ) {
    
    233
    -        if (!spinnerAdapter.isEmpty) {
    
    234
    -            spinnerAdapter.remove(spinnerAdapter.getItem(0))
    
    230
    +    private fun setDropDownSelectionToSelectedCountryCode() {
    
    231
    +        binding.countryDropDown.setSelection(
    
    232
    +            indexOfSelectedCountryCode(),
    
    233
    +        )
    
    234
    +    }
    
    235
    +
    
    236
    +    private fun indexOfSelectedCountryCode() : Int {
    
    237
    +        return torConnectionAssistViewModel.regionCodeNameMap.value?.keys?.indexOf(
    
    238
    +            torConnectionAssistViewModel.selectedCountryCode.value,
    
    239
    +        )?.plus(1) ?: 0
    
    240
    +    }
    
    241
    +
    
    242
    +    private fun setFirstItemInCountryDropDown(item: String) {
    
    243
    +        if (!regionDropDownSpinnerAdapter.isEmpty) {
    
    244
    +            regionDropDownSpinnerAdapter.remove(regionDropDownSpinnerAdapter.getItem(0))
    
    235 245
             }
    
    236
    -        spinnerAdapter.insert(item, 0)
    
    246
    +        regionDropDownSpinnerAdapter.insert(item, 0)
    
    237 247
         }
    
    238 248
     
    
    239 249
         private fun initializeSpinner(): ArrayAdapter<String> {
    
    ... ... @@ -245,26 +255,6 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler {
    245 255
                 )
    
    246 256
             spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    
    247 257
             binding.countryDropDown.adapter = spinnerAdapter
    
    248
    -        return spinnerAdapter
    
    249
    -    }
    
    250
    -
    
    251
    -    private fun populateRegionDropDown(spinnerAdapter: ArrayAdapter<String>) {
    
    252
    -        torConnectionAssistViewModel.fetchRegionNames()
    
    253
    -        viewLifecycleOwner.lifecycleScope.launch {
    
    254
    -            repeatOnLifecycle(Lifecycle.State.STARTED) {
    
    255
    -                torConnectionAssistViewModel.regionCodeNameMap.collect {
    
    256
    -                    Log.d(TAG, "regionCodeNameMap: $it")
    
    257
    -                    if (it != null) {
    
    258
    -                        spinnerAdapter.clear()
    
    259
    -                        spinnerAdapter.add(getString(torConnectionAssistViewModel.torConnectScreen.value.regionDropDownDefaultItem))
    
    260
    -                        spinnerAdapter.addAll(it.values)
    
    261
    -                    }
    
    262
    -                }
    
    263
    -            }
    
    264
    -        }
    
    265
    -    }
    
    266
    -
    
    267
    -    private fun setOnItemSelectedListener() {
    
    268 258
             binding.countryDropDown.onItemSelectedListener =
    
    269 259
                 object : AdapterView.OnItemSelectedListener {
    
    270 260
                     override fun onItemSelected(
    
    ... ... @@ -279,6 +269,20 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler {
    279 269
     
    
    280 270
                     override fun onNothingSelected(parent: AdapterView<*>?) {}
    
    281 271
                 }
    
    272
    +
    
    273
    +        viewLifecycleOwner.lifecycleScope.launch {
    
    274
    +            repeatOnLifecycle(Lifecycle.State.STARTED) {
    
    275
    +                torConnectionAssistViewModel.regionCodeNameMap.collect {
    
    276
    +                    if (it != null) {
    
    277
    +                        spinnerAdapter.clear()
    
    278
    +                        spinnerAdapter.add(getString(torConnectionAssistViewModel.torConnectScreen.value.regionDropDownDefaultItem))
    
    279
    +                        spinnerAdapter.addAll(it.values)
    
    280
    +                    }
    
    281
    +                }
    
    282
    +            }
    
    283
    +        }
    
    284
    +
    
    285
    +        return spinnerAdapter
    
    282 286
         }
    
    283 287
     
    
    284 288
         private fun setButton1(screen: ConnectAssistUiState) {
    

  • mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistViewModel.kt
    ... ... @@ -49,13 +49,14 @@ class TorConnectionAssistViewModel(
    49 49
     
    
    50 50
         fun fetchRegionNames() {
    
    51 51
             torAndroidIntegration.regionNamesGet { regionNames : GeckoBundle? ->
    
    52
    +            Log.d(TAG, "fetchRegionNames() returned $regionNames")
    
    52 53
                 if (regionNames != null) {
    
    53 54
                     val codes: Array<String> = regionNames.keys()
    
    54 55
                     val regions = mutableMapOf<String, String>()
    
    55 56
                     for (code in codes) {
    
    56 57
                         regions[code] = regionNames.getString(code)
    
    57 58
                     }
    
    58
    -                regionCodeNameMap.value = regions
    
    59
    +                regionCodeNameMap.value = regions.toSortedMap(compareBy<String> { regions[it] }.thenBy { it })
    
    59 60
                 }
    
    60 61
             }
    
    61 62
         }