Skip to content

Commit

Permalink
Adding ability to remove push ids when reported as removed from googl…
Browse files Browse the repository at this point in the history
…e 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
  • Loading branch information
coreyhulen authored and crspeller committed Feb 24, 2017
1 parent 8509c2f commit 80273d0
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
19 changes: 14 additions & 5 deletions app/notification.go
Expand Up @@ -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()
Expand Down Expand Up @@ -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{
Expand All @@ -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
Expand Down
1 change: 1 addition & 0 deletions model/client.go
Expand Up @@ -35,6 +35,7 @@ const (
STATUS = "status"
STATUS_OK = "OK"
STATUS_FAIL = "FAIL"
STATUS_REMOVE = "REMOVE"

CLIENT_DIR = "webapp/dist"

Expand Down

0 comments on commit 80273d0

Please sign in to comment.