Пример #1
0
        public TwitchUserBitsCheeredModel(UserViewModel user, PubSubBitsEventV2Model bitsEvent)
        {
            this.User    = user;
            this.Amount  = bitsEvent.bits_used;
            this.Message = !string.IsNullOrEmpty(bitsEvent.chat_message) ? bitsEvent.chat_message : string.Empty;

            TwitchChatMessageViewModel chatMessage = new TwitchChatMessageViewModel(this.User, this.Message);

            this.Message = chatMessage.TextOnlyMessageContents;
        }
Пример #2
0
        private async void TwitchChatService_OnMessageDeletedOccurred(object sender, TwitchChatMessageViewModel twitchMessage)
        {
            if (!this.messagesLookup.TryGetValue(twitchMessage.ID, out ChatMessageViewModel message))
            {
                message = twitchMessage;
            }

            if (!message.IsDeleted)
            {
                await message.Delete();
            }

            if (ChannelSession.Settings.HideDeletedMessages)
            {
                await this.RemoveMessage(message);
            }
        }
        private void ChatMessageControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            if (this.IsLoaded && this.DataContext != null && this.DataContext is ChatMessageViewModel && this.Message == null)
            {
                this.Message            = (ChatMessageViewModel)this.DataContext;
                this.Message.OnDeleted += Message_OnDeleted;
                bool italics     = false;
                bool highlighted = false;

                this.Separator.Visibility = (ChannelSession.Settings.AddSeparatorsBetweenMessages) ? Visibility.Visible : Visibility.Collapsed;

                if (this.DataContext is AlertChatMessageViewModel)
                {
                    AlertChatMessageViewModel alert      = (AlertChatMessageViewModel)this.DataContext;
                    SolidColorBrush           foreground = null;
                    if (!string.IsNullOrEmpty(alert.Color) && !alert.Color.Equals(ColorSchemes.DefaultColorScheme))
                    {
                        string color = alert.Color;
                        try
                        {
                            if (ColorSchemes.HTMLColorSchemeDictionary.ContainsKey(color))
                            {
                                color = ColorSchemes.HTMLColorSchemeDictionary[color];
                            }
                            foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom(color));
                        }
                        catch (Exception ex)
                        {
                            Logger.Log(LogLevel.Error, "Bad Alert Color: " + color);
                            Logger.Log(ex);
                        }
                    }
                    this.AddStringMessage(alert.PlainTextMessage, foreground: foreground);
                    this.MessageWrapPanel.HorizontalAlignment = HorizontalAlignment.Center;
                }
                else
                {
                    ChatMessageHeaderControl header = new ChatMessageHeaderControl();
                    header.DataContext = this.DataContext;
                    this.MessageWrapPanel.Children.Add(header);

                    bool showMessage = true;

                    if (this.DataContext is ChatMessageViewModel)
                    {
                        ChatMessageViewModel message = (ChatMessageViewModel)this.DataContext;
                        highlighted = highlighted || message.IsStreamerTagged;
                    }

                    if (this.DataContext is TwitchChatMessageViewModel)
                    {
                        TwitchChatMessageViewModel twitchMessage = (TwitchChatMessageViewModel)this.DataContext;
                        italics     = twitchMessage.IsSlashMe;
                        highlighted = highlighted || twitchMessage.IsHighlightedMessage;
                    }

                    if (showMessage)
                    {
                        foreach (object messagePart in this.Message.MessageParts)
                        {
                            if (messagePart is string)
                            {
                                string messagePartString = (string)messagePart;
                                this.AddStringMessage(messagePartString, isHighlighted: highlighted, isItalicized: italics);
                            }
                            else if (messagePart is TwitchV5API.EmoteModel)
                            {
                                this.MessageWrapPanel.Children.Add(new ChatImageControl((TwitchV5API.EmoteModel)messagePart));
                            }
                            else if (messagePart is BetterTTVEmoteModel)
                            {
                                this.MessageWrapPanel.Children.Add(new ChatImageControl((BetterTTVEmoteModel)messagePart));
                            }
                            else if (messagePart is FrankerFaceZEmoteModel)
                            {
                                this.MessageWrapPanel.Children.Add(new ChatImageControl((FrankerFaceZEmoteModel)messagePart));
                            }
                            else if (messagePart is TwitchBitsCheerViewModel)
                            {
                                this.MessageWrapPanel.Children.Add(new ChatImageControl((TwitchBitsCheerViewModel)messagePart));
                            }
                        }
                    }
                }
            }
        }
Пример #4
0
 public TwitchUserBitsCheeredModel(UserViewModel user, PubSubBitsEventV2Model bitsEvent)
 {
     this.User    = user;
     this.Amount  = bitsEvent.bits_used;
     this.Message = new TwitchChatMessageViewModel(user, bitsEvent);
 }