From efe532e4d0559ec082f5e58947100ee37dafcb08 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 27 Oct 2020 16:49:54 +0200 Subject: [PATCH] Don't check user database when handling ephemeral events --- mautrix_telegram/matrix.py | 22 +++++++++------------- mautrix_telegram/user.py | 12 +++++++----- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/mautrix_telegram/matrix.py b/mautrix_telegram/matrix.py index f7a00fab..062cbe00 100644 --- a/mautrix_telegram/matrix.py +++ b/mautrix_telegram/matrix.py @@ -328,17 +328,15 @@ class MatrixHandler(BaseMatrixHandler): return for user_id, event_id in receipts: - user = await u.User.get_by_mxid(user_id).ensure_started() - if not await user.is_logged_in(): - continue - await portal.mark_read(user, event_id) + user = u.User.get_by_mxid(user_id, check_db=False, create=False) + if user and await user.is_logged_in(): + await portal.mark_read(user, event_id) @staticmethod async def handle_presence(user_id: UserID, presence: PresenceState) -> None: - user = await u.User.get_by_mxid(user_id).ensure_started() - if not await user.is_logged_in(): - return - await user.set_presence(presence == PresenceState.ONLINE) + user = u.User.get_by_mxid(user_id, check_db=False, create=False) + if user and await user.is_logged_in(): + await user.set_presence(presence == PresenceState.ONLINE) async def handle_typing(self, room_id: RoomID, now_typing: Set[UserID]) -> None: portal = po.Portal.get_by_mxid(room_id) @@ -353,11 +351,9 @@ class MatrixHandler(BaseMatrixHandler): if is_typing and was_typing: continue - user = await u.User.get_by_mxid(user_id).ensure_started() - if not await user.is_logged_in(): - continue - - await portal.set_typing(user, is_typing) + user = u.User.get_by_mxid(user_id, check_db=False, create=False) + if user and await user.is_logged_in(): + await portal.set_typing(user, is_typing) self.previously_typing[room_id] = now_typing diff --git a/mautrix_telegram/user.py b/mautrix_telegram/user.py index ab44a432..9bfcff92 100644 --- a/mautrix_telegram/user.py +++ b/mautrix_telegram/user.py @@ -459,7 +459,8 @@ class User(AbstractUser, BaseUser): # region Class instance lookup @classmethod - def get_by_mxid(cls, mxid: UserID, create: bool = True) -> Optional['User']: + def get_by_mxid(cls, mxid: UserID, create: bool = True, check_db: bool = True + ) -> Optional['User']: if not mxid: raise ValueError("Matrix ID can't be empty") @@ -468,10 +469,11 @@ class User(AbstractUser, BaseUser): except KeyError: pass - user = DBUser.get_by_mxid(mxid) - if user: - user = cls.from_db(user) - return user + if check_db: + user = DBUser.get_by_mxid(mxid) + if user: + user = cls.from_db(user) + return user if create: user = cls(mxid)