This commit is contained in:
tgermain 2019-07-17 21:05:26 +02:00 committed by Aaron Bach
parent a012c61762
commit 60ca8b95a4

View File

@ -288,22 +288,30 @@ class SeventeenTrackData:
if not self.show_delivered: if not self.show_delivered:
packages = [p for p in packages if p.status != VALUE_DELIVERED] packages = [p for p in packages if p.status != VALUE_DELIVERED]
packages_map = {p.tracking_number: p for p in packages}
# Add new packages: # Add new packages:
to_add = set(packages) - set(self.packages)
already_tracked_nbr = [p.tracking_number for p in self.packages]
received_tracked_nbr = [p.tracking_number for p in packages]
to_add = set(received_tracked_nbr) - set(already_tracked_nbr)
_LOGGER.debug('Will add new tracking numbers: %s', to_add)
if self.packages and to_add: if self.packages and to_add:
self._async_add_entities([ self._async_add_entities([
SeventeenTrackPackageSensor(self, package) SeventeenTrackPackageSensor(self,
for package in to_add packages_map[tracking_number])
for tracking_number in to_add
], True) ], True)
# Remove archived packages from the entity registry: # Remove archived packages from the entity registry:
to_remove = set(self.packages) - set(packages) to_remove = set(received_tracked_nbr) - set(already_tracked_nbr)
_LOGGER.debug('Will remove tracking number: %s', to_remove)
reg = await self._hass.helpers.entity_registry.async_get_registry() reg = await self._hass.helpers.entity_registry.async_get_registry()
for package in to_remove: for tracking_number in to_remove:
entity_id = reg.async_get_entity_id( entity_id = reg.async_get_entity_id(
'sensor', 'seventeentrack', 'sensor', 'seventeentrack',
ENTITY_ID_TEMPLATE.format( ENTITY_ID_TEMPLATE.format(
self.account_id, package.tracking_number)) self.account_id, tracking_number))
if not entity_id: if not entity_id:
continue continue
self._hass.async_create_task(reg.async_remove(entity_id)) self._hass.async_create_task(reg.async_remove(entity_id))