summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorenahum <nahumhbl@gmail.com>2016-12-21 16:20:11 -0300
committerCorey Hulen <corey@hulen.com>2016-12-21 11:20:11 -0800
commit139cb52c99ac525f44a280803447bbbd88369f23 (patch)
tree49f425a74fc7e090f91ce6ab641d9abf9295dfd7 /api
parentdce4205699bed68046f9dc6ed371ad959d93ee59 (diff)
downloadchat-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')
-rw-r--r--api/team.go33
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)))
}
}