summaryrefslogtreecommitdiffstats
path: root/model
diff options
context:
space:
mode:
authorSaturnino Abril <saturnino.abril@gmail.com>2017-10-21 01:38:26 +0800
committerGitHub <noreply@github.com>2017-10-21 01:38:26 +0800
commit18ee37586027e5672446a6f23c05a8ccb2b35896 (patch)
treed915646e73a91b0082ecdf89b7a290291c0c9451 /model
parentcbb18479e9a4c410664535f6e0f5032d4261dfff (diff)
downloadchat-18ee37586027e5672446a6f23c05a8ccb2b35896.tar.gz
chat-18ee37586027e5672446a6f23c05a8ccb2b35896.tar.bz2
chat-18ee37586027e5672446a6f23c05a8ccb2b35896.zip
[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
Diffstat (limited to 'model')
-rw-r--r--model/post.go13
-rw-r--r--model/post_test.go43
2 files changed, 56 insertions, 0 deletions
diff --git a/model/post.go b/model/post.go
index 523a97c73..a5ae0b82a 100644
--- a/model/post.go
+++ b/model/post.go
@@ -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()
diff --git a/model/post_test.go b/model/post_test.go
index ced84f26b..846c8c775 100644
--- a/model/post_test.go
+++ b/model/post_test.go
@@ -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")
+ }
+}