fix push notification when user status is in DND (#7731)

This commit is contained in:
Carlos Tadeu Panato Junior
2017-10-30 13:15:01 +01:00
committed by Joram Wilander
parent bbe971cc45
commit 63df41b911
2 changed files with 37 additions and 5 deletions

View File

@@ -988,14 +988,17 @@ func DoesNotifyPropsAllowPushNotification(user *model.User, channelNotifyProps m
}
func DoesStatusAllowPushNotification(userNotifyProps model.StringMap, status *model.Status, channelId string) bool {
// If User status is DND return false right away
if status.Status == model.STATUS_DND {
return false
}
if pushStatus, ok := userNotifyProps["push_status"]; (pushStatus == model.STATUS_ONLINE || !ok) && (status.ActiveChannel != channelId || model.GetMillis()-status.LastActivityAt > model.STATUS_CHANNEL_TIMEOUT) {
return true
} else if pushStatus == model.STATUS_AWAY && (status.Status == model.STATUS_AWAY || status.Status == model.STATUS_OFFLINE) {
return true
} else if pushStatus == model.STATUS_OFFLINE && status.Status == model.STATUS_OFFLINE {
return true
} else if status.Status == model.STATUS_DND {
return false
}
return false

View File

@@ -796,6 +796,7 @@ func TestDoesStatusAllowPushNotification(t *testing.T) {
offline := &model.Status{UserId: userId, Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
away := &model.Status{UserId: userId, Status: model.STATUS_AWAY, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
online := &model.Status{UserId: userId, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
dnd := &model.Status{UserId: userId, Status: model.STATUS_DND, Manual: true, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
userNotifyProps["push_status"] = model.STATUS_ONLINE
// WHEN props is ONLINE and user is offline
@@ -825,6 +826,15 @@ func TestDoesStatusAllowPushNotification(t *testing.T) {
t.Fatal("Should have been false")
}
// WHEN props is ONLINE and user is dnd
if DoesStatusAllowPushNotification(userNotifyProps, dnd, channelId) {
t.Fatal("Should have been false")
}
if DoesStatusAllowPushNotification(userNotifyProps, dnd, "") {
t.Fatal("Should have been false")
}
userNotifyProps["push_status"] = model.STATUS_AWAY
// WHEN props is AWAY and user is offline
if !DoesStatusAllowPushNotification(userNotifyProps, offline, channelId) {
@@ -853,8 +863,17 @@ func TestDoesStatusAllowPushNotification(t *testing.T) {
t.Fatal("Should have been false")
}
// WHEN props is AWAY and user is dnd
if DoesStatusAllowPushNotification(userNotifyProps, dnd, channelId) {
t.Fatal("Should have been false")
}
if DoesStatusAllowPushNotification(userNotifyProps, dnd, "") {
t.Fatal("Should have been false")
}
userNotifyProps["push_status"] = model.STATUS_OFFLINE
// WHEN props is AWAY and user is offline
// WHEN props is OFFLINE and user is offline
if !DoesStatusAllowPushNotification(userNotifyProps, offline, channelId) {
t.Fatal("Should have been true")
}
@@ -863,7 +882,7 @@ func TestDoesStatusAllowPushNotification(t *testing.T) {
t.Fatal("Should have been true")
}
// WHEN props is AWAY and user is away
// WHEN props is OFFLINE and user is away
if DoesStatusAllowPushNotification(userNotifyProps, away, channelId) {
t.Fatal("Should have been false")
}
@@ -872,7 +891,7 @@ func TestDoesStatusAllowPushNotification(t *testing.T) {
t.Fatal("Should have been false")
}
// WHEN props is AWAY and user is online
// WHEN props is OFFLINE and user is online
if DoesStatusAllowPushNotification(userNotifyProps, online, channelId) {
t.Fatal("Should have been false")
}
@@ -880,6 +899,16 @@ func TestDoesStatusAllowPushNotification(t *testing.T) {
if DoesStatusAllowPushNotification(userNotifyProps, online, "") {
t.Fatal("Should have been false")
}
// WHEN props is OFFLINE and user is dnd
if DoesStatusAllowPushNotification(userNotifyProps, dnd, channelId) {
t.Fatal("Should have been false")
}
if DoesStatusAllowPushNotification(userNotifyProps, dnd, "") {
t.Fatal("Should have been false")
}
}
func TestGetDirectMessageNotificationEmailSubject(t *testing.T) {