Skip to content

Commit

Permalink
fix: fix bug where HA <98.1 would be incompatible with self.enabled c…
Browse files Browse the repository at this point in the history
…heck
  • Loading branch information
alandtse committed Sep 17, 2019
1 parent 52b700a commit a19de53
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 25 deletions.
42 changes: 30 additions & 12 deletions custom_components/alexa_media/alarm_control_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,11 @@ async def init(self):

async def async_added_to_hass(self):
"""Store register state change callback."""
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
# Register event handler on bus
self._listener = self.hass.bus.async_listen(('{}_{}'.format(
ALEXA_DOMAIN,
Expand All @@ -151,8 +154,11 @@ def _handle_event(self, event):
Used instead of polling.
"""
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
if 'push_activity' in event.data:
async_call_later(self.hass, 2, lambda _:
self.hass.async_create_task(
Expand All @@ -161,8 +167,11 @@ def _handle_event(self, event):
@util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS)
async def async_update(self):
"""Update Guard state."""
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
import json
_LOGGER.debug("%s: Refreshing %s", self.account, self.name)
state = None
Expand Down Expand Up @@ -202,14 +211,20 @@ async def async_alarm_disarm(self, code=None) -> None:
We use the arm_home state as Alexa does not have disarm state.
"""
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
await self.async_alarm_arm_home()

async def async_alarm_arm_home(self, code=None) -> None:
"""Send arm home command."""
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
await self.alexa_api.set_guard_state(self._login,
self._guard_entity_id,
"ARMED_STAY")
Expand All @@ -219,8 +234,11 @@ async def async_alarm_arm_home(self, code=None) -> None:
async def async_alarm_arm_away(self, code=None) -> None:
"""Send arm away command."""
# pylint: disable=unexpected-keyword-arg
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
await self.alexa_api.set_guard_state(self._login,
self._guard_entity_id,
"ARMED_AWAY")
Expand Down
17 changes: 12 additions & 5 deletions custom_components/alexa_media/media_player.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,11 @@ async def _handle_event(self, event):
is self.update will pull data from Amazon, while schedule_update
assumes the MediaClient state is already updated.
"""
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
if 'last_called_change' in event.data:
event_serial = event.data['last_called_change']['serialNumber']
if (event_serial == self.device_serial_number or
Expand Down Expand Up @@ -486,9 +489,13 @@ async def async_update(self):
every update. However, this quickly floods the network for every new
device added. This should only call refresh() to call the AlexaAPI.
"""
if (self._device is None or self.entity_id is None or
not self.enabled):
# Device has not initialized yet or is disabled
try:
if not self.enabled:
return
except AttributeError:
pass
if (self._device is None or self.entity_id is None):
# Device has not initialized yet
return
email = self._login.email
if email not in self.hass.data[DATA_ALEXAMEDIA]['accounts']:
Expand Down
28 changes: 20 additions & 8 deletions custom_components/alexa_media/switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,11 @@ def __init__(self,

async def async_added_to_hass(self):
"""Store register state change callback."""
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
# Register event handler on bus
self._listener = self.hass.bus.async_listen(
('{}_{}'.format(
Expand All @@ -152,8 +155,11 @@ def _handle_event(self, event):
This will update PUSH_MEDIA_QUEUE_CHANGE events to see if the switch
should be updated.
"""
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
if 'queue_state' in event.data:
queue_state = event.data['queue_state']
if (queue_state['dopplerId']
Expand All @@ -162,8 +168,11 @@ def _handle_event(self, event):
self.async_schedule_update_ha_state()

async def _set_switch(self, state, **kwargs):
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
success = await self._switch_function(state)
# if function returns success, make immediate state change
if success:
Expand Down Expand Up @@ -212,8 +221,11 @@ def should_poll(self):

async def async_update(self):
"""Update state."""
if not self.enabled:
return
try:
if not self.enabled:
return
except AttributeError:
pass
try:
self.async_schedule_update_ha_state()
except NoEntitySpecifiedError:
Expand Down

0 comments on commit a19de53

Please sign in to comment.