[PLT-7362] Option to add user to channel if mentioned user is not currently in the channel (#7619)

* Option to add user to channel if mentioned user is not currently in the channel

* instead of link from server, just add component on client side to add channel member

* change implementation using post.props

* do clean up and add test

* sanitize post.props['add_channel_member'] on post creation

* move sanitize to app.CreatePost and also apply to app.UpdatePost
Этот коммит содержится в:
Saturnino Abril
2017-10-21 01:38:26 +08:00
коммит произвёл GitHub
родитель cbb18479e9
Коммит 18ee375860
7 изменённых файлов: 185 добавлений и 8 удалений

Просмотреть файл

@@ -33,6 +33,7 @@ const (
POST_MESSAGE_MAX_RUNES = 4000
POST_PROPS_MAX_RUNES = 8000
POST_CUSTOM_TYPE_PREFIX = "custom_"
PROPS_ADD_CHANNEL_MEMBER = "add_channel_member"
)
type Post struct {
@@ -188,6 +189,18 @@ func (o *Post) IsValid() *AppError {
return nil
}
func (o *Post) SanitizeProps() {
membersToSanitize := []string{
PROPS_ADD_CHANNEL_MEMBER,
}
for _, member := range membersToSanitize {
if _, ok := o.Props[member]; ok {
delete(o.Props, member)
}
}
}
func (o *Post) PreSave() {
if o.Id == "" {
o.Id = NewId()

Просмотреть файл

@@ -123,3 +123,46 @@ func TestPostIsSystemMessage(t *testing.T) {
t.Fatalf("TestPostIsSystemMessage failed, expected post2.IsSystemMessage() to be true")
}
}
func TestPostSanitizeProps(t *testing.T) {
post1 := &Post{
Message: "test",
}
post1.SanitizeProps()
if post1.Props[PROPS_ADD_CHANNEL_MEMBER] != nil {
t.Fatal("should be nil")
}
post2 := &Post{
Message: "test",
Props: StringInterface{
PROPS_ADD_CHANNEL_MEMBER: "test",
},
}
post2.SanitizeProps()
if post2.Props[PROPS_ADD_CHANNEL_MEMBER] != nil {
t.Fatal("should be nil")
}
post3 := &Post{
Message: "test",
Props: StringInterface{
PROPS_ADD_CHANNEL_MEMBER: "no good",
"attachments": "good",
},
}
post3.SanitizeProps()
if post3.Props[PROPS_ADD_CHANNEL_MEMBER] != nil {
t.Fatal("should be nil")
}
if post3.Props["attachments"] == nil {
t.Fatal("should not be nil")
}
}