[MM-24177] Adds props to post for front end to know if highlight or not (#14348)
* Add props to post * Address PR comments * address PR comments * Fix styling problems * Address PR comments * address PR comments * Add PR suggestion * fix usage * fix error * remove err * fix golang lint
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
3dbb0201a4
Коммит
40b20c3eaf
@@ -396,6 +396,11 @@ func (a *App) FillInPostProps(post *model.Post, channel *model.Channel) *model.A
|
|||||||
post.DelProp("channel_mentions")
|
post.DelProp("channel_mentions")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
matched := model.AT_MENTION_PATTEN.MatchString(post.Message)
|
||||||
|
if a.License() != nil && *a.License().Features.LDAPGroups && matched && !a.HasPermissionToChannel(post.UserId, post.ChannelId, model.PERMISSION_USE_GROUP_MENTIONS) {
|
||||||
|
post.AddProp(model.POST_PROPS_GROUP_HIGHLIGHT_DISABLED, true)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1755,3 +1755,92 @@ func TestCountMentionsFromPost(t *testing.T) {
|
|||||||
assert.Equal(t, numPosts, count)
|
assert.Equal(t, numPosts, count)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFillInPostProps(t *testing.T) {
|
||||||
|
t.Run("should not add disable group highlight to post props for user with group mention permissions", func(t *testing.T) {
|
||||||
|
th := Setup(t).InitBasic()
|
||||||
|
defer th.TearDown()
|
||||||
|
th.App.SetLicense(model.NewTestLicense("ldap"))
|
||||||
|
|
||||||
|
user1 := th.BasicUser
|
||||||
|
|
||||||
|
channel := th.CreateChannel(th.BasicTeam)
|
||||||
|
|
||||||
|
post1, err := th.App.CreatePost(&model.Post{
|
||||||
|
UserId: user1.Id,
|
||||||
|
ChannelId: channel.Id,
|
||||||
|
Message: "test123123 @group1 @group2 blah blah blah",
|
||||||
|
}, channel, false)
|
||||||
|
require.Nil(t, err)
|
||||||
|
|
||||||
|
err = th.App.FillInPostProps(post1, channel)
|
||||||
|
|
||||||
|
assert.Nil(t, err)
|
||||||
|
assert.Equal(t, post1.Props, model.StringInterface{})
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("should not add disable group highlight to post props for app without license", func(t *testing.T) {
|
||||||
|
th := Setup(t).InitBasic()
|
||||||
|
defer th.TearDown()
|
||||||
|
|
||||||
|
id := model.NewId()
|
||||||
|
guest := &model.User{
|
||||||
|
Email: "success+" + id + "@simulator.amazonses.com",
|
||||||
|
Username: "un_" + id,
|
||||||
|
Nickname: "nn_" + id,
|
||||||
|
Password: "Password1",
|
||||||
|
EmailVerified: true,
|
||||||
|
}
|
||||||
|
guest, err := th.App.CreateGuest(guest)
|
||||||
|
require.Nil(t, err)
|
||||||
|
th.LinkUserToTeam(guest, th.BasicTeam)
|
||||||
|
|
||||||
|
channel := th.CreateChannel(th.BasicTeam)
|
||||||
|
th.AddUserToChannel(guest, channel)
|
||||||
|
|
||||||
|
post1, err := th.App.CreatePost(&model.Post{
|
||||||
|
UserId: guest.Id,
|
||||||
|
ChannelId: channel.Id,
|
||||||
|
Message: "test123123 @group1 @group2 blah blah blah",
|
||||||
|
}, channel, false)
|
||||||
|
require.Nil(t, err)
|
||||||
|
|
||||||
|
err = th.App.FillInPostProps(post1, channel)
|
||||||
|
|
||||||
|
assert.Nil(t, err)
|
||||||
|
assert.Equal(t, post1.Props, model.StringInterface{})
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("should add disable group highlight to post props for guest user", func(t *testing.T) {
|
||||||
|
th := Setup(t).InitBasic()
|
||||||
|
defer th.TearDown()
|
||||||
|
th.App.SetLicense(model.NewTestLicense("ldap"))
|
||||||
|
|
||||||
|
id := model.NewId()
|
||||||
|
guest := &model.User{
|
||||||
|
Email: "success+" + id + "@simulator.amazonses.com",
|
||||||
|
Username: "un_" + id,
|
||||||
|
Nickname: "nn_" + id,
|
||||||
|
Password: "Password1",
|
||||||
|
EmailVerified: true,
|
||||||
|
}
|
||||||
|
guest, err := th.App.CreateGuest(guest)
|
||||||
|
require.Nil(t, err)
|
||||||
|
th.LinkUserToTeam(guest, th.BasicTeam)
|
||||||
|
|
||||||
|
channel := th.CreateChannel(th.BasicTeam)
|
||||||
|
th.AddUserToChannel(guest, channel)
|
||||||
|
|
||||||
|
post1, err := th.App.CreatePost(&model.Post{
|
||||||
|
UserId: guest.Id,
|
||||||
|
ChannelId: channel.Id,
|
||||||
|
Message: "test123123 @group1 @group2 blah blah blah",
|
||||||
|
}, channel, false)
|
||||||
|
require.Nil(t, err)
|
||||||
|
|
||||||
|
err = th.App.FillInPostProps(post1, channel)
|
||||||
|
|
||||||
|
assert.Nil(t, err)
|
||||||
|
assert.Equal(t, post1.Props, model.StringInterface{"disable_group_highlight": true})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -63,8 +63,11 @@ const (
|
|||||||
POST_PROPS_OVERRIDE_ICON_EMOJI = "override_icon_emoji"
|
POST_PROPS_OVERRIDE_ICON_EMOJI = "override_icon_emoji"
|
||||||
|
|
||||||
POST_PROPS_MENTION_HIGHLIGHT_DISABLED = "mentionHighlightDisabled"
|
POST_PROPS_MENTION_HIGHLIGHT_DISABLED = "mentionHighlightDisabled"
|
||||||
|
POST_PROPS_GROUP_HIGHLIGHT_DISABLED = "disable_group_highlight"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var AT_MENTION_PATTEN = regexp.MustCompile(`\B@`)
|
||||||
|
|
||||||
type Post struct {
|
type Post struct {
|
||||||
Id string `json:"id"`
|
Id string `json:"id"`
|
||||||
CreateAt int64 `json:"create_at"`
|
CreateAt int64 `json:"create_at"`
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user