From bae61f955f55e087fe15242d19cbb516020f487e Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 22 Oct 2025 20:54:53 +0300 Subject: [PATCH] bridgev2/matrixinvite: fix bugs in DM creation --- bridgev2/matrixinvite.go | 4 ++-- bridgev2/portal.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bridgev2/matrixinvite.go b/bridgev2/matrixinvite.go index 05479a3c..b8a5aec6 100644 --- a/bridgev2/matrixinvite.go +++ b/bridgev2/matrixinvite.go @@ -226,7 +226,7 @@ func (br *Bridge) handleGhostDMInvite(ctx context.Context, evt *event.Event, sen log.Debug(). Str("dm_redirected_to_id", string(resp.DMRedirectedTo)). Msg("Created DM was redirected to another user ID") - _, err = invitedGhost.Intent.SendState(ctx, portal.MXID, event.StateMember, invitedGhost.Intent.GetMXID().String(), &event.Content{ + _, err = invitedGhost.Intent.SendState(ctx, evt.RoomID, event.StateMember, invitedGhost.Intent.GetMXID().String(), &event.Content{ Parsed: &event.MemberEventContent{ Membership: event.MembershipLeave, Reason: "Direct chat redirected to another internal user ID", @@ -235,7 +235,7 @@ func (br *Bridge) handleGhostDMInvite(ctx context.Context, evt *event.Event, sen if err != nil { log.Err(err).Msg("Failed to make incorrect ghost leave new DM room") } - if resp.DMRedirectedTo != SpecialValueDMRedirectedToBot { + if resp.DMRedirectedTo == SpecialValueDMRedirectedToBot { overrideIntent = br.Bot } else if otherUserGhost, err := br.GetGhostByID(ctx, resp.DMRedirectedTo); err != nil { log.Err(err).Msg("Failed to get ghost of real portal other user ID") diff --git a/bridgev2/portal.go b/bridgev2/portal.go index 0bd23b9e..8fd29bb3 100644 --- a/bridgev2/portal.go +++ b/bridgev2/portal.go @@ -4885,7 +4885,7 @@ func (portal *Portal) addToUserSpaces(ctx context.Context) { if portal.Receiver != "" { login := portal.Bridge.GetCachedUserLoginByID(portal.Receiver) if login != nil { - up, err := portal.Bridge.DB.UserPortal.Get(ctx, login.UserLogin, portal.PortalKey) + up, err := portal.Bridge.DB.UserPortal.GetOrCreate(ctx, login.UserLogin, portal.PortalKey) if err != nil { log.Err(err).Msg("Failed to get user portal to add portal to spaces") } else {