private void Socket_DataReceived(object sender, dynamic data) { var type = data.Value <string>("type"); switch (type)//todo more from https://api.slack.com/rtm { case "message": case "message.channels": case "message.groups": case "message.im": case "message.mpim": MessageReceived?.Invoke(this, new MessageReceivedEventArgs(MakeMessageFromData(data))); break; case "reaction_added": ReactionAdded?.Invoke(this, GetReactionAddedEventArgs(data)); break; case "reaction_removed": ReactionRemoved?.Invoke(this, GetReactionAddedEventArgs(data)); break; case "star_added": StarAdded?.Invoke(this, GetReactionAddedEventArgs(data)); break; case "star_removed": StarRemoved?.Invoke(this, GetReactionAddedEventArgs(data)); break; case "pin_added": PinAdded?.Invoke(this, GetReactionAddedEventArgs(data)); break; case "pin_removed": PinRemoved?.Invoke(this, GetReactionAddedEventArgs(data)); break; case "team_join": UserJoined?.Invoke(this, new UserDataReceivedEventArgs(Team.Users.FirstOrDefault(x => x.Id == data.Value <string>("user")), null, Team)); break; case "user_typing": UserTyping?.Invoke(this, new UserDataReceivedEventArgs(Team.Users.FirstOrDefault(x => x.Id == data.Value <string>("user")), Team.Channels.FirstOrDefault(x => x.Id == data.Value <string>("channel")), Team)); break; case "presence_change": UserPresenceChanged?.Invoke(this, new UserPresenceChangeEventArgs(data.Value <string>("presence"), Team.Users.FirstOrDefault(x => x.Id == data.Value <string>("user")))); break; } }
void RemovePin(NodePin pin) { Pins.Remove(pin); if (pin.IsInput) { InputPins.Remove(pin); } else { OutputPins.Remove(pin); } PinRemoved.InvokeSafe(pin); pin.Connected -= OnPinConnected; TriggerChange(); }