From 74a02366d778385dd8a75bea6a6b5325bf4481f7 Mon Sep 17 00:00:00 2001 From: Sumner Evans Date: Wed, 2 Apr 2025 09:10:35 -0600 Subject: [PATCH] bridgev2/legacymigrate: add post-migrate hook Signed-off-by: Sumner Evans --- bridgev2/matrix/mxmain/legacymigrate.go | 15 +++++++++++---- bridgev2/matrix/mxmain/main.go | 4 ++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/bridgev2/matrix/mxmain/legacymigrate.go b/bridgev2/matrix/mxmain/legacymigrate.go index d33dd8cd..8b25e210 100644 --- a/bridgev2/matrix/mxmain/legacymigrate.go +++ b/bridgev2/matrix/mxmain/legacymigrate.go @@ -226,11 +226,18 @@ func (br *BridgeMain) PostMigrate(ctx context.Context) error { Object("portal_key", portal.PortalKey). Str("room_type", string(portal.RoomType)). Msg("Migrating portal") - switch portal.RoomType { - case database.RoomTypeDM: - err = br.postMigrateDMPortal(ctx, portal) + if br.PostMigratePortal != nil { + err = br.PostMigratePortal(ctx, portal) if err != nil { - return fmt.Errorf("failed to update DM portal %s: %w", portal.MXID, err) + return fmt.Errorf("failed to run post-migrate portal hook for %s: %w", portal.MXID, err) + } + } else { + switch portal.RoomType { + case database.RoomTypeDM: + err = br.postMigrateDMPortal(ctx, portal) + if err != nil { + return fmt.Errorf("failed to update DM portal %s: %w", portal.MXID, err) + } } } _, err = br.Matrix.Bot.SendStateEvent(ctx, portal.MXID, event.StateElementFunctionalMembers, "", &event.ElementFunctionalMembersContent{ diff --git a/bridgev2/matrix/mxmain/main.go b/bridgev2/matrix/mxmain/main.go index dab0b914..63334ba5 100644 --- a/bridgev2/matrix/mxmain/main.go +++ b/bridgev2/matrix/mxmain/main.go @@ -67,6 +67,10 @@ type BridgeMain struct { PostInit func() PostStart func() + // PostMigratePortal is a function that will be called during a legacy + // migration for each portal. + PostMigratePortal func(context.Context, *bridgev2.Portal) error + // Connector is the network connector for the bridge. Connector bridgev2.NetworkConnector