private void postMessage(TextBox textbox, bool newText) { var postText = textbox.Text; textbox.Text = string.Empty; if (string.IsNullOrEmpty(postText)) { return; } var target = currentChannel; if (target == null) { return; } if (!api.IsLoggedIn) { target.AddNewMessages(new ErrorMessage("Please login to participate in chat!")); return; } if (postText[0] == '/') { // TODO: handle commands target.AddNewMessages(new ErrorMessage("Chat commands are not supported yet!")); return; } var message = new LocalEchoMessage { Sender = api.LocalUser.Value, Timestamp = DateTimeOffset.Now, TargetType = TargetType.Channel, //TODO: read this from channel TargetId = target.Id, Content = postText }; var req = new PostMessageRequest(message); target.AddLocalEcho(message); req.Failure += e => target.ReplaceMessage(message, null); req.Success += m => target.ReplaceMessage(message, m); api.Queue(req); }
private void postMessage(TextBox textbox, bool newText) { var postText = textbox.Text; textbox.Text = string.Empty; if (string.IsNullOrWhiteSpace(postText)) { return; } var target = currentChannel; if (target == null) { return; } if (!api.IsLoggedIn) { target.AddNewMessages(new ErrorMessage("Please login to participate in chat!")); return; } bool isAction = false; if (postText[0] == '/') { string[] parameters = postText.Substring(1).Split(new[] { ' ' }, 2); string command = parameters[0]; string content = parameters.Length == 2 ? parameters[1] : string.Empty; switch (command) { case "me": if (string.IsNullOrWhiteSpace(content)) { currentChannel.AddNewMessages(new ErrorMessage("Usage: /me [action]")); return; } isAction = true; postText = content; break; case "help": currentChannel.AddNewMessages(new InfoMessage("Supported commands: /help, /me [action]")); return; default: currentChannel.AddNewMessages(new ErrorMessage($@"""/{command}"" is not supported! For a list of supported commands see /help")); return; } } var message = new LocalEchoMessage { Sender = api.LocalUser.Value, Timestamp = DateTimeOffset.Now, TargetType = TargetType.Channel, //TODO: read this from channel TargetId = target.Id, IsAction = isAction, Content = postText }; var req = new PostMessageRequest(message); target.AddLocalEcho(message); req.Failure += e => target.ReplaceMessage(message, null); req.Success += m => target.ReplaceMessage(message, m); api.Queue(req); }