/// <summary> /// Send message to the channel /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Send(object sender, RoutedEventArgs e) { List <ChatUser> selectedToSend = new List <ChatUser>(); foreach (ChatUser cu in Book.UserList) { if (cu.Selected) { selectedToSend.Add(cu); } } this.Dispatcher.Invoke(() => { Message MessageToSend = null; if (UploadReady) { //send the uploaded file with the text message MessageToSend = Uploaded; MessageToSend.Sender = messageModule.Id; MessageToSend.StringContent = MessageText.Text; } else { //prepare a text message MessageToSend = new Message() { Sender = messageModule.Id, Kind = MessageKindType.STRING, StringContent = MessageText.Text }; } if (selectedToSend.Count == 0) { SignedMessage signedTextMessage = new SignedMessage(MessageToSend.ToJson()); messageModule.SendMessage <string>(signedTextMessage.ToJson()); } else { bool sentToMyself = false; foreach (ChatUser cu in selectedToSend) { MessageToSend.Destination = cu.Sender; SignedMessage signedTextMessage = new SignedMessage(MessageToSend.ToJson()); messageModule.SendMessage <string>(signedTextMessage.ToJson()); if (cu.Sender == UserProfile.Sender) { sentToMyself = true; } } if (!sentToMyself) { //send always a copy of the encrypted message to myself MessageToSend.Destination = UserProfile.Sender; SignedMessage signedTextMessage = new SignedMessage(MessageToSend.ToJson()); messageModule.SendMessage <string>(signedTextMessage.ToJson()); } } MessageText.Text = string.Empty; Uploaded = null; UploadReady = false; }); }