123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- # Copyright 2021 The Matrix.org Foundation C.I.C.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- from typing import List, Optional
- from typing_extensions import TypedDict
- class EmailReason(TypedDict, total=False):
- """
- Information on the event that triggered the email to be sent
- room_id: the ID of the room the event was sent in
- now: timestamp in ms when the email is being sent out
- room_name: a human-readable name for the room the event was sent in
- received_at: the time in milliseconds at which the event was received
- delay_before_mail_ms: the amount of time in milliseconds Synapse always waits
- before ever emailing about a notification (to give the user a chance to respond
- to other push or notice the window)
- last_sent_ts: the time in milliseconds at which a notification was last sent
- for an event in this room
- throttle_ms: the minimum amount of time in milliseconds between two
- notifications can be sent for this room
- """
- room_id: str
- now: int
- room_name: Optional[str]
- received_at: int
- delay_before_mail_ms: int
- last_sent_ts: int
- throttle_ms: int
- class MessageVars(TypedDict, total=False):
- """
- Details about a specific message to include in a notification
- event_type: the type of the event
- is_historical: a boolean, which is `False` if the message is the one
- that triggered the notification, `True` otherwise
- id: the ID of the event
- ts: the time in milliseconds at which the event was sent
- sender_name: the display name for the event's sender
- sender_avatar_url: the avatar URL (as a `mxc://` URL) for the event's
- sender
- sender_hash: a hash of the user ID of the sender
- msgtype: the type of the message
- body_text_html: html representation of the message
- body_text_plain: plaintext representation of the message
- image_url: mxc url of an image, when "msgtype" is "m.image"
- """
- event_type: str
- is_historical: bool
- id: str
- ts: int
- sender_name: str
- sender_avatar_url: Optional[str]
- sender_hash: int
- msgtype: Optional[str]
- body_text_html: str
- body_text_plain: str
- image_url: str
- class NotifVars(TypedDict):
- """
- Details about an event we are about to include in a notification
- link: a `matrix.to` link to the event
- ts: the time in milliseconds at which the event was received
- messages: a list of messages containing one message before the event, the
- message in the event, and one message after the event.
- """
- link: str
- ts: Optional[int]
- messages: List[MessageVars]
- class RoomVars(TypedDict):
- """
- Represents a room containing events to include in the email.
- title: a human-readable name for the room
- hash: a hash of the ID of the room
- invite: a boolean, which is `True` if the room is an invite the user hasn't
- accepted yet, `False` otherwise
- notifs: a list of events, or an empty list if `invite` is `True`.
- link: a `matrix.to` link to the room
- avator_url: url to the room's avator
- """
- title: Optional[str]
- hash: int
- invite: bool
- notifs: List[NotifVars]
- link: str
- avatar_url: Optional[str]
- class TemplateVars(TypedDict, total=False):
- """
- Generic structure for passing to the email sender, can hold all the fields used in email templates.
- app_name: name of the app/service this homeserver is associated with
- server_name: name of our own homeserver
- link: a link to include into the email to be sent
- user_display_name: the display name for the user receiving the notification
- unsubscribe_link: the link users can click to unsubscribe from email notifications
- summary_text: a summary of the notification(s). The text used can be customised
- by configuring the various settings in the `email.subjects` section of the
- configuration file.
- rooms: a list of rooms containing events to include in the email
- reason: information on the event that triggered the email to be sent
- """
- app_name: str
- server_name: str
- link: str
- user_display_name: str
- unsubscribe_link: str
- summary_text: str
- rooms: List[RoomVars]
- reason: EmailReason
|