connector: support transaction IDs

This commit is contained in:
Skip R
2026-02-03 21:55:58 -08:00
parent 36c23bef87
commit 094bc9bd77
4 changed files with 36 additions and 14 deletions

View File

@@ -20,7 +20,11 @@ import (
"context"
"maunium.net/go/mautrix/bridgev2"
"maunium.net/go/mautrix/bridgev2/networkid"
"maunium.net/go/mautrix/event"
"maunium.net/go/mautrix/id"
"go.mau.fi/mautrix-discord/pkg/discordid"
"go.mau.fi/mautrix-discord/pkg/msgconv"
)
@@ -31,8 +35,9 @@ type DiscordConnector struct {
}
var (
_ bridgev2.NetworkConnector = (*DiscordConnector)(nil)
_ bridgev2.MaxFileSizeingNetwork = (*DiscordConnector)(nil)
_ bridgev2.NetworkConnector = (*DiscordConnector)(nil)
_ bridgev2.MaxFileSizeingNetwork = (*DiscordConnector)(nil)
_ bridgev2.TransactionIDGeneratingNetwork = (*DiscordConnector)(nil)
)
func (d *DiscordConnector) Init(bridge *bridgev2.Bridge) {
@@ -59,3 +64,7 @@ func (d *DiscordConnector) GetName() bridgev2.BridgeName {
DefaultPort: 29334,
}
}
func (d *DiscordConnector) GenerateTransactionID(_ id.UserID, _ id.RoomID, _ event.Type) networkid.RawTransactionID {
return networkid.RawTransactionID(discordid.GenerateNonce())
}

View File

@@ -59,11 +59,19 @@ type DiscordMessage struct {
}
var (
_ bridgev2.RemoteMessage = (*DiscordMessage)(nil)
_ bridgev2.RemoteMessage = (*DiscordMessage)(nil)
_ bridgev2.RemoteMessageWithTransactionID = (*DiscordMessage)(nil)
// _ bridgev2.RemoteEdit = (*DiscordMessage)(nil)
// _ bridgev2.RemoteMessageRemove = (*DiscordMessage)(nil)
)
func (m *DiscordMessage) GetTransactionID() networkid.TransactionID {
if m.Data.Nonce == "" {
return ""
}
return networkid.TransactionID(m.Data.Nonce)
}
func (m *DiscordMessage) ConvertMessage(ctx context.Context, portal *bridgev2.Portal, intent bridgev2.MatrixAPI) (*bridgev2.ConvertedMessage, error) {
return m.Client.connector.MsgConv.ToMatrix(ctx, portal, intent, m.Client.UserLogin, m.Client.Session, m.Data), nil
}