Skip to content

Commit 33d7d26

Browse files
committed
chat/message: Remove User.Ignore(...) and User.Unignore(...)
Also changes some messaging
1 parent d950112 commit 33d7d26

File tree

3 files changed

+18
-38
lines changed

3 files changed

+18
-38
lines changed

chat/command.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ func InitCommands(c *Commands) {
249249
Handler: func(room *Room, msg message.CommandMsg) error {
250250
id := strings.TrimSpace(strings.TrimLeft(msg.Body(), "/ignore"))
251251
if id == "" {
252+
// Print ignored names, if any.
252253
var names []string
253254
msg.From().Ignored.Each(func(_ string, item set.Item) error {
254255
names = append(names, item.Key())
@@ -266,17 +267,22 @@ func InitCommands(c *Commands) {
266267
return nil
267268
}
268269

270+
if id == msg.From().ID() {
271+
return errors.New("cannot ignore self")
272+
}
269273
target, ok := room.MemberByID(id)
270274
if !ok {
271-
return fmt.Errorf("user %s not found.", id)
275+
return fmt.Errorf("user not found: %s", id)
272276
}
273277

274-
err := msg.From().Ignore(target)
275-
if err != nil {
278+
err := msg.From().Ignored.Add(set.Itemize(id, target))
279+
if err == set.ErrCollision {
280+
return fmt.Errorf("user already ignored: %s", id)
281+
} else if err != nil {
276282
return err
277283
}
278284

279-
room.Send(message.NewSystemMsg(fmt.Sprintf("%s is now being ignored.", target.Name()), msg.From()))
285+
room.Send(message.NewSystemMsg(fmt.Sprintf("Ignoring: %s", target.Name()), msg.From()))
280286
return nil
281287
},
282288
})
@@ -290,12 +296,11 @@ func InitCommands(c *Commands) {
290296
return errors.New("must specify user")
291297
}
292298

293-
err := msg.From().Unignore(id)
294-
if err != nil {
299+
if err := msg.From().Ignored.Remove(id); err != nil {
295300
return err
296301
}
297302

298-
room.Send(message.NewSystemMsg(fmt.Sprintf("%s is not ignored anymore.", id), msg.From()))
303+
room.Send(message.NewSystemMsg(fmt.Sprintf("No longer ignoring: %s", id), msg.From()))
299304
return nil
300305
},
301306
})

chat/message/user.go

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ var ErrUserClosed = errors.New("user closed")
2121
// User definition, implemented set Item interface and io.Writer
2222
type User struct {
2323
Identifier
24+
Ignored *set.Set
2425
colorIdx int
2526
joined time.Time
2627
msg chan Message
2728
done chan struct{}
28-
Ignored *set.Set
2929

3030
screen io.WriteCloser
3131
closeOnce sync.Once
@@ -178,9 +178,9 @@ func (u *User) HandleMsg(m Message) error {
178178
// Add message to consume by user
179179
func (u *User) Send(m Message) error {
180180
select {
181-
case u.msg <- m:
182181
case <-u.done:
183182
return ErrUserClosed
183+
case u.msg <- m:
184184
case <-time.After(messageTimeout):
185185
logger.Printf("Message buffer full, closing: %s", u.Name())
186186
u.Close()
@@ -189,31 +189,6 @@ func (u *User) Send(m Message) error {
189189
return nil
190190
}
191191

192-
func (u *User) Ignore(other Identifier) error {
193-
if other == nil {
194-
return errors.New("user is nil.")
195-
}
196-
197-
if other.ID() == u.ID() {
198-
return errors.New("cannot ignore self.")
199-
}
200-
201-
if u.Ignored.In(other.ID()) {
202-
return errors.New("user already ignored.")
203-
}
204-
205-
u.Ignored.Add(set.Itemize(other.ID(), other))
206-
return nil
207-
}
208-
209-
func (u *User) Unignore(id string) error {
210-
if id == "" {
211-
return errors.New("user is nil.")
212-
}
213-
214-
return u.Ignored.Remove(id)
215-
}
216-
217192
// Container for per-user configurations.
218193
type UserConfig struct {
219194
Highlight *regexp.Regexp

chat/room_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,19 +87,19 @@ func TestIgnore(t *testing.T) {
8787
if err := sendCommand("/ignore test", ignorer, ch, &buffer); err != nil {
8888
t.Fatal(err)
8989
}
90-
expectOutput(t, buffer, "-> Err: user test not found."+message.Newline)
90+
expectOutput(t, buffer, "-> Err: user not found: test"+message.Newline)
9191

9292
// test ignoring existing user
9393
if err := sendCommand("/ignore "+ignored.user.Name(), ignorer, ch, &buffer); err != nil {
9494
t.Fatal(err)
9595
}
96-
expectOutput(t, buffer, "-> "+ignored.user.Name()+" is now being ignored."+message.Newline)
96+
expectOutput(t, buffer, "-> Ignoring: "+ignored.user.Name()+message.Newline)
9797

9898
// ignoring the same user twice returns an error message and doesn't add the user twice
9999
if err := sendCommand("/ignore "+ignored.user.Name(), ignorer, ch, &buffer); err != nil {
100100
t.Fatal(err)
101101
}
102-
expectOutput(t, buffer, "-> Err: user already ignored."+message.Newline)
102+
expectOutput(t, buffer, "-> Err: user already ignored: user1"+message.Newline)
103103
if ignoredList := ignorer.user.Ignored.ListPrefix(""); len(ignoredList) != 1 {
104104
t.Fatalf("should have %d ignored users, has %d", 1, len(ignoredList))
105105
}
@@ -125,7 +125,7 @@ func TestIgnore(t *testing.T) {
125125
if err := sendCommand("/unignore "+ignored.user.Name(), users[0], ch, &buffer); err != nil {
126126
t.Fatal(err)
127127
}
128-
expectOutput(t, buffer, "-> "+ignored.user.Name()+" is not ignored anymore."+message.Newline)
128+
expectOutput(t, buffer, "-> No longer ignoring: user1"+message.Newline)
129129

130130
if err := sendCommand("/ignore", users[0], ch, &buffer); err != nil {
131131
t.Fatal(err)

0 commit comments

Comments
 (0)