From 26f96b240ddc8cf8c56decea72102b10238e0a43 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Wed, 31 Aug 2016 12:52:14 -0400 Subject: 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 --- model/push_notification.go | 15 +++++++++++++++ model/session.go | 6 ++++++ 2 files changed, 21 insertions(+) (limited to 'model') diff --git a/model/push_notification.go b/model/push_notification.go index 666dd8f7d..d4c380291 100644 --- a/model/push_notification.go +++ b/model/push_notification.go @@ -6,12 +6,16 @@ package model import ( "encoding/json" "io" + "strings" ) const ( PUSH_NOTIFY_APPLE = "apple" PUSH_NOTIFY_ANDROID = "android" + PUSH_TYPE_MESSAGE = "message" + PUSH_TYPE_CLEAR = "clear" + CATEGORY_DM = "DIRECT_MESSAGE" MHPNS = "https://push.mattermost.com" @@ -28,6 +32,7 @@ type PushNotification struct { ContentAvailable int `json:"cont_ava"` ChannelId string `json:"channel_id"` ChannelName string `json:"channel_name"` + Type string `json:"type"` } func (me *PushNotification) ToJson() string { @@ -39,6 +44,16 @@ func (me *PushNotification) ToJson() string { } } +func (me *PushNotification) SetDeviceIdAndPlatform(deviceId string) { + if strings.HasPrefix(deviceId, PUSH_NOTIFY_APPLE+":") { + me.Platform = PUSH_NOTIFY_APPLE + me.DeviceId = strings.TrimPrefix(deviceId, PUSH_NOTIFY_APPLE+":") + } else if strings.HasPrefix(deviceId, PUSH_NOTIFY_ANDROID+":") { + me.Platform = PUSH_NOTIFY_ANDROID + me.DeviceId = strings.TrimPrefix(deviceId, PUSH_NOTIFY_ANDROID+":") + } +} + func PushNotificationFromJson(data io.Reader) *PushNotification { decoder := json.NewDecoder(data) var me PushNotification diff --git a/model/session.go b/model/session.go index ef51374db..e8b04fbe2 100644 --- a/model/session.go +++ b/model/session.go @@ -6,6 +6,7 @@ package model import ( "encoding/json" "io" + "strings" ) const ( @@ -109,6 +110,11 @@ func (me *Session) GetTeamByTeamId(teamId string) *TeamMember { return nil } +func (me *Session) IsMobileApp() bool { + return len(me.DeviceId) > 0 && + (strings.HasPrefix(me.DeviceId, PUSH_NOTIFY_APPLE+":") || strings.HasPrefix(me.DeviceId, PUSH_NOTIFY_ANDROID+":")) +} + func SessionsToJson(o []*Session) string { if b, err := json.Marshal(o); err != nil { return "[]" -- cgit v1.2.3-1-g7c22