private static ChatUserMessage Parse(ChatUser fromUser, string text, IList <ChatUser> allUsers, bool ignoreTagAndUsers) { List <string> tags = new List <string>(); List <ChatUser> toUsers = new List <ChatUser>(); if (!ignoreTagAndUsers) { // If the message is tagged, send to all users, don't even parse usernames if (TryGetTags(text, out tags, out text)) { } else { toUsers = GetWhisperUsers(text, allUsers, out text); } } ChatUserMessage message = null; if (MatchesCommand(text, Commands.IMAGEURL)) { string imageUrl = RemoveCommand(text, Commands.IMAGEURL); message = new ImageUrlChatMessage { ImageUrl = imageUrl }; } else if (MatchesCommand(text, Commands.WEB)) { string url = RemoveCommand(text, Commands.WEB); message = new WebUrlChatMessage { Url = url }; } else if (MatchesCommand(text, Commands.STATUS_UPDATE)) { string status = RemoveCommand(text, Commands.STATUS_UPDATE); message = new UserStatusMessage { Text = status }; } else if (MatchesCommand(text, Commands.ASCII)) { string asciiText = RemoveCommand(text, Commands.ASCII); message = new ASCIIChatMessage { Text = asciiText }; } else if (MatchesCommand(text, Commands.XAML)) { string xaml = RemoveCommand(text, Commands.XAML); message = new XamlChatMessage { Xaml = xaml }; } else if (MatchesCommand(text, Commands.MEME)) { string memeText = RemoveCommand(text, Commands.MEME); message = MemeChatMessage.FromString(memeText); } else if (MatchesCommand(text, Commands.POLL)) { string pollText = RemoveCommand(text, Commands.POLL); message = PollMessage.FromString(pollText); } else if (MatchesCommand(text, Commands.LINK) || HyperlinkUtility.IsHyperlink(text)) { string url = RemoveCommand(text, Commands.LINK); message = new HyperlinkChatMessage(url); } else if (MatchesCommand(text, Commands.VIDEOURL)) { string url = RemoveCommand(text, Commands.VIDEOURL); if (url.Contains("https://")) { url = url.Replace("https://", "http://"); } message = new VideoUrlChatMessage { VideoUrl = url }; } else if (MatchesCommand(text, Commands.WHITEBOARD) || text == "/" + Commands.WHITEBOARD) { if (text == "/" + Commands.WHITEBOARD) { text += " "; } string url = RemoveCommand(text, Commands.WHITEBOARD); message = new WhiteboardChatMessage { ImageUrl = url }; } else { message = new NormalChatUserMessage { Text = text }; } message.ToUsers = toUsers; message.FromUser = fromUser; message.Tags = tags; return(message); }
/// <summary> /// Send drawing response to a message. Points will be drawn on the 'messageToDrawOn' /// </summary> public void SendWhiteboardData(WhiteboardChatMessage messageToDrawOn, WhiteboardEntry entry) { _chatProxy.SendWhiteboardData(messageToDrawOn, entry); }