diff --git a/sam/rest/message.go b/sam/rest/message.go index 5d743ee85..d449aef25 100644 --- a/sam/rest/message.go +++ b/sam/rest/message.go @@ -3,12 +3,13 @@ package rest import ( "context" + "github.com/pkg/errors" + "github.com/crusttech/crust/internal/payload" "github.com/crusttech/crust/internal/payload/outgoing" "github.com/crusttech/crust/sam/rest/request" "github.com/crusttech/crust/sam/service" "github.com/crusttech/crust/sam/types" - "github.com/pkg/errors" ) var _ = errors.Wrap @@ -93,7 +94,7 @@ func (ctrl *Message) ReactionRemove(ctx context.Context, r *request.MessageReact } func (ctrl *Message) wrap(ctx context.Context) func(m *types.Message, err error) (*outgoing.Message, error) { return func(m *types.Message, err error) (*outgoing.Message, error) { - if err != nil { + if err != nil || m == nil { return nil, err } else { return payload.Message(ctx, m), nil diff --git a/sam/service/message.go b/sam/service/message.go index 3c06ab57b..fe05ab683 100644 --- a/sam/service/message.go +++ b/sam/service/message.go @@ -205,28 +205,28 @@ func (svc *message) Update(in *types.Message) (message *types.Message, err error _ = currentUserID return message, svc.db.Transaction(func() (err error) { - original, err := svc.message.FindMessageByID(in.ID) + message, err = svc.message.FindMessageByID(in.ID) if err != nil { - return err + return errors.Wrap(err, "Could not load message for editing") } - if original.Message == in.Message { + if message.Message == in.Message { // Nothing changed return nil } - if original.UserID != currentUserID { + if message.UserID != currentUserID { return errors.New("Not an owner") } - // Allow message content to be changed, ignore everything else - original.Message = in.Message + // Allow message content to be changed + message.Message = in.Message - if message, err = svc.message.UpdateMessage(original); err != nil { + if message, err = svc.message.UpdateMessage(message); err != nil { return err } - return svc.sendEvent(original) + return svc.sendEvent(message) }) }