initial commit
This commit is contained in:
parent
fe9c0e7188
commit
189f92c54b
54 changed files with 9238 additions and 0 deletions
88
server/command_hooks.go
Normal file
88
server/command_hooks.go
Normal file
|
@ -0,0 +1,88 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/mattermost/mattermost-server/model"
|
||||
"github.com/mattermost/mattermost-server/plugin"
|
||||
)
|
||||
|
||||
const CommandTrigger = "sample_plugin"
|
||||
|
||||
func (p *Plugin) registerCommand(teamId string) error {
|
||||
if err := p.API.RegisterCommand(&model.Command{
|
||||
TeamId: teamId,
|
||||
Trigger: CommandTrigger,
|
||||
AutoComplete: true,
|
||||
AutoCompleteHint: "(true|false)",
|
||||
AutoCompleteDesc: "Enables or disables the sample plugin hooks.",
|
||||
DisplayName: "Sample Plugin Command",
|
||||
Description: "A command used to enable or disable the sample plugin hooks.",
|
||||
}); err != nil {
|
||||
p.API.LogError(
|
||||
"failed to register command",
|
||||
"error", err.Error(),
|
||||
)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Plugin) emitStatusChange() {
|
||||
p.API.PublishWebSocketEvent("status_change", map[string]interface{}{
|
||||
"enabled": !p.disabled,
|
||||
}, &model.WebsocketBroadcast{})
|
||||
}
|
||||
|
||||
// ExecuteCommand executes a command that has been previously registered via the RegisterCommand
|
||||
// API.
|
||||
//
|
||||
// This sample implementation responds to a /sample_plugin command, allowing the user to enable
|
||||
// or disable the sample plugin's hooks functionality (but leave the command and webapp enabled).
|
||||
func (p *Plugin) ExecuteCommand(c *plugin.Context, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) {
|
||||
if !strings.HasPrefix(args.Command, "/"+CommandTrigger) {
|
||||
return &model.CommandResponse{
|
||||
ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL,
|
||||
Text: fmt.Sprintf("Unknown command: " + args.Command),
|
||||
}, nil
|
||||
}
|
||||
|
||||
if strings.HasSuffix(args.Command, "true") {
|
||||
if !p.disabled {
|
||||
return &model.CommandResponse{
|
||||
ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL,
|
||||
Text: "The sample plugin hooks are already enabled.",
|
||||
}, nil
|
||||
}
|
||||
|
||||
p.disabled = false
|
||||
p.emitStatusChange()
|
||||
|
||||
return &model.CommandResponse{
|
||||
ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL,
|
||||
Text: "Enabled sample plugin hooks.",
|
||||
}, nil
|
||||
|
||||
} else if strings.HasSuffix(args.Command, "false") {
|
||||
if p.disabled {
|
||||
return &model.CommandResponse{
|
||||
ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL,
|
||||
Text: "The sample plugin hooks are already disabled.",
|
||||
}, nil
|
||||
}
|
||||
|
||||
p.disabled = true
|
||||
p.emitStatusChange()
|
||||
|
||||
return &model.CommandResponse{
|
||||
ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL,
|
||||
Text: "Disabled sample plugin hooks.",
|
||||
}, nil
|
||||
}
|
||||
|
||||
return &model.CommandResponse{
|
||||
ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL,
|
||||
Text: fmt.Sprintf("Unknown command action: " + args.Command),
|
||||
}, nil
|
||||
}
|
Reference in a new issue