From 748a416961923932e9b2969beb2730ee8c240ea7 Mon Sep 17 00:00:00 2001 From: enahum Date: Thu, 23 Feb 2017 11:08:48 -0300 Subject: =?UTF-8?q?PLT-3193=20Add=20channel=20notification=20preferences?= =?UTF-8?q?=20for=20push=20and=20email=20noti=E2=80=A6=20(#5500)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- model/channel_member.go | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'model/channel_member.go') 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, } } -- cgit v1.2.3-1-g7c22