Avoid some data merges in the bluetooth remote scanners when nothing has changed (#85270)

This commit is contained in:
J. Nick Koston 2023-01-05 15:22:14 -10:00 committed by GitHub
parent c4d03088c0
commit 1fbdb80430
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -297,17 +297,26 @@ class BaseHaRemoteScanner(BaseHaScanner):
and len(prev_device.name) > len(local_name) and len(prev_device.name) > len(local_name)
): ):
local_name = prev_device.name local_name = prev_device.name
if prev_advertisement.service_uuids: if service_uuids and service_uuids != prev_advertisement.service_uuids:
service_uuids = list( service_uuids = list(
set(service_uuids + prev_advertisement.service_uuids) set(service_uuids + prev_advertisement.service_uuids)
) )
if prev_advertisement.service_data: elif not service_uuids:
service_uuids = prev_advertisement.service_uuids
if service_data and service_data != prev_advertisement.service_data:
service_data = {**prev_advertisement.service_data, **service_data} service_data = {**prev_advertisement.service_data, **service_data}
if prev_advertisement.manufacturer_data: elif not service_data:
service_data = prev_advertisement.service_data
if (
manufacturer_data
and manufacturer_data != prev_advertisement.manufacturer_data
):
manufacturer_data = { manufacturer_data = {
**prev_advertisement.manufacturer_data, **prev_advertisement.manufacturer_data,
**manufacturer_data, **manufacturer_data,
} }
elif not manufacturer_data:
manufacturer_data = prev_advertisement.manufacturer_data
advertisement_data = AdvertisementData( advertisement_data = AdvertisementData(
local_name=None if local_name == "" else local_name, local_name=None if local_name == "" else local_name,