chat: Clean up ignore comparisons

This commit is contained in:
Andrey Petrov 2020-05-01 11:41:19 -04:00
parent 6fe0b40327
commit fda705a2dc

View File

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