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)
|
||||
}
|
||||
|
||||
parsed := time.Unix(targetTime, 0).UTC().Format(time.RFC822)
|
||||
parsedTime := time.Unix(targetTime, 0).UTC().Format(time.RFC822)
|
||||
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.
|
||||
ephemeralPost := &model.Post{
|
||||
Type: model.PostTypeEphemeral,
|
||||
@@ -2070,7 +2078,7 @@ func (a *App) SetPostReminder(postID, userID string, targetTime int64) *model.Ap
|
||||
ChannelId: metadata.ChannelId,
|
||||
// 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.
|
||||
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{
|
||||
"target_time": targetTime,
|
||||
"team_name": metadata.TeamName,
|
||||
@@ -2133,7 +2141,7 @@ func (a *App) CheckPostReminders() {
|
||||
for _, postID := range postIDs {
|
||||
metadata, err := a.Srv().Store().Post().GetPostReminderMetadata(postID)
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
@@ -3313,15 +3313,15 @@ func (s *SqlPostStore) GetPostReminders(now int64) (_ []*model.PostReminder, err
|
||||
func (s *SqlPostStore) GetPostReminderMetadata(postID string) (*store.PostReminderMetadata, error) {
|
||||
meta := &store.PostReminderMetadata{}
|
||||
err := s.GetReplicaX().Get(meta, `SELECT c.id as ChannelId,
|
||||
t.name as TeamName,
|
||||
u.locale as UserLocale, u.username as Username
|
||||
FROM Posts p, Channels c, Teams t, Users u
|
||||
WHERE p.ChannelId=c.Id
|
||||
AND c.TeamId=t.Id
|
||||
AND p.UserId=u.Id
|
||||
AND p.Id=?`, postID)
|
||||
COALESCE(t.name, '') as TeamName,
|
||||
u.locale as UserLocale, u.username as Username
|
||||
FROM Posts p
|
||||
JOIN Channels c ON p.ChannelId=c.Id
|
||||
LEFT JOIN Teams t ON c.TeamId=t.Id
|
||||
JOIN Users u ON p.UserId=u.Id
|
||||
AND p.Id=?`, postID)
|
||||
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
|
||||
|
||||
@@ -4657,6 +4657,15 @@ func testGetPostReminderMetadata(t *testing.T, ss store.Store, s SqlStore) {
|
||||
ch, err = ss.Channel().Save(ch, -1)
|
||||
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{
|
||||
Email: MakeEmail(),
|
||||
Username: model.NewId(),
|
||||
@@ -4675,12 +4684,28 @@ func testGetPostReminderMetadata(t *testing.T, ss store.Store, s SqlStore) {
|
||||
p1, err = ss.Post().Save(p1)
|
||||
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)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, meta.ChannelId, ch.Id)
|
||||
assert.Equal(t, meta.TeamName, team.Name)
|
||||
assert.Equal(t, meta.Username, u1.Username)
|
||||
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 {
|
||||
|
||||
Ссылка в новой задаче
Block a user