MM-50024: Handle empty team name for DM/GMs (#22160)
https://mattermost.atlassian.net/browse/MM-50024 ```release-note NONE ```
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
bc6c071c3a
Коммит
3514e0f79f
14
app/post.go
14
app/post.go
@@ -2058,8 +2058,16 @@ func (a *App) SetPostReminder(postID, userID string, targetTime int64) *model.Ap
|
|||||||
return model.NewAppError("SetPostReminder", model.NoTranslation, nil, "", http.StatusInternalServerError).Wrap(err)
|
return model.NewAppError("SetPostReminder", model.NoTranslation, nil, "", http.StatusInternalServerError).Wrap(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
parsed := time.Unix(targetTime, 0).UTC().Format(time.RFC822)
|
parsedTime := time.Unix(targetTime, 0).UTC().Format(time.RFC822)
|
||||||
siteURL := *a.Config().ServiceSettings.SiteURL
|
siteURL := *a.Config().ServiceSettings.SiteURL
|
||||||
|
|
||||||
|
var permalink string
|
||||||
|
if metadata.TeamName == "" {
|
||||||
|
permalink = fmt.Sprintf("%s/pl/%s", siteURL, postID)
|
||||||
|
} else {
|
||||||
|
permalink = fmt.Sprintf("%s/%s/pl/%s", siteURL, metadata.TeamName, postID)
|
||||||
|
}
|
||||||
|
|
||||||
// Send an ack message.
|
// Send an ack message.
|
||||||
ephemeralPost := &model.Post{
|
ephemeralPost := &model.Post{
|
||||||
Type: model.PostTypeEphemeral,
|
Type: model.PostTypeEphemeral,
|
||||||
@@ -2070,7 +2078,7 @@ func (a *App) SetPostReminder(postID, userID string, targetTime int64) *model.Ap
|
|||||||
ChannelId: metadata.ChannelId,
|
ChannelId: metadata.ChannelId,
|
||||||
// It's okay to keep this non-translated. This is just a fallback.
|
// It's okay to keep this non-translated. This is just a fallback.
|
||||||
// The webapp will parse the timestamp and show that in user's local timezone.
|
// The webapp will parse the timestamp and show that in user's local timezone.
|
||||||
Message: fmt.Sprintf("You will be reminded about %s/%s/pl/%s by @%s at %s", siteURL, metadata.TeamName, postID, metadata.Username, parsed),
|
Message: fmt.Sprintf("You will be reminded about %s by @%s at %s", permalink, metadata.Username, parsedTime),
|
||||||
Props: model.StringInterface{
|
Props: model.StringInterface{
|
||||||
"target_time": targetTime,
|
"target_time": targetTime,
|
||||||
"team_name": metadata.TeamName,
|
"team_name": metadata.TeamName,
|
||||||
@@ -2133,7 +2141,7 @@ func (a *App) CheckPostReminders() {
|
|||||||
for _, postID := range postIDs {
|
for _, postID := range postIDs {
|
||||||
metadata, err := a.Srv().Store().Post().GetPostReminderMetadata(postID)
|
metadata, err := a.Srv().Store().Post().GetPostReminderMetadata(postID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
mlog.Error("Failed to get post reminder metadata", mlog.Err(err))
|
mlog.Error("Failed to get post reminder metadata", mlog.Err(err), mlog.String("post_id", postID))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3313,15 +3313,15 @@ func (s *SqlPostStore) GetPostReminders(now int64) (_ []*model.PostReminder, err
|
|||||||
func (s *SqlPostStore) GetPostReminderMetadata(postID string) (*store.PostReminderMetadata, error) {
|
func (s *SqlPostStore) GetPostReminderMetadata(postID string) (*store.PostReminderMetadata, error) {
|
||||||
meta := &store.PostReminderMetadata{}
|
meta := &store.PostReminderMetadata{}
|
||||||
err := s.GetReplicaX().Get(meta, `SELECT c.id as ChannelId,
|
err := s.GetReplicaX().Get(meta, `SELECT c.id as ChannelId,
|
||||||
t.name as TeamName,
|
COALESCE(t.name, '') as TeamName,
|
||||||
u.locale as UserLocale, u.username as Username
|
u.locale as UserLocale, u.username as Username
|
||||||
FROM Posts p, Channels c, Teams t, Users u
|
FROM Posts p
|
||||||
WHERE p.ChannelId=c.Id
|
JOIN Channels c ON p.ChannelId=c.Id
|
||||||
AND c.TeamId=t.Id
|
LEFT JOIN Teams t ON c.TeamId=t.Id
|
||||||
AND p.UserId=u.Id
|
JOIN Users u ON p.UserId=u.Id
|
||||||
AND p.Id=?`, postID)
|
AND p.Id=?`, postID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "failed to get post reminder metadata")
|
return nil, errors.Wrapf(err, "failed to get post reminder metadata: postId %s", postID)
|
||||||
}
|
}
|
||||||
|
|
||||||
return meta, nil
|
return meta, nil
|
||||||
|
|||||||
@@ -4657,6 +4657,15 @@ func testGetPostReminderMetadata(t *testing.T, ss store.Store, s SqlStore) {
|
|||||||
ch, err = ss.Channel().Save(ch, -1)
|
ch, err = ss.Channel().Save(ch, -1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
ch2 := &model.Channel{
|
||||||
|
TeamId: "",
|
||||||
|
DisplayName: "GM_display",
|
||||||
|
Name: NewTestId(),
|
||||||
|
Type: model.ChannelTypeGroup,
|
||||||
|
}
|
||||||
|
ch2, err = ss.Channel().Save(ch2, -1)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
u1 := &model.User{
|
u1 := &model.User{
|
||||||
Email: MakeEmail(),
|
Email: MakeEmail(),
|
||||||
Username: model.NewId(),
|
Username: model.NewId(),
|
||||||
@@ -4675,12 +4684,28 @@ func testGetPostReminderMetadata(t *testing.T, ss store.Store, s SqlStore) {
|
|||||||
p1, err = ss.Post().Save(p1)
|
p1, err = ss.Post().Save(p1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
p2 := &model.Post{
|
||||||
|
UserId: u1.Id,
|
||||||
|
ChannelId: ch2.Id,
|
||||||
|
Message: "hi there 2",
|
||||||
|
Type: model.PostTypeDefault,
|
||||||
|
}
|
||||||
|
p2, err = ss.Post().Save(p2)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
meta, err := ss.Post().GetPostReminderMetadata(p1.Id)
|
meta, err := ss.Post().GetPostReminderMetadata(p1.Id)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, meta.ChannelId, ch.Id)
|
assert.Equal(t, meta.ChannelId, ch.Id)
|
||||||
assert.Equal(t, meta.TeamName, team.Name)
|
assert.Equal(t, meta.TeamName, team.Name)
|
||||||
assert.Equal(t, meta.Username, u1.Username)
|
assert.Equal(t, meta.Username, u1.Username)
|
||||||
assert.Equal(t, meta.UserLocale, u1.Locale)
|
assert.Equal(t, meta.UserLocale, u1.Locale)
|
||||||
|
|
||||||
|
meta, err = ss.Post().GetPostReminderMetadata(p2.Id)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, meta.ChannelId, ch2.Id)
|
||||||
|
assert.Equal(t, meta.TeamName, "")
|
||||||
|
assert.Equal(t, meta.Username, u1.Username)
|
||||||
|
assert.Equal(t, meta.UserLocale, u1.Locale)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPostIds(posts []*model.Post, morePosts ...*model.Post) []string {
|
func getPostIds(posts []*model.Post, morePosts ...*model.Post) []string {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user