[MM-39060] - A/B Test: Reminder to Join Workspace email (#18894)

* [MM-39060] - A/B Test: Reminder to Join Workspace email

* Fix error and add error handling

* feedback impl

* run make i18n-extract

* improvements

* make i18n-extract

* setup ability to do telemetry on reminder invite emails

* improvement

* add telemetry

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
Allan Guwatudde
2021-11-15 18:42:15 +03:00
коммит произвёл GitHub
родитель e1eb0a0cf3
Коммит 0ee2a3ca35
12 изменённых файлов: 166 добавлений и 48 удалений

Просмотреть файл

@@ -426,7 +426,7 @@ func (es *Service) SendMfaChangeEmail(email string, activated bool, locale, site
return nil
}
func (es *Service) SendInviteEmails(team *model.Team, senderName string, senderUserId string, invites []string, siteURL string) error {
func (es *Service) SendInviteEmails(team *model.Team, senderName string, senderUserId string, invites []string, siteURL string, reminderData *model.TeamInviteReminderData) error {
if es.PerHourEmailRateLimiter == nil {
return NoRateLimiterError
}
@@ -450,7 +450,6 @@ func (es *Service) SendInviteEmails(team *model.Team, senderName string, senderU
data := es.NewEmailTemplateData("")
data.Props["SiteURL"] = siteURL
data.Props["Title"] = i18n.T("api.templates.invite_body.title", map[string]interface{}{"SenderName": senderName, "TeamDisplayName": team.DisplayName})
data.Props["SubTitle"] = i18n.T("api.templates.invite_body.subTitle")
data.Props["Button"] = i18n.T("api.templates.invite_body.button")
data.Props["SenderName"] = senderName
@@ -467,6 +466,16 @@ func (es *Service) SendInviteEmails(team *model.Team, senderName string, senderU
tokenProps["email"] = invite
tokenProps["display_name"] = team.DisplayName
tokenProps["name"] = team.Name
title := i18n.T("api.templates.invite_body.title", map[string]interface{}{"SenderName": senderName, "TeamDisplayName": team.DisplayName})
if reminderData != nil {
reminder := i18n.T("api.templates.invite_body.title.reminder")
title = fmt.Sprintf("%s: %s", reminder, title)
tokenProps["reminder_interval"] = reminderData.Interval
}
data.Props["Title"] = title
tokenData := model.MapToJSON(tokenProps)
if err := es.store.Token().Save(token); err != nil {

Просмотреть файл

@@ -70,7 +70,7 @@ func TestSendInviteEmails(t *testing.T) {
t.Run("SendInviteEmails", func(t *testing.T) {
mail.DeleteMailBox(emailTo)
err := th.service.SendInviteEmails(th.BasicTeam, "test-user", th.BasicUser.Id, []string{emailTo}, "http://testserver")
err := th.service.SendInviteEmails(th.BasicTeam, "test-user", th.BasicUser.Id, []string{emailTo}, "http://testserver", nil)
require.NoError(t, err)
verifyMailbox(t)