github.com/vnforks/kid@v5.11.1+incompatible/app/export_converters.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package app
     5  
     6  import (
     7  	"strings"
     8  
     9  	"github.com/mattermost/mattermost-server/model"
    10  )
    11  
    12  func ImportLineFromTeam(team *model.TeamForExport) *LineImportData {
    13  	return &LineImportData{
    14  		Type: "team",
    15  		Team: &TeamImportData{
    16  			Name:            &team.Name,
    17  			DisplayName:     &team.DisplayName,
    18  			Type:            &team.Type,
    19  			Description:     &team.Description,
    20  			AllowOpenInvite: &team.AllowOpenInvite,
    21  			Scheme:          team.SchemeName,
    22  		},
    23  	}
    24  }
    25  
    26  func ImportLineFromChannel(channel *model.ChannelForExport) *LineImportData {
    27  	return &LineImportData{
    28  		Type: "channel",
    29  		Channel: &ChannelImportData{
    30  			Team:        &channel.TeamName,
    31  			Name:        &channel.Name,
    32  			DisplayName: &channel.DisplayName,
    33  			Type:        &channel.Type,
    34  			Header:      &channel.Header,
    35  			Purpose:     &channel.Purpose,
    36  			Scheme:      channel.SchemeName,
    37  		},
    38  	}
    39  }
    40  
    41  func ImportLineFromDirectChannel(channel *model.DirectChannelForExport) *LineImportData {
    42  	return &LineImportData{
    43  		Type: "direct_channel",
    44  		DirectChannel: &DirectChannelImportData{
    45  			Header:  &channel.Header,
    46  			Members: channel.Members,
    47  		},
    48  	}
    49  }
    50  
    51  func ImportLineFromUser(user *model.User, exportedPrefs map[string]*string) *LineImportData {
    52  	// Bulk Importer doesn't accept "empty string" for AuthService.
    53  	var authService *string
    54  	if user.AuthService != "" {
    55  		authService = &user.AuthService
    56  	}
    57  
    58  	return &LineImportData{
    59  		Type: "user",
    60  		User: &UserImportData{
    61  			Username:           &user.Username,
    62  			Email:              &user.Email,
    63  			AuthService:        authService,
    64  			AuthData:           user.AuthData,
    65  			Nickname:           &user.Nickname,
    66  			FirstName:          &user.FirstName,
    67  			LastName:           &user.LastName,
    68  			Position:           &user.Position,
    69  			Roles:              &user.Roles,
    70  			Locale:             &user.Locale,
    71  			UseMarkdownPreview: exportedPrefs["UseMarkdownPreview"],
    72  			UseFormatting:      exportedPrefs["UseFormatting"],
    73  			ShowUnreadSection:  exportedPrefs["ShowUnreadSection"],
    74  			Theme:              exportedPrefs["Theme"],
    75  			UseMilitaryTime:    exportedPrefs["UseMilitaryTime"],
    76  			CollapsePreviews:   exportedPrefs["CollapsePreviews"],
    77  			MessageDisplay:     exportedPrefs["MessageDisplay"],
    78  			ChannelDisplayMode: exportedPrefs["ChannelDisplayMode"],
    79  			TutorialStep:       exportedPrefs["TutorialStep"],
    80  			EmailInterval:      exportedPrefs["EmailInterval"],
    81  			DeleteAt:           &user.DeleteAt,
    82  		},
    83  	}
    84  }
    85  
    86  func ImportUserTeamDataFromTeamMember(member *model.TeamMemberForExport) *UserTeamImportData {
    87  	rolesList := strings.Fields(member.Roles)
    88  	if member.SchemeAdmin {
    89  		rolesList = append(rolesList, model.TEAM_ADMIN_ROLE_ID)
    90  	}
    91  	if member.SchemeUser {
    92  		rolesList = append(rolesList, model.TEAM_USER_ROLE_ID)
    93  	}
    94  	roles := strings.Join(rolesList, " ")
    95  	return &UserTeamImportData{
    96  		Name:  &member.TeamName,
    97  		Roles: &roles,
    98  	}
    99  }
   100  
   101  func ImportUserChannelDataFromChannelMemberAndPreferences(member *model.ChannelMemberForExport, preferences *model.Preferences) *UserChannelImportData {
   102  	rolesList := strings.Fields(member.Roles)
   103  	if member.SchemeAdmin {
   104  		rolesList = append(rolesList, model.CHANNEL_ADMIN_ROLE_ID)
   105  	}
   106  	if member.SchemeUser {
   107  		rolesList = append(rolesList, model.CHANNEL_USER_ROLE_ID)
   108  	}
   109  	props := member.NotifyProps
   110  	notifyProps := UserChannelNotifyPropsImportData{}
   111  
   112  	desktop, exist := props[model.DESKTOP_NOTIFY_PROP]
   113  	if exist {
   114  		notifyProps.Desktop = &desktop
   115  	}
   116  	mobile, exist := props[model.PUSH_NOTIFY_PROP]
   117  	if exist {
   118  		notifyProps.Mobile = &mobile
   119  	}
   120  	markUnread, exist := props[model.MARK_UNREAD_NOTIFY_PROP]
   121  	if exist {
   122  		notifyProps.MarkUnread = &markUnread
   123  	}
   124  
   125  	favorite := false
   126  	for _, preference := range *preferences {
   127  		if member.ChannelId == preference.Name {
   128  			favorite = true
   129  		}
   130  	}
   131  
   132  	roles := strings.Join(rolesList, " ")
   133  	return &UserChannelImportData{
   134  		Name:        &member.ChannelName,
   135  		Roles:       &roles,
   136  		NotifyProps: &notifyProps,
   137  		Favorite:    &favorite,
   138  	}
   139  }
   140  
   141  func ImportLineForPost(post *model.PostForExport) *LineImportData {
   142  	return &LineImportData{
   143  		Type: "post",
   144  		Post: &PostImportData{
   145  			Team:     &post.TeamName,
   146  			Channel:  &post.ChannelName,
   147  			User:     &post.Username,
   148  			Message:  &post.Message,
   149  			CreateAt: &post.CreateAt,
   150  		},
   151  	}
   152  }
   153  
   154  func ImportLineForDirectPost(post *model.DirectPostForExport) *LineImportData {
   155  	return &LineImportData{
   156  		Type: "direct_post",
   157  		DirectPost: &DirectPostImportData{
   158  			ChannelMembers: post.ChannelMembers,
   159  			User:           &post.User,
   160  			Message:        &post.Message,
   161  			CreateAt:       &post.CreateAt,
   162  		},
   163  	}
   164  }
   165  
   166  func ImportReplyFromPost(post *model.ReplyForExport) *ReplyImportData {
   167  	return &ReplyImportData{
   168  		User:     &post.Username,
   169  		Message:  &post.Message,
   170  		CreateAt: &post.CreateAt,
   171  	}
   172  }
   173  
   174  func ImportReactionFromPost(user *model.User, reaction *model.Reaction) *ReactionImportData {
   175  	return &ReactionImportData{
   176  		User:      &user.Username,
   177  		EmojiName: &reaction.EmojiName,
   178  		CreateAt:  &reaction.CreateAt,
   179  	}
   180  }
   181  
   182  func ImportLineFromEmoji(emoji *model.Emoji, filePath string) *LineImportData {
   183  	return &LineImportData{
   184  		Type: "emoji",
   185  		Emoji: &EmojiImportData{
   186  			Name:  &emoji.Name,
   187  			Image: &filePath,
   188  		},
   189  	}
   190  }