For DM checks, use ID of sender instead of channel

This is more migration away from FB's usage of user IDs as DM IDs
This commit is contained in:
Andrew Ferrazzutti 2022-04-23 16:51:48 -04:00
parent 421bba7f1f
commit 91af7890ac

View File

@ -34,7 +34,6 @@ from .db import Puppet as DBPuppet
from .kt.types.bson import Long from .kt.types.bson import Long
from .kt.types.api.struct import FriendStruct from .kt.types.api.struct import FriendStruct
from .kt.types.channel.channel_type import KnownChannelType
from .kt.client.types import UserInfoUnion from .kt.client.types import UserInfoUnion
if TYPE_CHECKING: if TYPE_CHECKING:
@ -96,9 +95,8 @@ class Puppet(DBPuppet, BasePuppet):
return False return False
async def default_puppet_should_leave_room(self, room_id: RoomID) -> bool: async def default_puppet_should_leave_room(self, room_id: RoomID) -> bool:
# TODO Find out if direct channels are shared. If not, default puppet shouldn't leave!
portal = await p.Portal.get_by_mxid(room_id) portal = await p.Portal.get_by_mxid(room_id)
return portal and portal.kt_type != KnownChannelType.MemoChat return portal and portal.kt_sender != self.ktid
async def _leave_rooms_with_default_user(self) -> None: async def _leave_rooms_with_default_user(self) -> None:
await super()._leave_rooms_with_default_user() await super()._leave_rooms_with_default_user()
@ -112,7 +110,7 @@ class Puppet(DBPuppet, BasePuppet):
) )
def intent_for(self, portal: p.Portal) -> IntentAPI: def intent_for(self, portal: p.Portal) -> IntentAPI:
if portal.ktid == self.ktid or ( if portal.kt_sender == self.ktid or (
portal.backfill_lock.locked and self.config["bridge.backfill.invite_own_puppet"] portal.backfill_lock.locked and self.config["bridge.backfill.invite_own_puppet"]
): ):
return self.default_mxid_intent return self.default_mxid_intent