diff options
author | enahum <nahumhbl@gmail.com> | 2016-12-21 16:20:11 -0300 |
---|---|---|
committer | Corey Hulen <corey@hulen.com> | 2016-12-21 11:20:11 -0800 |
commit | 139cb52c99ac525f44a280803447bbbd88369f23 (patch) | |
tree | 49f425a74fc7e090f91ce6ab641d9abf9295dfd7 /api/team.go | |
parent | dce4205699bed68046f9dc6ed371ad959d93ee59 (diff) | |
download | chat-139cb52c99ac525f44a280803447bbbd88369f23.tar.gz chat-139cb52c99ac525f44a280803447bbbd88369f23.tar.bz2 chat-139cb52c99ac525f44a280803447bbbd88369f23.zip |
Fix teams unread count (#4848)
* Fix teams unread
* Moving logic out of the store
* fix unit test
Diffstat (limited to 'api/team.go')
-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))) } } |