diff options
Diffstat (limited to 'api')
-rw-r--r-- | api/team.go | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/api/team.go b/api/team.go index e73eb66e1..730eb1d3d 100644 --- a/api/team.go +++ b/api/team.go @@ -751,8 +751,37 @@ func getMyTeamsUnread(c *Context, w http.ResponseWriter, r *http.Request) { c.Err = result.Err return } else { - data := result.Data.([]*model.TeamUnread) - w.Write([]byte(model.TeamsUnreadToJson(data))) + data := result.Data.([]*model.ChannelUnread) + var members []*model.TeamUnread + membersMap := make(map[string]*model.TeamUnread) + + unreads := func(cu *model.ChannelUnread, tu *model.TeamUnread) *model.TeamUnread { + tu.MentionCount += cu.MentionCount + + if cu.NotifyProps["mark_unread"] != model.CHANNEL_MARK_UNREAD_MENTION { + tu.MsgCount += (cu.TotalMsgCount - cu.MsgCount) + } + + return tu + } + + for i := range data { + id := data[i].TeamId + if mu, ok := membersMap[id]; ok { + membersMap[id] = unreads(data[i], mu) + } else { + membersMap[id] = unreads(data[i], &model.TeamUnread{ + MsgCount: 0, + MentionCount: 0, + TeamId: id, + }) + } + } + + for _, val := range membersMap { + members = append(members, val) + } + w.Write([]byte(model.TeamsUnreadToJson(members))) } } |