private bool Filtered(ChatMessage message) { if (!App.Settings.ChatEnabled) { message.Dispose(); return(true); } if (Game.BlockList.Contains(message.Author) && !(message is LfgMessage)) { message.Dispose(); return(true); } var pausedCount = _pauseQueue.Count; for (var i = 0; i < App.Settings.SpamThreshold; i++) { if (i >= pausedCount + ChatMessages.Count) { continue; } if (Pass(message, i <= pausedCount - 1 ? _pauseQueue.ElementAt(i) : ChatMessages[i - pausedCount])) { continue; } message.Dispose(); return(true); } //if (ChatMessages.Count < App.Settings.SpamThreshold) //{ // for (var i = 0; i < ChatMessages.Count - 1; i++) // { // var m = ChatMessages[i]; // if (Pass(message, m)) continue; // message.Dispose(); // return false; // } //} //else //{ // for (var i = 0; i < App.Settings.SpamThreshold; i++) // { // if (i > ChatMessages.Count - 1) continue; // var m = ChatMessages[i]; // if (Pass(message, m)) continue; // message.Dispose(); // return false; // } //} return(false); }
void ReleaseDesignerOutlets() { if (ChatMessage != null) { ChatMessage.Dispose(); ChatMessage = null; } if (MessageBackgroundView != null) { MessageBackgroundView.Dispose(); MessageBackgroundView = null; } if (ReceivedMessageDate != null) { ReceivedMessageDate.Dispose(); ReceivedMessageDate = null; } if (SentMessageDate != null) { SentMessageDate.Dispose(); SentMessageDate = null; } }
//public void NotifyOpacityChange() //{ // ChatWindows.ToList().ForEach(x => // { // //TODO: make this different per window // x.VM.NotifyOpacityChange(); // }); //} public void AddChatMessage(ChatMessage chatMessage) { //return; if (!SettingsHolder.ChatEnabled) { chatMessage.Dispose(); return; } if (BlockedUsers.Contains(chatMessage.Author)) { chatMessage.Dispose(); return; } if (ChatMessages.Count < SettingsHolder.SpamThreshold) { for (var i = 0; i < ChatMessages.Count - 1; i++) { var m = ChatMessages[i]; if (!Pass(chatMessage, m)) { chatMessage.Dispose(); return; } } } else { for (var i = 0; i < SettingsHolder.SpamThreshold; i++) { if (i > ChatMessages.Count - 1) { continue; } var m = ChatMessages[i]; if (!Pass(chatMessage, m)) { chatMessage.Dispose(); return; } } } chatMessage.SplitSimplePieces(); if (ChatWindows.All(x => !x.IsPaused)) { ChatMessages.Insert(0, chatMessage); //_cache.Add(chatMessage); } else { _queue.Enqueue(chatMessage); } NewMessage?.Invoke(chatMessage); if (ChatMessages.Count > SettingsHolder.MaxMessages) { var toRemove = ChatMessages[ChatMessages.Count - 1]; toRemove.Dispose(); ChatMessages.RemoveAt(ChatMessages.Count - 1); } N(nameof(MessageCount)); }