Commit 63df41b9 authored by Carlos Tadeu Panato Junior's avatar Carlos Tadeu Panato Junior Committed by Joram Wilander

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

parent bbe971cc
......@@ -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
......
......@@ -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) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment