private async void SendMessage(string message) { if (string.IsNullOrWhiteSpace(message)) return; message = message.TrimEnd(); var messageModel = new Message { Content = message.EscapeMessage(), Device = "desktop", ClientId = App.Connection.Faye.ClientId }; var messageData = await JsonConvert.SerializeObjectAsync(messageModel); messageModel.Id = Guid.NewGuid().ToString(); messageModel.Author = App.Connection.SessionController.CurrentSession; cloudController.Messages.AddToEnd(messageModel); var client = new HttpClient { DefaultRequestHeaders = { { "Accept", "application/json" }, { "X-Auth-Token", App.Connection.SessionController.CurrentSession.AuthToken } } }; var response = await client.PostAsync(Endpoints.CloudMessages.Replace("[:id]", cloudController.Cloud.Id), new StringContent(messageData) { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } } ); try { var responseText = await response.Content.ReadAsStringAsync(); var fullMessage = await JsonConvert.DeserializeObjectAsync<WebResponse<Message>>(responseText); if (fullMessage == null) return; if (fullMessage.Flash != null) { await App.Connection.ErrorController.OnError(fullMessage); return; } fullMessage.Result.PreProcess(); fullMessage.Result.CopyTo(messageModel); } catch (JsonException) { } }
private void SendToast(Message message) { if (!AppSettings.Settings.DisplayNotifications) { return; } if (App.Connection.MessageController.CurrentCloud == this && Window.Current.Visible) { return; } var notifier = ToastNotificationManager.CreateToastNotifier(); var template = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastImageAndText02); var image = (XmlElement)template.GetElementsByTagName("image")[0]; image.SetAttribute("src", message.Author.Avatar.Normal.ToString()); image.SetAttribute("alt", message.Author.Name); var textElements = template.GetElementsByTagName("text"); textElements[0].AppendChild (template.CreateTextNode(Cloud.Name + " : " + message.Author.Name)); textElements[1].AppendChild (template.CreateTextNode (Message.SlashMeFormat.Replace(message.Content, message.Author.Name))); var toastNode = (XmlElement)template.SelectSingleNode("/toast"); toastNode.SetAttribute("launch", JObject.FromObject(new { type = "toast", cloudId = Cloud.Id }).ToString(Formatting.None)); var audio = template.CreateElement("audio"); audio.SetAttribute("silent", "true"); toastNode.AppendChild(audio); var toast = new ToastNotification(template); notifier.Show(toast); }