https://mattermost.atlassian.net/browse/MM-36271 ```release-note We bump the major version to 6.0 ```
47 строки
1.5 KiB
Go
47 строки
1.5 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package email
|
|
|
|
import (
|
|
"net/url"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/mattermost/mattermost-server/v6/model"
|
|
"github.com/mattermost/mattermost-server/v6/shared/i18n"
|
|
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
|
)
|
|
|
|
func (es *Service) GetMessageForNotification(post *model.Post, translateFunc i18n.TranslateFunc) string {
|
|
if strings.TrimSpace(post.Message) != "" || len(post.FileIds) == 0 {
|
|
return post.Message
|
|
}
|
|
|
|
// extract the filenames from their paths and determine what type of files are attached
|
|
infos, err := es.store.FileInfo().GetForPost(post.Id, true, false, true)
|
|
if err != nil {
|
|
mlog.Warn("Encountered error when getting files for notification message", mlog.String("post_id", post.Id), mlog.Err(err))
|
|
}
|
|
|
|
filenames := make([]string, len(infos))
|
|
onlyImages := true
|
|
for i, info := range infos {
|
|
if escaped, err := url.QueryUnescape(filepath.Base(info.Name)); err != nil {
|
|
// this should never error since filepath was escaped using url.QueryEscape
|
|
filenames[i] = escaped
|
|
} else {
|
|
filenames[i] = info.Name
|
|
}
|
|
|
|
onlyImages = onlyImages && info.IsImage()
|
|
}
|
|
|
|
props := map[string]interface{}{"Filenames": strings.Join(filenames, ", ")}
|
|
|
|
if onlyImages {
|
|
return translateFunc("api.post.get_message_for_notification.images_sent", len(filenames), props)
|
|
}
|
|
return translateFunc("api.post.get_message_for_notification.files_sent", len(filenames), props)
|
|
}
|