libcwtch-go/utils/notifications.go

52 lines
1.8 KiB
Go
Raw Normal View History

2022-02-05 00:17:39 +00:00
package utils
import (
"cwtch.im/cwtch/model"
"cwtch.im/cwtch/model/attr"
"git.openprivacy.ca/cwtch.im/libcwtch-go/constants"
)
func determineNotification(ci *model.Conversation) constants.NotificationType {
settings := ReadGlobalSettings()
switch settings.NotificationPolicy {
case NotificationPolicyMute:
2022-02-05 00:17:39 +00:00
return constants.NotificationNone
case NotificationPolicyOptIn:
2022-02-05 00:17:39 +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(settings.NotificationContent)
}
2022-02-05 00:17:39 +00:00
}
}
return constants.NotificationNone
case NotificationPolicyDefaultAll:
2022-02-05 00:17:39 +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(settings.NotificationContent)
2022-02-05 00:17:39 +00:00
}
}
}
return notificationContentToNotificationType(settings.NotificationContent)
2022-02-05 00:17:39 +00:00
}
return constants.NotificationNone
}
func notificationContentToNotificationType(notificationContent string) constants.NotificationType {
if notificationContent == "NotificationContent.ContactInfo" {
return constants.NotificationConversation
}
return constants.NotificationEvent
}