diff options
Diffstat (limited to 'server/channel/command.go')
| -rw-r--r-- | server/channel/command.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/server/channel/command.go b/server/channel/command.go index 92ae2cc..23acccb 100644 --- a/server/channel/command.go +++ b/server/channel/command.go @@ -260,6 +260,26 @@ func (c *Channel) SendRequest(r session.Request) { r.ReplyInvalid() } + case "read": + if len(r.Cmd.Args) != 0 { + r.ReplyInvalid() + return + } + if !c.GetMembership(r.From.UserId).See { + r.Reply(proto.Fail{"forbidden", "", nil}.Cmd()) + return + } + c.SetRead(r.From.UserId) + + u := c.kind.world.GetObject(r.From.UserId).(*user.User) + for s := range u.PrivateStream.Subscribers { + if s != r.From { + s.Event(proto.NewCmd("read", c.id)) + } + } + + r.ReplyOk() + default: r.ReplyInvalid() } |
