Fix !channel linking in Slack import. (#4065)

Original version of the patch didn't take into account that, like with
@mentions, there's an "old" and a "new" format in the Slack export files
for channel mentions. This version imports both correctly.
Этот коммит содержится в:
George Goldberg
2016-09-21 19:17:48 +01:00
коммит произвёл enahum
родитель 185387e277
Коммит de79343b9a
2 изменённых файлов: 13 добавлений и 4 удалений

Просмотреть файл

@@ -286,15 +286,20 @@ func SlackConvertUserMentions(users []SlackUser, posts map[string][]SlackPost) m
}
func SlackConvertChannelMentions(channels []SlackChannel, posts map[string][]SlackPost) map[string][]SlackPost {
var channelPatterns = make(map[string]string, len(channels))
var regexes = make(map[string]*regexp.Regexp, len(channels))
for _, channel := range channels {
channelPatterns["!"+channel.Name] = "<#" + channel.Id + ">"
r, err := regexp.Compile("<#" + channel.Id + `(\|` + channel.Name + ")?>")
if err != nil {
l4g.Warn(utils.T("api.slackimport.slack_convert_channel_mentions.compile_regexp_failed.warn"), channel.Id, channel.Name)
continue
}
regexes["!"+channel.Name] = r
}
for channelName, channelPosts := range posts {
for postIdx, post := range channelPosts {
for channelReplace, channelMatch := range channelPatterns {
post.Text = strings.Replace(post.Text, channelMatch, channelReplace, -1)
for channelReplace, r := range regexes {
post.Text = r.ReplaceAllString(post.Text, channelReplace)
posts[channelName][postIdx] = post
}
}

Просмотреть файл

@@ -1511,6 +1511,10 @@
"id": "api.slackimport.slack_convert_user_mentions.compile_regexp_failed.warn",
"translation": "Failed to compile the @mention matching regular expression for Slack user {{.UserID}} {{.Username}}"
},
{
"id": "api.slackimport.slack_convert_channel_mentions.compile_regexp_failed.warn",
"translation": "Failed to compile the !channel matching regular expression for Slack channel {{.ChannelID}} {{.ChannelName}}"
},
{
"id": "api.slackimport.slack_import.log",
"translation": "Mattermost Slack Import Log\r\n"