summaryrefslogtreecommitdiffstats
path: root/app/command_channel_rename.go
diff options
context:
space:
mode:
authorCarlos Tadeu Panato Junior <ctadeu@gmail.com>2017-07-31 18:54:34 +0200
committerHarrison Healey <harrisonmhealey@gmail.com>2017-07-31 12:54:34 -0400
commit251f000c68ed384923d3b2bc6b3caea9aef2a089 (patch)
treec8740dcf79f1f837529f2a436f1ed377c771ae43 /app/command_channel_rename.go
parent489602efe5e099f57bb2b58b7c67f8fc104ff5db (diff)
downloadchat-251f000c68ed384923d3b2bc6b3caea9aef2a089.tar.gz
chat-251f000c68ed384923d3b2bc6b3caea9aef2a089.tar.bz2
chat-251f000c68ed384923d3b2bc6b3caea9aef2a089.zip
[PLT-6710] /rename [text] slash command: Rename the channel (#6570)
* /rename [text] slash command: Rename the channel * update strings per review
Diffstat (limited to 'app/command_channel_rename.go')
-rw-r--r--app/command_channel_rename.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/app/command_channel_rename.go b/app/command_channel_rename.go
new file mode 100644
index 000000000..f18b127ad
--- /dev/null
+++ b/app/command_channel_rename.go
@@ -0,0 +1,69 @@
+// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package app
+
+import (
+ "github.com/mattermost/platform/model"
+ goi18n "github.com/nicksnyder/go-i18n/i18n"
+)
+
+type RenameProvider struct {
+}
+
+const (
+ CMD_RENAME = "rename"
+)
+
+func init() {
+ RegisterCommandProvider(&RenameProvider{})
+}
+
+func (me *RenameProvider) GetTrigger() string {
+ return CMD_RENAME
+}
+
+func (me *RenameProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
+ return &model.Command{
+ Trigger: CMD_RENAME,
+ AutoComplete: true,
+ AutoCompleteDesc: T("api.command_channel_rename.desc"),
+ AutoCompleteHint: T("api.command_channel_rename.hint"),
+ DisplayName: T("api.command_channel_rename.name"),
+ }
+}
+
+func (me *RenameProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
+ channel, err := GetChannel(args.ChannelId)
+ if err != nil {
+ return &model.CommandResponse{Text: args.T("api.command_channel_rename.channel.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
+ }
+
+ if channel.Type == model.CHANNEL_OPEN && !SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
+ return &model.CommandResponse{Text: args.T("api.command_channel_rename.permission.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
+ }
+
+ if channel.Type == model.CHANNEL_PRIVATE && !SessionHasPermissionToChannel(args.Session, args.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
+ return &model.CommandResponse{Text: args.T("api.command_channel_rename.permission.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
+ }
+
+ if channel.Type == model.CHANNEL_GROUP || channel.Type == model.CHANNEL_DIRECT {
+ return &model.CommandResponse{Text: args.T("api.command_channel_rename.direct_group.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
+ }
+
+ if len(message) == 0 {
+ return &model.CommandResponse{Text: args.T("api.command_channel_rename.message.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
+ }
+
+ patch := &model.ChannelPatch{
+ DisplayName: new(string),
+ }
+ *patch.DisplayName = message
+
+ _, err = PatchChannel(channel, patch, args.UserId)
+ if err != nil {
+ return &model.CommandResponse{Text: args.T("api.command_channel_rename.update_channel.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
+ }
+
+ return &model.CommandResponse{}
+}