#10883 adding const error string DismissPostError to be returned by MessageWillBePosted (#10921)

Adds an exported const string that can be used by plugins to signal a client that the incoming post should be dismissed, instead of the current behavior which just leaves it pending.
This commit is contained in:
Evan do Carmo
2019-06-06 00:16:28 -04:00
committed by Hanzei
parent 16c11d7bf9
commit c73bc21d1e
3 changed files with 13 additions and 1 deletions

View File

@@ -236,7 +236,11 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
replacementPost, rejectionReason := hooks.MessageWillBePosted(pluginContext, post)
if rejectionReason != "" {
rejectionError = model.NewAppError("createPost", "Post rejected by plugin. "+rejectionReason, nil, "", http.StatusBadRequest)
id := "Post rejected by plugin. " + rejectionReason
if rejectionReason == plugin.DismissPostError {
id = plugin.DismissPostError
}
rejectionError = model.NewAppError("createPost", id, nil, "", http.StatusBadRequest)
return false
}
if replacementPost != nil {
@@ -245,6 +249,7 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
return true
}, plugin.MessageWillBePostedId)
if rejectionError != nil {
return nil, rejectionError
}

View File

@@ -36,6 +36,11 @@ const (
TotalHooksId = iota
)
const (
// DismissPostError dismisses a pending post when the error is returned from MessageWillBePosted.
DismissPostError = "plugin.message_will_be_posted.dismiss_post"
)
// Hooks describes the methods a plugin may implement to automatically receive the corresponding
// event.
//
@@ -90,6 +95,7 @@ type Hooks interface {
// To reject a post, return an non-empty string describing why the post was rejected.
// To modify the post, return the replacement, non-nil *model.Post and an empty string.
// To allow the post without modification, return a nil *model.Post and an empty string.
// To dismiss the post, return a nil *model.Post and the const DismissPostError string.
//
// If you don't need to modify or reject posts, use MessageHasBeenPosted instead.
//

View File

@@ -296,6 +296,7 @@ func (s *SqlPostStore) Get(id string) (*model.PostList, *model.AppError) {
for _, p := range posts {
pl.AddPost(p)
pl.AddOrder(p.Id)
}
return pl, nil