diff --git a/bridgev2/matrix/provisioning.yaml b/bridgev2/matrix/provisioning.yaml index 26068db4f..8828f4ba4 100644 --- a/bridgev2/matrix/provisioning.yaml +++ b/bridgev2/matrix/provisioning.yaml @@ -583,6 +583,10 @@ components: description: The Matrix room ID of the direct chat with the user. examples: - '!OKhS0I5q2fCzdnl2qgeozDQw:t2bot.io' + extra_profile: + type: object + description: Extra profile metadata for the user on the remote network. + additionalProperties: true GroupCreateParams: type: object description: | diff --git a/bridgev2/provisionutil/listcontacts.go b/bridgev2/provisionutil/listcontacts.go index ce163e678..d4e76111f 100644 --- a/bridgev2/provisionutil/listcontacts.go +++ b/bridgev2/provisionutil/listcontacts.go @@ -67,6 +67,7 @@ func processResolveIdentifiers(ctx context.Context, br *bridgev2.Bridge, resp [] if contact.UserInfo.Identifiers != nil { apiContact.Identifiers = contact.UserInfo.Identifiers } + apiContact.ExtraProfile = contact.UserInfo.ExtraProfile } if contact.Ghost != nil { if syncInfo && contact.UserInfo != nil { @@ -80,6 +81,7 @@ func processResolveIdentifiers(ctx context.Context, br *bridgev2.Bridge, resp [] } apiContact.AvatarURL = contact.Ghost.AvatarMXC apiContact.MXID = contact.Ghost.Intent.GetMXID() + apiContact.ExtraProfile = contact.Ghost.ExtraProfile } if contact.Chat != nil { if contact.Chat.Portal == nil { diff --git a/bridgev2/provisionutil/resolveidentifier.go b/bridgev2/provisionutil/resolveidentifier.go index cfc388d00..eea2d449b 100644 --- a/bridgev2/provisionutil/resolveidentifier.go +++ b/bridgev2/provisionutil/resolveidentifier.go @@ -14,17 +14,19 @@ import ( "maunium.net/go/mautrix" "maunium.net/go/mautrix/bridgev2" + "maunium.net/go/mautrix/bridgev2/database" "maunium.net/go/mautrix/bridgev2/networkid" "maunium.net/go/mautrix/id" ) type RespResolveIdentifier struct { - ID networkid.UserID `json:"id"` - Name string `json:"name,omitempty"` - AvatarURL id.ContentURIString `json:"avatar_url,omitempty"` - Identifiers []string `json:"identifiers,omitempty"` - MXID id.UserID `json:"mxid,omitempty"` - DMRoomID id.RoomID `json:"dm_room_mxid,omitempty"` + ID networkid.UserID `json:"id"` + Name string `json:"name,omitempty"` + AvatarURL id.ContentURIString `json:"avatar_url,omitempty"` + Identifiers []string `json:"identifiers,omitempty"` + MXID id.UserID `json:"mxid,omitempty"` + DMRoomID id.RoomID `json:"dm_room_mxid,omitempty"` + ExtraProfile database.ExtraProfile `json:"extra_profile,omitempty"` Portal *bridgev2.Portal `json:"-"` Ghost *bridgev2.Ghost `json:"-"` @@ -94,8 +96,12 @@ func ResolveIdentifier( apiResp.AvatarURL = resp.Ghost.AvatarMXC apiResp.Identifiers = resp.Ghost.Identifiers apiResp.MXID = resp.Ghost.Intent.GetMXID() - } else if resp.UserInfo != nil && resp.UserInfo.Name != nil { - apiResp.Name = *resp.UserInfo.Name + apiResp.ExtraProfile = resp.Ghost.ExtraProfile + } else if resp.UserInfo != nil { + if resp.UserInfo.Name != nil { + apiResp.Name = *resp.UserInfo.Name + } + apiResp.ExtraProfile = resp.UserInfo.ExtraProfile } if resp.Chat != nil { if resp.Chat.PortalKey.IsEmpty() {