Skip to content

Commit

Permalink
Hotfix life cycle event hooks couldn't be registered
Browse files Browse the repository at this point in the history
  • Loading branch information
limouren authored and cheungpat committed May 19, 2018
1 parent 91ca4ba commit dff4b7b
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
10 changes: 6 additions & 4 deletions skygear/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,11 +123,13 @@ def register_hook(self, name, func, *args, **kwargs):
log.debug("Registered hook '%s' to skygear!", name)

def register_event(self, name, func, *args, **kwargs):
if name in self.func_map['event']:
log.warning("Replacing previously registered event handler '%s'",
name)
event_funcs = self.func_map['event'].get(name)
if event_funcs is None:
event_funcs = []
self.func_map['event'][name] = event_funcs

event_funcs.append(func)

self.func_map['event'][name] = func
self._add_param('event', {
'name': name
})
Expand Down
12 changes: 9 additions & 3 deletions skygear/transmitter/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,17 @@ def call_func(self, ctx, kind, name, param):
@_wrap_result
def call_event_func(self, name, param):
try:
event_func = self._registry.get_func('event', name)
return self.event(event_func, param)
except KeyError as e:
event_funcs = self._registry.get_func('event', name)
except KeyError:
log.warning('Missing event func named "{}"'.format(name))

results = [self.event(event_func, param) for event_func in event_funcs]

if name == 'init':
return results[0]

return results

@_wrap_result
def call_provider(self, ctx, name, action, param):
obj = self._registry.get_provider(name)
Expand Down

0 comments on commit dff4b7b

Please sign in to comment.