//Unešena poruka ne može biti prazna i poziva se metoda PostMessage na servisu //koja uz pomoć callback metode svim registrovanim korisnicima šalje poruku , osim onome koji je šalje //Poruka koji je uneo korisnik se ispisuje u ListBox konverzacije da bi korisnik ispratio i svoje poruke //i fokus se stavlja na zadnju stavku u ListBox-u private void btnPostMessage_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(tBoxMessageText.Text) || string.IsNullOrWhiteSpace(tBoxMessageText.Text)) { MessageBox.Show("Message can not be empty!!!"); return; } string user = tBoxNickName.Text; string messege = tBoxMessageText.Text; var time = DateTime.Now; MessengerAppUser messengarUser = new MessengerAppUser() { NickName = user }; MessengerAppMessage msg = new MessengerAppMessage(); msg.User = messengarUser; msg.Message = messege; msg.CreateAt = time; clientProxy.PostMessage(msg); messengarUser.NickName = "currentUser"; AddToConversationList(msg); lBox.ScrollIntoView(lBox.Items[lBox.Items.Count - 1]); tBoxMessageText.Clear(); tBoxMessageText.Focus(); }
//Metoda koja dodaje poruke u ObservableCollection conversationList public void AddToConversationList(MessengerAppMessage message) { ChatMessege msg = new ChatMessege(); msg.CurrentUserMessage = tBoxMessageText.Text; msg.ChatMemberNickName = message.User.NickName; msg.ChatMemberMessage = message.Message; conversationList.Add(msg); lBox.ScrollIntoView(lBox.Items[lBox.Items.Count - 1]); }
//Callback metoda servisa tj. ovu metodu sevis poziva na klijentu u procesu callback-a public void SendMessageToAllClients(MessengerAppMessage message) { try { Dispatcher.BeginInvoke( (Action)(() => { AddToConversationList(message); })); } catch (Exception e) { MessageBox.Show(e.Message); } }