PLT-3775/PLT-4067 Fixes for email notifications for 3.4
Этот коммит содержится в:
коммит произвёл
enahum
родитель
024a72b440
Коммит
73692f010e
39
api/post.go
39
api/post.go
@@ -794,9 +794,44 @@ func sendNotificationEmail(c *Context, post *model.Post, user *model.User, chann
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if *utils.Cfg.EmailSettings.EnableEmailBatching {
|
if channel.Type == model.CHANNEL_DIRECT && channel.TeamId != team.Id {
|
||||||
if err := AddNotificationEmailToBatch(user, post, team); err == nil {
|
// this message is a cross-team DM so it we need to find a team that the recipient is on to use in the link
|
||||||
|
if result := <-Srv.Store.Team().GetTeamsByUserId(user.Id); result.Err != nil {
|
||||||
|
l4g.Error(utils.T("api.post.send_notifications_and_forget.get_teams.error"), user.Id, result.Err)
|
||||||
return
|
return
|
||||||
|
} else {
|
||||||
|
// if the recipient isn't in the current user's team, just pick one
|
||||||
|
teams := result.Data.([]*model.Team)
|
||||||
|
found := false
|
||||||
|
|
||||||
|
for i := range teams {
|
||||||
|
if teams[i].Id == team.Id {
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !found {
|
||||||
|
team = teams[0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if *utils.Cfg.EmailSettings.EnableEmailBatching {
|
||||||
|
var sendBatched bool
|
||||||
|
|
||||||
|
if result := <-Srv.Store.Preference().Get(user.Id, model.PREFERENCE_CATEGORY_NOTIFICATIONS, model.PREFERENCE_NAME_EMAIL_INTERVAL); result.Err != nil {
|
||||||
|
// if the call fails, assume it hasn't been set and use the default
|
||||||
|
sendBatched = false
|
||||||
|
} else {
|
||||||
|
// default to not using batching if the setting is set to immediate
|
||||||
|
sendBatched = result.Data.(model.Preference).Value != model.PREFERENCE_DEFAULT_EMAIL_INTERVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
if sendBatched {
|
||||||
|
if err := AddNotificationEmailToBatch(user, post, team); err == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// fall back to sending a single email if we can't batch it for some reason
|
// fall back to sending a single email if we can't batch it for some reason
|
||||||
|
|||||||
@@ -1271,6 +1271,10 @@
|
|||||||
"id": "api.post.send_notifications_and_forget.comment_thread.error",
|
"id": "api.post.send_notifications_and_forget.comment_thread.error",
|
||||||
"translation": "Failed to retrieve comment thread posts in notifications root_post_id=%v, err=%v"
|
"translation": "Failed to retrieve comment thread posts in notifications root_post_id=%v, err=%v"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "api.post.send_notifications_and_forget.get_teams.error",
|
||||||
|
"translation": "Failed to get teams when sending cross-team DM user_id=%v, err=%v"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "api.post.send_notifications_and_forget.mention_body",
|
"id": "api.post.send_notifications_and_forget.mention_body",
|
||||||
"translation": "You have one new mention."
|
"translation": "You have one new mention."
|
||||||
|
|||||||
@@ -159,6 +159,12 @@ export default class EmailNotificationSetting extends React.Component {
|
|||||||
title={localizeMessage('user.settings.notifications.emailNotifications', 'Email notifications')}
|
title={localizeMessage('user.settings.notifications.emailNotifications', 'Email notifications')}
|
||||||
inputs={[
|
inputs={[
|
||||||
<div key='userNotificationEmailOptions'>
|
<div key='userNotificationEmailOptions'>
|
||||||
|
<label>
|
||||||
|
<FormattedMessage
|
||||||
|
id='user.settings.notifications.email.send'
|
||||||
|
defaultMessage='Send email notifications'
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
<div className='radio'>
|
<div className='radio'>
|
||||||
<label>
|
<label>
|
||||||
<input
|
<input
|
||||||
|
|||||||
@@ -1899,6 +1899,7 @@
|
|||||||
"user.settings.notifications.email.everyXMinutes": "Every {count, plural, one {minute} other {{count, number} minutes}}",
|
"user.settings.notifications.email.everyXMinutes": "Every {count, plural, one {minute} other {{count, number} minutes}}",
|
||||||
"user.settings.notifications.email.immediately": "Immediately",
|
"user.settings.notifications.email.immediately": "Immediately",
|
||||||
"user.settings.notifications.email.never": "Never",
|
"user.settings.notifications.email.never": "Never",
|
||||||
|
"user.settings.notifications.email.send": "Send email notifications",
|
||||||
"user.settings.notifications.emailBatchingInfo": "Notifications received over the time period selected are combined and sent in a single email.",
|
"user.settings.notifications.emailBatchingInfo": "Notifications received over the time period selected are combined and sent in a single email.",
|
||||||
"user.settings.notifications.emailInfo": "Email notifications are sent for mentions and direct messages when you are offline or away from {siteName} for more than 5 minutes.",
|
"user.settings.notifications.emailInfo": "Email notifications are sent for mentions and direct messages when you are offline or away from {siteName} for more than 5 minutes.",
|
||||||
"user.settings.notifications.emailNotifications": "Email notifications",
|
"user.settings.notifications.emailNotifications": "Email notifications",
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user