diff --git a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt index 47b5a8555..231d0b523 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt @@ -68,6 +68,17 @@ class ChannelFragment : ScreenFragment("Channel"), Logging { private val model: UIViewModel by activityViewModels() + private val requestPermissionAndScanLauncher = + registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions -> + if (permissions.entries.all { it.value }) zxingScan() + } + + private val barcodeLauncher = registerForActivityResult(ScanContract()) { result -> + if (result.contents != null) { + model.setRequestChannelUrl(Uri.parse(result.contents)) + } + } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -369,16 +380,4 @@ class ChannelFragment : ScreenFragment("Channel"), Logging { } return ConfigProtos.Config.LoRaConfig.ModemPreset.UNRECOGNIZED } - - private val requestPermissionAndScanLauncher = - registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions -> - if (permissions.entries.all { it.value == true }) zxingScan() - } - - // Register zxing launcher and result handler - private val barcodeLauncher = registerForActivityResult(ScanContract()) { result -> - if (result.contents != null) { - model.setRequestChannelUrl(Uri.parse(result.contents)) - } - } } diff --git a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt index 66876feb0..929d010a8 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt @@ -62,6 +62,41 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { private val myActivity get() = requireActivity() as MainActivity + @SuppressLint("MissingPermission") + val associationResultLauncher = registerForActivityResult( + ActivityResultContracts.StartIntentSenderForResult() + ) { + it.data + ?.getParcelableExtra(CompanionDeviceManager.EXTRA_DEVICE) + ?.let { device -> + scanModel.onSelected( + myActivity, + BTScanModel.DeviceListEntry( + device.name, + "x${device.address}", + device.bondState == BluetoothDevice.BOND_BONDED + ) + ) + } + } + + private val requestLocationAndBackgroundLauncher = + registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions -> + if (permissions.entries.all { it.value }) { + // Older versions of android only need Location permission + if (myActivity.hasBackgroundPermission()) { + binding.provideLocationCheckbox.isChecked = true + } else requestBackgroundAndCheckLauncher.launch(myActivity.getBackgroundPermissions()) + } + } + + private val requestBackgroundAndCheckLauncher = + registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions -> + if (permissions.entries.all { it.value }) { + binding.provideLocationCheckbox.isChecked = true + } + } + private fun doFirmwareUpdate() { model.meshService?.let { service -> @@ -434,41 +469,6 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { } } - @SuppressLint("MissingPermission") - val associationResultLauncher = registerForActivityResult( - ActivityResultContracts.StartIntentSenderForResult() - ) { - it.data - ?.getParcelableExtra(CompanionDeviceManager.EXTRA_DEVICE) - ?.let { device -> - scanModel.onSelected( - myActivity, - BTScanModel.DeviceListEntry( - device.name, - "x${device.address}", - device.bondState == BluetoothDevice.BOND_BONDED - ) - ) - } - } - - private val requestLocationAndBackgroundLauncher = - registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions -> - if (permissions.entries.all { it.value == true }) { - // Older versions of android only need Location permission - if (myActivity.hasBackgroundPermission()) { - binding.provideLocationCheckbox.isChecked = true - } else requestBackgroundAndCheckLauncher.launch(myActivity.getBackgroundPermissions()) - } - } - - private val requestBackgroundAndCheckLauncher = - registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions -> - if (permissions.entries.all { it.value == true }) { - binding.provideLocationCheckbox.isChecked = true - } - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState)