diff options
author | Joram Wilander <jwawilander@gmail.com> | 2016-08-31 12:52:14 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-31 12:52:14 -0400 |
commit | 26f96b240ddc8cf8c56decea72102b10238e0a43 (patch) | |
tree | 7eda509038de3d6b95a02b95bee2ad72e2e3a063 /store/sql_user_store.go | |
parent | b0b39ce71cd77fbffbf23d56b20db1927f0c6cb1 (diff) | |
download | chat-26f96b240ddc8cf8c56decea72102b10238e0a43.tar.gz chat-26f96b240ddc8cf8c56decea72102b10238e0a43.tar.bz2 chat-26f96b240ddc8cf8c56decea72102b10238e0a43.zip |
PLT-3462 Add the ability to clear push notifications after channel is viewed (#3834)
* Add the ability to clear push notifications after channel is viewed
* Fix race condition between updating the mention count and reading it when sending push notifications
Diffstat (limited to 'store/sql_user_store.go')
-rw-r--r-- | store/sql_user_store.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/store/sql_user_store.go b/store/sql_user_store.go index 027dcbd75..61bfa35b8 100644 --- a/store/sql_user_store.go +++ b/store/sql_user_store.go @@ -921,3 +921,22 @@ func (us SqlUserStore) GetUnreadCount(userId string) StoreChannel { return storeChannel } + +func (us SqlUserStore) GetUnreadCountForChannel(userId string, channelId string) StoreChannel { + storeChannel := make(StoreChannel) + + go func() { + result := StoreResult{} + + if count, err := us.GetReplica().SelectInt("SELECT SUM(CASE WHEN c.Type = 'D' THEN (c.TotalMsgCount - cm.MsgCount) ELSE cm.MentionCount END) FROM Channels c INNER JOIN ChannelMembers cm ON c.Id = :ChannelId AND cm.ChannelId = :ChannelId AND cm.UserId = :UserId", map[string]interface{}{"ChannelId": channelId, "UserId": userId}); err != nil { + result.Err = model.NewLocAppError("SqlUserStore.GetMentionCountForChannel", "store.sql_user.get_unread_count_for_channel.app_error", nil, err.Error()) + } else { + result.Data = count + } + + storeChannel <- result + close(storeChannel) + }() + + return storeChannel +} |