From fda705a2dc6da031bed83555dacf6a3ad65ef423 Mon Sep 17 00:00:00 2001
From: Andrey Petrov <andrey.petrov@shazow.net>
Date: Fri, 1 May 2020 11:41:19 -0400
Subject: [PATCH] chat: Clean up ignore comparisons

---
 chat/room.go | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/chat/room.go b/chat/room.go
index 2448a17..5b34508 100644
--- a/chat/room.go
+++ b/chat/room.go
@@ -79,6 +79,11 @@ func (r *Room) SetLogging(out io.Writer) {
 
 // HandleMsg reacts to a message, will block until done.
 func (r *Room) HandleMsg(m message.Message) {
+	var fromID string
+	if fromMsg, ok := m.(message.MessageFrom); ok {
+		fromID = fromMsg.From().ID()
+	}
+
 	switch m := m.(type) {
 	case *message.CommandMsg:
 		cmd := *m
@@ -89,30 +94,23 @@ 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
-			}
+		if user.Ignored.In(fromID) {
+			return // Skip ignored
 		}
 
 		user.Send(m)
 	default:
-		fromMsg, _ := m.(message.MessageFrom)
 		r.history.Add(m)
 		r.Members.Each(func(_ string, item set.Item) (err error) {
 			user := item.Value().(*Member).User
 
-			if fromMsg != nil && user.Ignored.In(fromMsg.From().ID()) {
-				// Skip because ignored
-				return
+			if user.Ignored.In(fromID) {
+				return // Skip ignored
 			}
 
 			if _, ok := m.(*message.AnnounceMsg); ok {
 				if user.Config().Quiet {
-					// Skip announcements
-					return
+					return // Skip announcements
 				}
 			}
 			user.Send(m)