From 1d98e7850f051693bd3eb14384eba87a83457701 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 14 Feb 2018 21:34:50 +0200 Subject: [PATCH] Forget users when they log out --- mautrix_telegram/user.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/mautrix_telegram/user.py b/mautrix_telegram/user.py index 1c19dd96..b22832a3 100644 --- a/mautrix_telegram/user.py +++ b/mautrix_telegram/user.py @@ -113,6 +113,15 @@ class User: self.to_db() self.db.commit() + def delete(self): + try: + del self.by_mxid[self.mxid] + del self.by_tgid[self.tgid] + except KeyError: + pass + self.db.delete(self.to_db()) + self.db.commit() + @classmethod def from_db(cls, db_user): return User(db_user.mxid, db_user.tgid, db_user.tg_username, db_user.contacts, @@ -137,6 +146,10 @@ class User: self.connected = await self.client.connect() if self.logged_in: asyncio.ensure_future(self.post_login(), loop=self.loop) + else: + # User not logged in -> forget user + self.client.disconnect() + self.client.session.delete() return self async def post_login(self, info=None): @@ -186,8 +199,7 @@ class User: ok = await self.client.log_out() if not ok: return False - self._init_client() - await self.start() + self.delete() return True def _search_local(self, query, max_results=5, min_similarity=45):