1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
# Copyright (c) 2022 Tulir Asokan
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from typing import Optional
from attr import dataclass
import attr
from ..util import SerializableAttrs
from .base import BaseRoomEvent, BaseUnsigned
from .message import RelatesTo
@dataclass
class ReactionEventContent(SerializableAttrs):
"""The content of an m.reaction event"""
_relates_to: Optional[RelatesTo] = attr.ib(default=None, metadata={"json": "m.relates_to"})
@property
def relates_to(self) -> RelatesTo:
if self._relates_to is None:
self._relates_to = RelatesTo()
return self._relates_to
@relates_to.setter
def relates_to(self, relates_to: RelatesTo) -> None:
self._relates_to = relates_to
@dataclass
class ReactionEvent(BaseRoomEvent, SerializableAttrs):
"""A m.reaction event"""
content: ReactionEventContent
_unsigned: Optional[BaseUnsigned] = attr.ib(default=None, metadata={"json": "unsigned"})
@property
def unsigned(self) -> BaseUnsigned:
if not self._unsigned:
self._unsigned = BaseUnsigned()
return self._unsigned
@unsigned.setter
def unsigned(self, value: BaseUnsigned) -> None:
self._unsigned = value
|