Beispiel #1
0
        private async void UpdateView()
        {
            try
            {
                if (CurrentChat == null)
                {
                    return;
                }
                var messages = await Data.Current.GetMessagesFromChatAsync(CurrentChat);

                messages = messages.Skip(Messages.Count - ChatPanel.Children.Cast <UIElement>().Count(x => x.Visibility == Visibility.Collapsed)).ToList();
                if (Messages.Any() && messages.Any(x => x.From.Id != App.BUser?.Id))
                {
                    Media.Play();
                }
                Messages.AddRange(messages);
                foreach (var mes in messages)
                {
                    if (mes?.From?.Id == null)
                    {
                        continue;
                    }
                    ChatPanel.Children.Add(new MessageView(mes, mes.From.Id == App.BUser?.Id));
                }
                if (messages.Any())
                {
                    ChatScroll.ScrollToEnd();
                }
            }
            catch
            {
            }
        }
        private void AddMessageLine(UserModel user, string message)
        {
            TextBlock tb = new TextBlock();

            if (user != null)
            {
                //Kolor nicka
                var nickRun = new Run();
                nickRun.Foreground = new SolidColorBrush(Colors.LightGray);
                nickRun.Text       = user.Username;
                nickRun.FontWeight = FontWeights.Bold;

                //Cenzor
                if (Properties.Settings.Default.Censor)
                {
                    IEnumerable <Regex> badWordMatchers = this.BadWords.
                                                          Select(x => new Regex(string.Format(PatternTemplate, x), Options));

                    message = badWordMatchers.
                              Aggregate(message, (current, matcher) => matcher.Replace(current, CensoredText));
                }

                //Tekst
                var messageRun = new Run();
                messageRun.Foreground = new SolidColorBrush(Colors.White);
                messageRun.Text       = ": " + message;
                tb.Inlines.Add(nickRun);

                //Dodajemy do textblocka
                tb.Inlines.Add(messageRun);
            }
            else
            {
                tb.Text       = "Dealer: " + message;
                tb.Foreground = new SolidColorBrush(Colors.Gray);
            }

            tb.TextWrapping = TextWrapping.Wrap;

            Chat.Children.Add(tb);
            ChatScroll.ScrollToEnd();
        }
 public Chat()
 {
     InitializeComponent();
     ChatScroll.ScrollToEnd();
 }