Forget users when they log out
This commit is contained in:
@@ -113,6 +113,15 @@ class User:
|
|||||||
self.to_db()
|
self.to_db()
|
||||||
self.db.commit()
|
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
|
@classmethod
|
||||||
def from_db(cls, db_user):
|
def from_db(cls, db_user):
|
||||||
return User(db_user.mxid, db_user.tgid, db_user.tg_username, db_user.contacts,
|
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()
|
self.connected = await self.client.connect()
|
||||||
if self.logged_in:
|
if self.logged_in:
|
||||||
asyncio.ensure_future(self.post_login(), loop=self.loop)
|
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
|
return self
|
||||||
|
|
||||||
async def post_login(self, info=None):
|
async def post_login(self, info=None):
|
||||||
@@ -186,8 +199,7 @@ class User:
|
|||||||
ok = await self.client.log_out()
|
ok = await self.client.log_out()
|
||||||
if not ok:
|
if not ok:
|
||||||
return False
|
return False
|
||||||
self._init_client()
|
self.delete()
|
||||||
await self.start()
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _search_local(self, query, max_results=5, min_similarity=45):
|
def _search_local(self, query, max_results=5, min_similarity=45):
|
||||||
|
|||||||
Reference in New Issue
Block a user