summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim <vad.pashkov@gmail.com>2018-10-24 17:34:43 +0300
committerChristopher Speller <crspeller@gmail.com>2018-10-24 07:34:43 -0700
commit54b7a29581c8d93c876a2a5840b05410f2a35fb9 (patch)
treeedc5077d7a454026f859f44158ae43b46308e856
parent159c2a44dced5d6331f5fc5e7220e561e6468ad1 (diff)
downloadchat-54b7a29581c8d93c876a2a5840b05410f2a35fb9.tar.gz
chat-54b7a29581c8d93c876a2a5840b05410f2a35fb9.tar.bz2
chat-54b7a29581c8d93c876a2a5840b05410f2a35fb9.zip
MM-12459 Include User Notify Props in the Bulk Export (#9724)
-rw-r--r--app/export.go23
-rw-r--r--app/export_test.go31
-rw-r--r--model/user.go34
3 files changed, 71 insertions, 17 deletions
diff --git a/app/export.go b/app/export.go
index b911954a5..7c1736157 100644
--- a/app/export.go
+++ b/app/export.go
@@ -150,6 +150,8 @@ func (a *App) ExportAllUsers(writer io.Writer) *model.AppError {
userLine := ImportLineFromUser(user)
+ userLine.User.NotifyProps = a.buildUserNotifyProps(user.NotifyProps)
+
// Do the Team Memberships.
members, err := a.buildUserTeamAndChannelMemberships(user.Id)
if err != nil {
@@ -218,6 +220,27 @@ func (a *App) buildUserChannelMemberships(userId string, teamId string) (*[]User
return &memberships, nil
}
+func (a *App) buildUserNotifyProps(notifyProps model.StringMap) *UserNotifyPropsImportData {
+
+ getProp := func(key string) *string {
+ if v, ok := notifyProps[key]; ok {
+ return &v
+ }
+ return nil
+ }
+
+ return &UserNotifyPropsImportData{
+ Desktop: getProp(model.DESKTOP_NOTIFY_PROP),
+ DesktopSound: getProp(model.DESKTOP_SOUND_NOTIFY_PROP),
+ Email: getProp(model.EMAIL_NOTIFY_PROP),
+ Mobile: getProp(model.MOBILE_NOTIFY_PROP),
+ MobilePushStatus: getProp(model.MOBILE_PUSH_STATUS_NOTIFY_PROP),
+ ChannelTrigger: getProp(model.CHANNEL_MENTIONS_NOTIFY_PROP),
+ CommentsTrigger: getProp(model.COMMENTS_NOTIFY_PROP),
+ MentionKeys: getProp(model.MENTION_KEYS_NOTIFY_PROP),
+ }
+}
+
func (a *App) ExportAllPosts(writer io.Writer) *model.AppError {
afterId := strings.Repeat("0", 26)
for {
diff --git a/app/export_test.go b/app/export_test.go
index 05b81387a..bb6d53392 100644
--- a/app/export_test.go
+++ b/app/export_test.go
@@ -1,10 +1,11 @@
package app
import (
- "github.com/stretchr/testify/assert"
"testing"
"github.com/mattermost/mattermost-server/model"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
func TestReactionsOfPost(t *testing.T) {
@@ -30,3 +31,31 @@ func TestReactionsOfPost(t *testing.T) {
assert.Equal(t, reactionObject.EmojiName, *(*reactionsOfPost)[0].EmojiName)
}
+
+func TestExportUserNotifyProps(t *testing.T) {
+
+ th := Setup().InitBasic()
+ defer th.TearDown()
+
+ userNotifyProps := model.StringMap{
+ model.DESKTOP_NOTIFY_PROP: model.USER_NOTIFY_ALL,
+ model.DESKTOP_SOUND_NOTIFY_PROP: "true",
+ model.EMAIL_NOTIFY_PROP: "true",
+ model.MOBILE_NOTIFY_PROP: model.USER_NOTIFY_ALL,
+ model.MOBILE_PUSH_STATUS_NOTIFY_PROP: model.STATUS_ONLINE,
+ model.CHANNEL_MENTIONS_NOTIFY_PROP: "true",
+ model.COMMENTS_NOTIFY_PROP: model.COMMENTS_NOTIFY_ROOT,
+ model.MENTION_KEYS_NOTIFY_PROP: "valid,misc",
+ }
+
+ exportNotifyProps := th.App.buildUserNotifyProps(userNotifyProps)
+
+ require.Equal(t, userNotifyProps[model.DESKTOP_NOTIFY_PROP], *exportNotifyProps.Desktop)
+ require.Equal(t, userNotifyProps[model.DESKTOP_SOUND_NOTIFY_PROP], *exportNotifyProps.DesktopSound)
+ require.Equal(t, userNotifyProps[model.EMAIL_NOTIFY_PROP], *exportNotifyProps.Email)
+ require.Equal(t, userNotifyProps[model.MOBILE_NOTIFY_PROP], *exportNotifyProps.Mobile)
+ require.Equal(t, userNotifyProps[model.MOBILE_PUSH_STATUS_NOTIFY_PROP], *exportNotifyProps.MobilePushStatus)
+ require.Equal(t, userNotifyProps[model.CHANNEL_MENTIONS_NOTIFY_PROP], *exportNotifyProps.ChannelTrigger)
+ require.Equal(t, userNotifyProps[model.COMMENTS_NOTIFY_PROP], *exportNotifyProps.CommentsTrigger)
+ require.Equal(t, userNotifyProps[model.MENTION_KEYS_NOTIFY_PROP], *exportNotifyProps.MentionKeys)
+}
diff --git a/model/user.go b/model/user.go
index 06ad9294f..40ccd1661 100644
--- a/model/user.go
+++ b/model/user.go
@@ -16,22 +16,24 @@ import (
)
const (
- ME = "me"
- USER_NOTIFY_ALL = "all"
- USER_NOTIFY_MENTION = "mention"
- USER_NOTIFY_NONE = "none"
- DESKTOP_NOTIFY_PROP = "desktop"
- DESKTOP_SOUND_NOTIFY_PROP = "desktop_sound"
- MARK_UNREAD_NOTIFY_PROP = "mark_unread"
- PUSH_NOTIFY_PROP = "push"
- PUSH_STATUS_NOTIFY_PROP = "push_status"
- EMAIL_NOTIFY_PROP = "email"
- CHANNEL_MENTIONS_NOTIFY_PROP = "channel"
- COMMENTS_NOTIFY_PROP = "comments"
- MENTION_KEYS_NOTIFY_PROP = "mention_keys"
- COMMENTS_NOTIFY_NEVER = "never"
- COMMENTS_NOTIFY_ROOT = "root"
- COMMENTS_NOTIFY_ANY = "any"
+ ME = "me"
+ USER_NOTIFY_ALL = "all"
+ USER_NOTIFY_MENTION = "mention"
+ USER_NOTIFY_NONE = "none"
+ DESKTOP_NOTIFY_PROP = "desktop"
+ DESKTOP_SOUND_NOTIFY_PROP = "desktop_sound"
+ MARK_UNREAD_NOTIFY_PROP = "mark_unread"
+ PUSH_NOTIFY_PROP = "push"
+ PUSH_STATUS_NOTIFY_PROP = "push_status"
+ EMAIL_NOTIFY_PROP = "email"
+ MOBILE_NOTIFY_PROP = "mobile"
+ MOBILE_PUSH_STATUS_NOTIFY_PROP = "mobile_push_status"
+ CHANNEL_MENTIONS_NOTIFY_PROP = "channel"
+ COMMENTS_NOTIFY_PROP = "comments"
+ MENTION_KEYS_NOTIFY_PROP = "mention_keys"
+ COMMENTS_NOTIFY_NEVER = "never"
+ COMMENTS_NOTIFY_ROOT = "root"
+ COMMENTS_NOTIFY_ANY = "any"
DEFAULT_LOCALE = "en"
USER_AUTH_SERVICE_EMAIL = "email"