コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: masesgroup/DDMChat
        /// <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;
            });
        }