autobindings/utils/notifications.go

52 lines
1.8 KiB
Go
Raw Normal View History

2023-02-21 20:31:49 +00:00
package utils
import (
"cwtch.im/cwtch/model"
"cwtch.im/cwtch/model/attr"
"cwtch.im/cwtch/settings"
2023-02-23 18:14:27 +00:00
"git.openprivacy.ca/cwtch.im/cwtch-autobindings/constants"
2023-02-21 20:31:49 +00:00
)
func determineNotification(ci *model.Conversation, gsettings settings.GlobalSettings) constants.NotificationType {
switch gsettings.NotificationPolicy {
case settings.NotificationPolicyMute:
2023-02-21 20:31:49 +00:00
return constants.NotificationNone
case settings.NotificationPolicyOptIn:
2023-02-21 20:31:49 +00:00
if ci != nil {
if policy, exists := ci.GetAttribute(attr.LocalScope, attr.ProfileZone, constants.ConversationNotificationPolicy); exists {
switch policy {
case constants.ConversationNotificationPolicyDefault:
return constants.NotificationNone
case constants.ConversationNotificationPolicyNever:
return constants.NotificationNone
case constants.ConversationNotificationPolicyOptIn:
return notificationContentToNotificationType(gsettings.NotificationContent)
2023-02-21 20:31:49 +00:00
}
}
}
return constants.NotificationNone
case settings.NotificationPolicyDefaultAll:
2023-02-21 20:31:49 +00:00
if ci != nil {
if policy, exists := ci.GetAttribute(attr.LocalScope, attr.ProfileZone, constants.ConversationNotificationPolicy); exists {
switch policy {
case constants.ConversationNotificationPolicyNever:
return constants.NotificationNone
case constants.ConversationNotificationPolicyDefault:
fallthrough
case constants.ConversationNotificationPolicyOptIn:
return notificationContentToNotificationType(gsettings.NotificationContent)
2023-02-21 20:31:49 +00:00
}
}
}
return notificationContentToNotificationType(gsettings.NotificationContent)
2023-02-21 20:31:49 +00:00
}
return constants.NotificationNone
}
func notificationContentToNotificationType(notificationContent string) constants.NotificationType {
if notificationContent == "NotificationContent.ContactInfo" {
return constants.NotificationConversation
}
return constants.NotificationEvent
}