PLT-6971: Fix Slack Import of non-ascii channel names. (#6969)
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
ecb82dbd12
Коммит
5f8a93fca6
@@ -53,6 +53,8 @@ type SlackPost struct {
|
||||
Attachments []*model.SlackAttachment `json:"attachments"`
|
||||
}
|
||||
|
||||
var isValidChannelNameCharacters = regexp.MustCompile(`^[a-zA-Z0-9\-_]+$`).MatchString
|
||||
|
||||
type SlackComment struct {
|
||||
User string `json:"user"`
|
||||
Comment string `json:"comment"`
|
||||
@@ -77,13 +79,17 @@ func SlackConvertTimeStamp(ts string) int64 {
|
||||
return timeStamp * 1000 // Convert to milliseconds
|
||||
}
|
||||
|
||||
func SlackConvertChannelName(channelName string) string {
|
||||
func SlackConvertChannelName(channelName string, channelId string) string {
|
||||
newName := strings.Trim(channelName, "_-")
|
||||
if len(newName) == 1 {
|
||||
return "slack-channel-" + newName
|
||||
}
|
||||
|
||||
return newName
|
||||
if isValidChannelNameCharacters(newName) {
|
||||
return newName
|
||||
} else {
|
||||
return strings.ToLower(channelId)
|
||||
}
|
||||
}
|
||||
|
||||
func SlackParseChannels(data io.Reader) ([]SlackChannel, error) {
|
||||
@@ -466,7 +472,7 @@ func SlackAddChannels(teamId string, slackchannels []SlackChannel, posts map[str
|
||||
TeamId: teamId,
|
||||
Type: model.CHANNEL_OPEN,
|
||||
DisplayName: sChannel.Name,
|
||||
Name: SlackConvertChannelName(sChannel.Name),
|
||||
Name: SlackConvertChannelName(sChannel.Name, sChannel.Id),
|
||||
Purpose: sChannel.Purpose["value"],
|
||||
Header: sChannel.Topic["value"],
|
||||
}
|
||||
|
||||
@@ -23,19 +23,21 @@ func TestSlackConvertTimeStamp(t *testing.T) {
|
||||
|
||||
func TestSlackConvertChannelName(t *testing.T) {
|
||||
var testData = []struct {
|
||||
input string
|
||||
nameInput string
|
||||
idInput string
|
||||
output string
|
||||
}{
|
||||
{"test-channel", "test-channel"},
|
||||
{"_test_channel_", "test_channel"},
|
||||
{"__test", "test"},
|
||||
{"-t", "slack-channel-t"},
|
||||
{"a", "slack-channel-a"},
|
||||
{"test-channel", "C0G08DLQH", "test-channel"},
|
||||
{"_test_channel_", "C0G04DLQH", "test_channel"},
|
||||
{"__test", "C0G07DLQH", "test"},
|
||||
{"-t", "C0G06DLQH", "slack-channel-t"},
|
||||
{"a", "C0G05DLQH", "slack-channel-a"},
|
||||
{"случайный", "C0G05DLQD", "c0g05dlqd"},
|
||||
}
|
||||
|
||||
for _, td := range testData {
|
||||
if td.output != SlackConvertChannelName(td.input) {
|
||||
t.Fatalf("Did not convert channel name correctly: %v", td.input)
|
||||
if td.output != SlackConvertChannelName(td.nameInput, td.idInput) {
|
||||
t.Fatalf("Did not convert channel name correctly: %v", td.nameInput)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user