diff --git a/internal/payload/outgoing.go b/internal/payload/outgoing.go index 135eaeb99..c7a0289fd 100644 --- a/internal/payload/outgoing.go +++ b/internal/payload/outgoing.go @@ -72,6 +72,8 @@ func User(user *auth.User) *outgoing.User { return &outgoing.User{ ID: Uint64toa(user.ID), + Name: user.Name, + Handle: user.Handle, Username: user.Username, } } diff --git a/sam/rest/message.go b/sam/rest/message.go index 8c1103bbe..98cf673db 100644 --- a/sam/rest/message.go +++ b/sam/rest/message.go @@ -2,6 +2,9 @@ package rest import ( "context" + + "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" @@ -25,25 +28,25 @@ func (Message) New() *Message { } func (ctrl *Message) Create(ctx context.Context, r *request.MessageCreate) (interface{}, error) { - return ctrl.svc.msg.With(ctx).Create(&types.Message{ + return ctrl.wrap(ctrl.svc.msg.With(ctx).Create(&types.Message{ ChannelID: r.ChannelID, Message: r.Message, - }) + })) } func (ctrl *Message) History(ctx context.Context, r *request.MessageHistory) (interface{}, error) { - return ctrl.svc.msg.With(ctx).Find(&types.MessageFilter{ + return ctrl.wrapSet(ctrl.svc.msg.With(ctx).Find(&types.MessageFilter{ ChannelID: r.ChannelID, FromMessageID: r.LastMessageID, - }) + })) } func (ctrl *Message) Edit(ctx context.Context, r *request.MessageEdit) (interface{}, error) { - return ctrl.svc.msg.With(ctx).Update(&types.Message{ + return ctrl.wrap(ctrl.svc.msg.With(ctx).Update(&types.Message{ ID: r.MessageID, ChannelID: r.ChannelID, Message: r.Message, - }) + })) } func (ctrl *Message) Delete(ctx context.Context, r *request.MessageDelete) (interface{}, error) { @@ -51,10 +54,10 @@ func (ctrl *Message) Delete(ctx context.Context, r *request.MessageDelete) (inte } func (ctrl *Message) Search(ctx context.Context, r *request.MessageSearch) (interface{}, error) { - return ctrl.svc.msg.With(ctx).Find(&types.MessageFilter{ + return ctrl.wrapSet(ctrl.svc.msg.With(ctx).Find(&types.MessageFilter{ ChannelID: r.ChannelID, Query: r.Query, - }) + })) } func (ctrl *Message) Pin(ctx context.Context, r *request.MessagePin) (interface{}, error) { @@ -80,3 +83,19 @@ func (ctrl *Message) React(ctx context.Context, r *request.MessageReact) (interf func (ctrl *Message) Unreact(ctx context.Context, r *request.MessageUnreact) (interface{}, error) { return nil, ctrl.svc.msg.With(ctx).Unreact(r.MessageID, r.Reaction) } + +func (ctrl *Message) wrap(m *types.Message, err error) (*outgoing.Message, error) { + if err != nil { + return nil, err + } else { + return payload.Message(m), nil + } +} + +func (ctrl *Message) wrapSet(mm types.MessageSet, err error) (*outgoing.MessageSet, error) { + if err != nil { + return nil, err + } else { + return payload.Messages(mm), nil + } +}