Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Include a simple message in email notifications that include encrypted content #8545

Merged
merged 6 commits into from
Oct 19, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions synapse/push/mailer.py
Original file line number Diff line number Diff line change
Expand Up @@ -387,8 +387,8 @@ async def get_notif_vars(self, notif, user_id, notif_event, room_state_ids):
return ret

async def get_message_vars(self, notif, event, room_state_ids):
if event.type != EventTypes.Message:
return
if event.type != EventTypes.Message and event.type != EventTypes.Encrypted:
return None

sender_state_event_id = room_state_ids[("m.room.member", event.sender)]
sender_state_event = await self.store.get_event(sender_state_event_id)
Expand All @@ -399,10 +399,8 @@ async def get_message_vars(self, notif, event, room_state_ids):
# sender_hash % the number of default images to choose from
sender_hash = string_ordinal_total(event.sender)

msgtype = event.content.get("msgtype")

ret = {
"msgtype": msgtype,
"event_type": event.type,
"is_historical": event.event_id != notif["event_id"],
"id": event.event_id,
"ts": event.origin_server_ts,
Expand All @@ -411,6 +409,14 @@ async def get_message_vars(self, notif, event, room_state_ids):
"sender_hash": sender_hash,
}

# Encrypted messages don't have any additional useful information.
if event.type == EventTypes.Encrypted:
return ret

msgtype = event.content.get("msgtype")

ret["msgtype"] = msgtype

if msgtype == "m.text":
self.add_text_message_vars(ret, event)
elif msgtype == "m.image":
Expand Down
26 changes: 16 additions & 10 deletions synapse/res/templates/notif.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,22 @@
<div class="sender_name">{% if message.msgtype == "m.emote" %}*{% endif %} {{ message.sender_name }}</div>
{% endif %}
<div class="message_body">
{% if message.msgtype == "m.text" %}
{{ message.body_text_html }}
{% elif message.msgtype == "m.emote" %}
{{ message.body_text_html }}
{% elif message.msgtype == "m.notice" %}
{{ message.body_text_html }}
{% elif message.msgtype == "m.image" %}
<img src="{{ message.image_url|mxc_to_http(640, 480, scale) }}" />
{% elif message.msgtype == "m.file" %}
<span class="filename">{{ message.body_text_plain }}</span>
{% if message.event_type == "m.room.encrypted" %}
An encrypted message.
{% elif message.event_type == "m.room.message" %}
{% if message.msgtype == "m.text" %}
{{ message.body_text_html }}
{% elif message.msgtype == "m.emote" %}
{{ message.body_text_html }}
{% elif message.msgtype == "m.notice" %}
{{ message.body_text_html }}
{% elif message.msgtype == "m.image" %}
<img src="{{ message.image_url|mxc_to_http(640, 480, scale) }}" />
{% elif message.msgtype == "m.file" %}
<span class="filename">{{ message.body_text_plain }}</span>
{% else %}
An unknown event.
clokep marked this conversation as resolved.
Show resolved Hide resolved
{% endif %}
{% endif %}
</div>
</td>
Expand Down
7 changes: 7 additions & 0 deletions synapse/res/templates/notif.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{% for message in notif.messages %}
{% if message.event_type == "m.room.encrypted" %}
An encrypted message.
{% elif message.event_type == "m.room.message" %}
{% if message.msgtype == "m.emote" %}* {% endif %}{{ message.sender_name }} ({{ message.ts|format_ts("%H:%M") }})
{% if message.msgtype == "m.text" %}
{{ message.body_text_plain }}
Expand All @@ -10,6 +13,10 @@
{{ message.body_text_plain }}
{% elif message.msgtype == "m.file" %}
{{ message.body_text_plain }}
{% elif message.msgtype == "m.room.encrypted" %}
clokep marked this conversation as resolved.
Show resolved Hide resolved
{% else %}
An unknown event.
{% endif %}
{% endif %}
{% endfor %}

Expand Down
17 changes: 16 additions & 1 deletion tests/push/test_email.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,23 @@ def test_multiple_members_email(self):
# We should get emailed about those messages
self._check_for_mail()

def test_encrypted_message(self):
room = self.helper.create_room_as(self.user_id, tok=self.access_token)
self.helper.invite(
room=room, src=self.user_id, tok=self.access_token, targ=self.others[0].id
)
self.helper.join(room=room, user=self.others[0].id, tok=self.others[0].token)

# The other user sends some messages
self.helper.send_event(
room, "m.room.encrypted", {}, tok=self.others[0].token
)

# We should get emailed about that message
self._check_for_mail()

def _check_for_mail(self):
"Check that the user receives an email notification"
"""Check that the user receives an email notification"""

# Get the stream ordering before it gets sent
pushers = self.get_success(
Expand Down