summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorCorey Hulen <corey@hulen.com>2017-02-23 20:27:24 -0500
committerChristopher Speller <crspeller@gmail.com>2017-02-23 20:27:24 -0500
commit80273d02347a3ac35ba2566151b53e8a420e2d0a (patch)
treec9d5d8b1261b334a59dfd8488c997c762dd382f0 /app
parent8509c2f0b0893f8a7936a1943cc924db09bb62f4 (diff)
downloadchat-80273d02347a3ac35ba2566151b53e8a420e2d0a.tar.gz
chat-80273d02347a3ac35ba2566151b53e8a420e2d0a.tar.bz2
chat-80273d02347a3ac35ba2566151b53e8a420e2d0a.zip
Adding ability to remove push ids when reported as removed from google or apple (#5513)
* Adding ability to remove push device Ids when reported as removed from google or apple * Fixing log string * Removing unneeded nil check
Diffstat (limited to 'app')
-rw-r--r--app/notification.go19
1 files changed, 14 insertions, 5 deletions
diff --git a/app/notification.go b/app/notification.go
index e9e76de45..ae365b417 100644
--- a/app/notification.go
+++ b/app/notification.go
@@ -514,7 +514,7 @@ func sendPushNotification(post *model.Post, user *model.User, channel *model.Cha
for _, session := range sessions {
tmpMessage := *model.PushNotificationFromJson(strings.NewReader(msg.ToJson()))
tmpMessage.SetDeviceIdAndPlatform(session.DeviceId)
- go sendToPushProxy(tmpMessage)
+ go sendToPushProxy(tmpMessage, session)
if einterfaces.GetMetricsInterface() != nil {
einterfaces.GetMetricsInterface().IncrementPostSentPush()
@@ -546,13 +546,13 @@ func ClearPushNotification(userId string, channelId string) *model.AppError {
for _, session := range sessions {
tmpMessage := *model.PushNotificationFromJson(strings.NewReader(msg.ToJson()))
tmpMessage.SetDeviceIdAndPlatform(session.DeviceId)
- go sendToPushProxy(tmpMessage)
+ go sendToPushProxy(tmpMessage, session)
}
return nil
}
-func sendToPushProxy(msg model.PushNotification) *model.AppError {
+func sendToPushProxy(msg model.PushNotification, session *model.Session) *model.AppError {
msg.ServerId = utils.CfgDiagnosticId
tr := &http.Transport{
@@ -565,8 +565,17 @@ func sendToPushProxy(msg model.PushNotification) *model.AppError {
if resp, err := httpClient.Do(request); err != nil {
return model.NewLocAppError("sendToPushProxy", "api.post.send_notifications_and_forget.push_notification.error", map[string]interface{}{"DeviceId": msg.DeviceId, "Error": err.Error()}, "")
} else {
- ioutil.ReadAll(resp.Body)
- resp.Body.Close()
+ m := model.MapFromJson(resp.Body)
+ if resp.Body != nil {
+ ioutil.ReadAll(resp.Body)
+ resp.Body.Close()
+ }
+
+ if m[model.STATUS] == model.STATUS_REMOVE {
+ l4g.Info("Device was reported as removed for UserId=%v SessionId=%v removing push for this session", session.UserId, session.Id)
+ AttachDeviceId(session.Id, "", session.ExpiresAt)
+ ClearSessionCacheForUser(session.UserId)
+ }
}
return nil