public async Task Initialize(ActionDefinition actionDefinition, StreamDeckInboundActionEvent triggeringEvent) { if (this.ContextId != null || this.ActionDefinition != null) { throw new InvalidOperationException($"{nameof(Initialize)} may only be called once"); } this.ContextId = triggeringEvent.Context; this.ActionDefinition = actionDefinition; this.listener = connection.Listen <StreamDeck.Events.StreamDeckInboundActionEvent>(e => { if (e.Context == this.ContextId && e.Action.Equals(this.ActionDefinition.UUID, StringComparison.OrdinalIgnoreCase)) { return(ProcessEventsAsync(e)); } return(Task.CompletedTask); }); var handler = serviceProvider.GetRequiredService(this.ActionDefinition.Handler); Bind(handler); await ProcessEventsAsync(triggeringEvent); }
private Task ProcessEventsAsync(StreamDeckInboundActionEvent evnt) => eventManager.TriggerEvent(evnt);