From 6fe0b403279200ee9f5b333b39803f83d963c51c Mon Sep 17 00:00:00 2001 From: Abdelkader Bouadjadja Date: Thu, 30 Apr 2020 05:09:21 +0400 Subject: [PATCH] Ignored people still show up when they send private `/msg` --- chat/message/message.go | 4 ++++ chat/room.go | 8 ++++++++ chat/room_test.go | 1 + 3 files changed, 13 insertions(+) diff --git a/chat/message/message.go b/chat/message/message.go index c07c8b2b..01de0ce8 100644 --- a/chat/message/message.go +++ b/chat/message/message.go @@ -183,6 +183,10 @@ func (m PrivateMsg) To() *User { return m.to } +func (m PrivateMsg) From() *User { + return m.from +} + func (m PrivateMsg) Render(t *Theme) string { s := fmt.Sprintf("[PM from %s] %s", m.from.Name(), m.body) if t == nil { diff --git a/chat/room.go b/chat/room.go index f387990e..2448a17f 100644 --- a/chat/room.go +++ b/chat/room.go @@ -89,6 +89,14 @@ func (r *Room) HandleMsg(m message.Message) { } case message.MessageTo: user := m.To() + if _, ok := m.(*message.PrivateMsg); ok { + fromMsg, _ := m.(message.MessageFrom) + if fromMsg != nil && user.Ignored.In(fromMsg.From().ID()) { + // Skip because ignored + return + } + } + user.Send(m) default: fromMsg, _ := m.(message.MessageFrom) diff --git a/chat/room_test.go b/chat/room_test.go index 82f897c9..d7d768ba 100644 --- a/chat/room_test.go +++ b/chat/room_test.go @@ -107,6 +107,7 @@ func TestIgnore(t *testing.T) { // when an emote is sent by an ignored user, it should not be displayed ch.Send(message.NewEmoteMsg("crying", ignored.user)) + if ignorer.user.HasMessages() { t.Fatal("should not have emote messages") }