mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
fix(ble): filter bonded picker list to Meshtastic devices
BluetoothAdapter.bondedDevices returns every paired BT device on the phone (headphones, cars, watches, etc.). The picker's bondedBleFlow was mapping the full set into DeviceListEntry.Ble with no filter, leaking non-Meshtastic devices into the connection list. Apply the existing Meshtastic name pattern (getMeshtasticShortName()) at the use-case layer. Repository semantics are preserved so BleRadioTransport.findDevice() can still resolve a saved address regardless of name conventions. The active scan path (KableBleScanner) already filters by SERVICE_UUID and is unaffected. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
8823995648
commit
57c612abce
1 changed files with 8 additions and 1 deletions
|
|
@ -60,7 +60,14 @@ class AndroidGetDiscoveredDevicesUseCase(
|
|||
override fun invoke(showMock: Boolean): Flow<DiscoveredDevices> {
|
||||
val nodeDb = nodeRepository.nodeDBbyNum
|
||||
|
||||
val bondedBleFlow = bluetoothRepository.state.map { ble -> ble.bondedDevices.map { DeviceListEntry.Ble(it) } }
|
||||
// Filter out non-Meshtastic peripherals (headphones, cars, watches, etc.).
|
||||
// BluetoothAdapter.bondedDevices returns every bonded device on the phone, so we
|
||||
// must restrict the picker to entries whose advertised name matches the
|
||||
// Meshtastic firmware pattern (see MeshtasticBleConstants.BLE_NAME_PATTERN).
|
||||
val bondedBleFlow =
|
||||
bluetoothRepository.state.map { ble ->
|
||||
ble.bondedDevices.filter { it.getMeshtasticShortName() != null }.map { DeviceListEntry.Ble(it) }
|
||||
}
|
||||
|
||||
val processedTcpFlow =
|
||||
combine(networkRepository.resolvedList, recentAddressesDataSource.recentAddresses) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue