private async void SendMessage(string text, bool closing = false) { try { if (!Client.Connected) { await Client.ConnectAsync("eubfwcf.cloudapp.net", 700); } var imageUrl = Kernel.ProfilePicture; if (string.IsNullOrEmpty(imageUrl)) { imageUrl = "http://i.epvpimg.com/2Wrnc.png"; } var entry2 = new ChatEntryJson(imageUrl, text, Kernel.CustomName); var json = JsonConvert.SerializeObject(entry2); var buffer = Encoding.UTF8.GetBytes(json); var entryJson = await JsonConvert.DeserializeObjectAsync <ChatEntryJson>(json); var entry = new ChatEntry(entryJson.ImageUrl, entryJson.Text, entryJson.Username, true); await Stream.WriteAsync(buffer, 0, buffer.Length); await Stream.FlushAsync(); var panel = new StackPanel { MaxWidth = Kernel.UI.Width, Orientation = Orientation.Horizontal, HorizontalAlignment = HorizontalAlignment.Right }; var block2 = new TextBlock { TextWrapping = TextWrapping.Wrap, Text = " ", VerticalAlignment = VerticalAlignment.Center }; panel.Children.Add(entry.Text); panel.Children.Add(block2); panel.Children.Add(entry.Img); ChatBox.Children.Add(panel); ScrollViewer.ScrollToEnd(); } catch { if (closing) { return; } MessageBox.Show("Failed to send the message. Server did not respond", "Fail"); } }
private async void Window_Loaded(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(Kernel.FacebookName) && string.IsNullOrEmpty(Kernel.TwitterUsername)) { MessageBox.Show("You have to login to facebook or twitter first so we can identify you."); Close(); return; } try { Client.Connect("eubfwcf.cloudapp.net", 700); Stream = Client.GetStream(); SendMessage("Connected!"); while (true) { try { var data = new byte[4096]; var bytes = await Stream.ReadAsync(data, 0, data.Length); var json = Encoding.UTF8.GetString(data, 0, bytes).Trim().Replace("\0", string.Empty); var j = json.Split('}')[0] + "}"; var entryJson = await JsonConvert.DeserializeObjectAsync <ChatEntryJson>(j); if (entryJson == null) { continue; } var entry = new ChatEntry(entryJson.ImageUrl, entryJson.Text, entryJson.Username, false); if (entry.UserName.Text == Kernel.CustomName) { continue; } await Dispatcher.BeginInvoke(new Action(() => { SoundThingy.Stop(); SoundThingy.Position = TimeSpan.Zero; SoundThingy.Play(); var panel = new StackPanel { MaxWidth = Kernel.UI.Width, Orientation = Orientation.Horizontal, Background = new SolidColorBrush(Color.FromRgb(194, 224, 224)) }; var block = new TextBlock { Text = " said: ", VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Left, TextWrapping = TextWrapping.Wrap }; var block2 = new TextBlock { Text = " ", VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Left, TextWrapping = TextWrapping.Wrap }; panel.Children.Add(entry.Img); panel.Children.Add(block2); panel.Children.Add(entry.UserName); panel.Children.Add(block); panel.Children.Add(entry.Text); ChatBox.Children.Add(panel); ScrollViewer.ScrollToEnd(); }), DispatcherPriority.Normal); } catch (Exception ex) { IoQueue.Add(ex); } } } catch (Exception ex) { MessageBox.Show("Could not connect to the chat.", "fail"); IoQueue.Add(ex); Close(); } }