Update the notification email subject when invited to a space. (#10426)

This commit is contained in:
Patrick Cloke 2021-07-21 13:29:54 -04:00 committed by GitHub
parent b2629e7016
commit d15e72e511
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 2 deletions

View file

@ -0,0 +1 @@
Email notifications now state whether an invitation is to a room or a space.

View file

@ -39,12 +39,13 @@ DEFAULT_SUBJECTS = {
"messages_from_person_and_others": "[%(app)s] You have messages on %(app)s from %(person)s and others...", "messages_from_person_and_others": "[%(app)s] You have messages on %(app)s from %(person)s and others...",
"invite_from_person": "[%(app)s] %(person)s has invited you to chat on %(app)s...", "invite_from_person": "[%(app)s] %(person)s has invited you to chat on %(app)s...",
"invite_from_person_to_room": "[%(app)s] %(person)s has invited you to join the %(room)s room on %(app)s...", "invite_from_person_to_room": "[%(app)s] %(person)s has invited you to join the %(room)s room on %(app)s...",
"invite_from_person_to_space": "[%(app)s] %(person)s has invited you to join the %(space)s space on %(app)s...",
"password_reset": "[%(server_name)s] Password reset", "password_reset": "[%(server_name)s] Password reset",
"email_validation": "[%(server_name)s] Validate your email", "email_validation": "[%(server_name)s] Validate your email",
} }
@attr.s @attr.s(slots=True, frozen=True)
class EmailSubjectConfig: class EmailSubjectConfig:
message_from_person_in_room = attr.ib(type=str) message_from_person_in_room = attr.ib(type=str)
message_from_person = attr.ib(type=str) message_from_person = attr.ib(type=str)
@ -54,6 +55,7 @@ class EmailSubjectConfig:
messages_from_person_and_others = attr.ib(type=str) messages_from_person_and_others = attr.ib(type=str)
invite_from_person = attr.ib(type=str) invite_from_person = attr.ib(type=str)
invite_from_person_to_room = attr.ib(type=str) invite_from_person_to_room = attr.ib(type=str)
invite_from_person_to_space = attr.ib(type=str)
password_reset = attr.ib(type=str) password_reset = attr.ib(type=str)
email_validation = attr.ib(type=str) email_validation = attr.ib(type=str)

View file

@ -19,7 +19,7 @@ from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, TypeVar
import bleach import bleach
import jinja2 import jinja2
from synapse.api.constants import EventTypes, Membership from synapse.api.constants import EventTypes, Membership, RoomTypes
from synapse.api.errors import StoreError from synapse.api.errors import StoreError
from synapse.config.emailconfig import EmailSubjectConfig from synapse.config.emailconfig import EmailSubjectConfig
from synapse.events import EventBase from synapse.events import EventBase
@ -600,6 +600,22 @@ class Mailer:
"app": self.app_name, "app": self.app_name,
} }
# If the room is a space, it gets a slightly different topic.
create_event_id = room_state_ids.get(("m.room.create", ""))
if create_event_id:
create_event = await self.store.get_event(
create_event_id, allow_none=True
)
if (
create_event
and create_event.content.get("room_type") == RoomTypes.SPACE
):
return self.email_subjects.invite_from_person_to_space % {
"person": inviter_name,
"space": room_name,
"app": self.app_name,
}
return self.email_subjects.invite_from_person_to_room % { return self.email_subjects.invite_from_person_to_room % {
"person": inviter_name, "person": inviter_name,
"room": room_name, "room": room_name,