summaryrefslogtreecommitdiffstats
path: root/model/channel_member.go
diff options
context:
space:
mode:
authorenahum <nahumhbl@gmail.com>2017-02-23 11:08:48 -0300
committerGitHub <noreply@github.com>2017-02-23 11:08:48 -0300
commit748a416961923932e9b2969beb2730ee8c240ea7 (patch)
treef6ab74d35fc1be8b9015f8a89e7ac6058ec1d4fe /model/channel_member.go
parentca7d3b6e7bc2e52cf40180a462492313f298e760 (diff)
downloadchat-748a416961923932e9b2969beb2730ee8c240ea7.tar.gz
chat-748a416961923932e9b2969beb2730ee8c240ea7.tar.bz2
chat-748a416961923932e9b2969beb2730ee8c240ea7.zip
PLT-3193 Add channel notification preferences for push and email notiā€¦ (#5500)
* PLT-3193 Add channel notification preferences for push and email notifications * unit tests, model validation and localization * Feedback review * Adding back allowFromCache check * Setting push and email to use default settings * Move props as constants * address feedback
Diffstat (limited to 'model/channel_member.go')
-rw-r--r--model/channel_member.go28
1 files changed, 24 insertions, 4 deletions
diff --git a/model/channel_member.go b/model/channel_member.go
index a607a5059..5de58bc4f 100644
--- a/model/channel_member.go
+++ b/model/channel_member.go
@@ -88,18 +88,32 @@ func (o *ChannelMember) IsValid() *AppError {
return NewLocAppError("ChannelMember.IsValid", "model.channel_member.is_valid.user_id.app_error", nil, "")
}
- notifyLevel := o.NotifyProps["desktop"]
+ notifyLevel := o.NotifyProps[DESKTOP_NOTIFY_PROP]
if len(notifyLevel) > 20 || !IsChannelNotifyLevelValid(notifyLevel) {
return NewLocAppError("ChannelMember.IsValid", "model.channel_member.is_valid.notify_level.app_error",
nil, "notify_level="+notifyLevel)
}
- markUnreadLevel := o.NotifyProps["mark_unread"]
+ markUnreadLevel := o.NotifyProps[MARK_UNREAD_NOTIFY_PROP]
if len(markUnreadLevel) > 20 || !IsChannelMarkUnreadLevelValid(markUnreadLevel) {
return NewLocAppError("ChannelMember.IsValid", "model.channel_member.is_valid.unread_level.app_error",
nil, "mark_unread_level="+markUnreadLevel)
}
+ if pushLevel, ok := o.NotifyProps[PUSH_NOTIFY_PROP]; ok {
+ if len(pushLevel) > 20 || !IsChannelNotifyLevelValid(pushLevel) {
+ return NewLocAppError("ChannelMember.IsValid", "model.channel_member.is_valid.push_level.app_error",
+ nil, "push_notification_level="+pushLevel)
+ }
+ }
+
+ if sendEmail, ok := o.NotifyProps[EMAIL_NOTIFY_PROP]; ok {
+ if len(sendEmail) > 20 || !IsSendEmailValid(sendEmail) {
+ return NewLocAppError("ChannelMember.IsValid", "model.channel_member.is_valid.email_value.app_error",
+ nil, "push_notification_level="+sendEmail)
+ }
+ }
+
return nil
}
@@ -126,9 +140,15 @@ func IsChannelMarkUnreadLevelValid(markUnreadLevel string) bool {
return markUnreadLevel == CHANNEL_MARK_UNREAD_ALL || markUnreadLevel == CHANNEL_MARK_UNREAD_MENTION
}
+func IsSendEmailValid(sendEmail string) bool {
+ return sendEmail == CHANNEL_NOTIFY_DEFAULT || sendEmail == "true" || sendEmail == "false"
+}
+
func GetDefaultChannelNotifyProps() StringMap {
return StringMap{
- "desktop": CHANNEL_NOTIFY_DEFAULT,
- "mark_unread": CHANNEL_MARK_UNREAD_ALL,
+ DESKTOP_NOTIFY_PROP: CHANNEL_NOTIFY_DEFAULT,
+ MARK_UNREAD_NOTIFY_PROP: CHANNEL_MARK_UNREAD_ALL,
+ PUSH_NOTIFY_PROP: CHANNEL_NOTIFY_DEFAULT,
+ EMAIL_NOTIFY_PROP: CHANNEL_NOTIFY_DEFAULT,
}
}