mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-05 02:44:10 -04:00
Improved push typing (#11409)
Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
This commit is contained in:
parent
35b1900f00
commit
a9481223d1
7 changed files with 210 additions and 36 deletions
136
synapse/push/push_types.py
Normal file
136
synapse/push/push_types.py
Normal file
|
@ -0,0 +1,136 @@
|
|||
# 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
|
Loading…
Add table
Add a link
Reference in a new issue