mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
PLT-4847 Fix formatting of links imported from Slack. (#4674)
This fixes mailto: links built from email addresses posted to Slack as described in the ticket, but also fixes any other type of URL that has been auto-linked in the Slack messages.
This commit is contained in:
committed by
Joram Wilander
parent
7f911d1632
commit
e7710cf1d2
@@ -494,6 +494,19 @@ func SlackConvertChannelMentions(channels []SlackChannel, posts map[string][]Sla
|
||||
return posts
|
||||
}
|
||||
|
||||
func SlackConvertPostsMarkup(posts map[string][]SlackPost) map[string][]SlackPost {
|
||||
// Convert URLs in Slack's format to Markdown format.
|
||||
regex := regexp.MustCompile(`<([^|<>]+)\|([^|<>]+)>`)
|
||||
|
||||
for channelName, channelPosts := range posts {
|
||||
for postIdx, post := range channelPosts {
|
||||
posts[channelName][postIdx].Text = regex.ReplaceAllString(post.Text, "[$2]($1)")
|
||||
}
|
||||
}
|
||||
|
||||
return posts
|
||||
}
|
||||
|
||||
func SlackImport(fileData multipart.File, fileSize int64, teamID string) (*model.AppError, *bytes.Buffer) {
|
||||
// Create log file
|
||||
log := bytes.NewBufferString(utils.T("api.slackimport.slack_import.log"))
|
||||
@@ -536,6 +549,7 @@ func SlackImport(fileData multipart.File, fileSize int64, teamID string) (*model
|
||||
|
||||
posts = SlackConvertUserMentions(users, posts)
|
||||
posts = SlackConvertChannelMentions(channels, posts)
|
||||
posts = SlackConvertPostsMarkup(posts)
|
||||
|
||||
addedUsers := SlackAddUsers(teamID, users, log)
|
||||
botUser := SlackAddBotUser(teamID, log)
|
||||
|
||||
@@ -217,3 +217,24 @@ func TestSlackSanitiseChannelProperties(t *testing.T) {
|
||||
t.Fatalf("Unexpected alterations to the channel properties: %v", c2s.Header)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSlackConvertPostsMarkup(t *testing.T) {
|
||||
input := make(map[string][]SlackPost)
|
||||
input["test"] = []SlackPost{
|
||||
{
|
||||
Text: "This message contains a link to <https://google.com|Google>.",
|
||||
},
|
||||
{
|
||||
Text: "This message contains a mailto link to <mailto:me@example.com|me@example.com> in it.",
|
||||
},
|
||||
}
|
||||
|
||||
output := SlackConvertPostsMarkup(input)
|
||||
|
||||
if output["test"][0].Text != "This message contains a link to [Google](https://google.com)." {
|
||||
t.Fatalf("Unexpected message after markup translation: %v", output["test"][0].Text)
|
||||
}
|
||||
if output["test"][1].Text != "This message contains a mailto link to [me@example.com](mailto:me@example.com) in it." {
|
||||
t.Fatalf("Unexpected message after markup translation: %v", output["test"][0].Text)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user