Fix logging out if portal was deleted/unbridged. Fixes #173
This commit is contained in:
@@ -90,6 +90,7 @@ class Portal:
|
||||
self.about = about # type: str
|
||||
self.photo_id = photo_id # type: str
|
||||
self._db_instance = db_instance # type: DBPortal
|
||||
self.deleted = False # type: bool
|
||||
|
||||
self._main_intent = None # type: IntentAPI
|
||||
self._room_create_lock = asyncio.Lock() # type: asyncio.Lock
|
||||
@@ -1632,6 +1633,7 @@ class Portal:
|
||||
if self._db_instance:
|
||||
self.db.delete(self._db_instance)
|
||||
self.db.commit()
|
||||
self.deleted = True
|
||||
|
||||
@classmethod
|
||||
def from_db(cls, db_portal: DBPortal) -> "Portal":
|
||||
|
||||
@@ -98,7 +98,7 @@ class User(AbstractUser):
|
||||
|
||||
@property
|
||||
def db_portals(self) -> List[DBPortal]:
|
||||
return [portal.db_instance for portal in self.portals.values()]
|
||||
return [portal.db_instance for portal in self.portals.values() if not portal.deleted]
|
||||
|
||||
@db_portals.setter
|
||||
def db_portals(self, portals: List[DBPortal]):
|
||||
@@ -214,8 +214,11 @@ class User(AbstractUser):
|
||||
self.save()
|
||||
|
||||
async def log_out(self):
|
||||
puppet = pu.Puppet.get(self.tgid)
|
||||
if puppet.is_real_user:
|
||||
await puppet.switch_mxid(None, None)
|
||||
for _, portal in self.portals.items():
|
||||
if portal.has_bot:
|
||||
if not portal.mxid or portal.has_bot:
|
||||
continue
|
||||
try:
|
||||
await portal.main_intent.kick(portal.mxid, self.mxid, "Logged out of Telegram.")
|
||||
|
||||
Reference in New Issue
Block a user