summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2015-09-14 14:32:15 -0400
committerJoram Wilander <jwawilander@gmail.com>2015-09-14 14:32:15 -0400
commit125b7dc71bb3ef00dc038632bf71737e5d25158b (patch)
treebea7dc36e248391ceba9323f07c9d516c7b5af1a
parent0d8e27ce94c53b628109cc6ad11feeb2a1e4de88 (diff)
parent7b3c2d6d85ecee86fbc85b440e7028018b1090b1 (diff)
downloadchat-125b7dc71bb3ef00dc038632bf71737e5d25158b.tar.gz
chat-125b7dc71bb3ef00dc038632bf71737e5d25158b.tar.bz2
chat-125b7dc71bb3ef00dc038632bf71737e5d25158b.zip
Merge pull request #677 from mattermost/plt-50
PLT-50 Allowing channel names with underscores. Allow import of more slack channel names.
-rw-r--r--api/slackimport.go11
-rw-r--r--model/team.go2
-rw-r--r--model/utils.go12
-rw-r--r--web/react/components/team_import_tab.jsx2
4 files changed, 21 insertions, 6 deletions
diff --git a/api/slackimport.go b/api/slackimport.go
index 1d037a934..4e6c01dbb 100644
--- a/api/slackimport.go
+++ b/api/slackimport.go
@@ -50,6 +50,15 @@ func SlackConvertTimeStamp(ts string) int64 {
return timeStamp * 1000 // Convert to milliseconds
}
+func SlackConvertChannelName(channelName string) string {
+ newName := strings.Trim(channelName, "_-")
+ if len(newName) == 1 {
+ return "slack-channel-" + newName
+ }
+
+ return newName
+}
+
func SlackParseChannels(data io.Reader) []SlackChannel {
decoder := json.NewDecoder(data)
@@ -172,7 +181,7 @@ func SlackAddChannels(teamId string, slackchannels []SlackChannel, posts map[str
TeamId: teamId,
Type: model.CHANNEL_OPEN,
DisplayName: sChannel.Name,
- Name: sChannel.Name,
+ Name: SlackConvertChannelName(sChannel.Name),
Description: sChannel.Topic["value"],
}
mChannel := ImportChannel(&newChannel)
diff --git a/model/team.go b/model/team.go
index 6006f738c..8b4f82830 100644
--- a/model/team.go
+++ b/model/team.go
@@ -158,7 +158,7 @@ func IsReservedTeamName(s string) bool {
func IsValidTeamName(s string) bool {
- if !IsValidAlphaNum(s) {
+ if !IsValidAlphaNum(s, false) {
return false
}
diff --git a/model/utils.go b/model/utils.go
index 17d1c6317..d5122e805 100644
--- a/model/utils.go
+++ b/model/utils.go
@@ -202,7 +202,7 @@ func GetSubDomain(s string) (string, string) {
func IsValidChannelIdentifier(s string) bool {
- if !IsValidAlphaNum(s) {
+ if !IsValidAlphaNum(s, true) {
return false
}
@@ -213,10 +213,16 @@ func IsValidChannelIdentifier(s string) bool {
return true
}
+var validAlphaNumUnderscore = regexp.MustCompile(`^[a-z0-9]+([a-z\-\_0-9]+|(__)?)[a-z0-9]+$`)
var validAlphaNum = regexp.MustCompile(`^[a-z0-9]+([a-z\-0-9]+|(__)?)[a-z0-9]+$`)
-func IsValidAlphaNum(s string) bool {
- match := validAlphaNum.MatchString(s)
+func IsValidAlphaNum(s string, allowUnderscores bool) bool {
+ var match bool
+ if allowUnderscores {
+ match = validAlphaNumUnderscore.MatchString(s)
+ } else {
+ match = validAlphaNum.MatchString(s)
+ }
if !match {
return false
diff --git a/web/react/components/team_import_tab.jsx b/web/react/components/team_import_tab.jsx
index 031abc36a..8315430e4 100644
--- a/web/react/components/team_import_tab.jsx
+++ b/web/react/components/team_import_tab.jsx
@@ -35,7 +35,7 @@ export default class TeamImportTab extends React.Component {
var uploadHelpText = (
<div>
<p>{'Slack does not allow you to export files, images, private groups or direct messages stored in Slack. Therefore, Slack import to Mattermost only supports importing of text messages in your Slack team\'\s public channels.'}</p>
- <p>{'The Slack import to Mattermost is in "Preview". Slack bot posts and channels with underscores do not yet import.'}</p>
+ <p>{'The Slack import to Mattermost is in "Preview". Slack bot posts do not yet import.'}</p>
</div>
);