From ab2d063fcb04f241a3147c843a021491f5fc0a55 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Wed, 13 Mar 2024 13:53:29 +0100 Subject: [feature] Process outgoing Move from clientAPI (#2750) * prevent moved accounts from taking create-type actions * update move logic * federate move out * indicate on web profile when an account has moved * [docs] Add migration docs section * lock while checking + setting move state * use redirectFollowers func for clientAPI as well * comment typo * linter? i barely know 'er! * Update internal/uris/uri.go Co-authored-by: Daenney * add a couple tests for move * fix little mistake exposed by tests (thanks tests) * ensure Move marked as successful * attach shared util funcs to struct * lock whole account when doing move * move moving check to after error check * replace repeated text with error func * linterrrrrr!!!! * catch self follow case --------- Co-authored-by: Daenney --- internal/db/bundb/move.go | 16 +++++++++++++--- internal/db/move.go | 3 +++ 2 files changed, 16 insertions(+), 3 deletions(-) (limited to 'internal/db') diff --git a/internal/db/bundb/move.go b/internal/db/bundb/move.go index a66b9dea5..220874630 100644 --- a/internal/db/bundb/move.go +++ b/internal/db/bundb/move.go @@ -177,21 +177,31 @@ func (m *moveDB) getMove( } // Populate the Move by parsing out the URIs. + if err := m.PopulateMove(ctx, move); err != nil { + return nil, err + } + + return move, nil +} + +func (m *moveDB) PopulateMove(ctx context.Context, move *gtsmodel.Move) error { if move.Origin == nil { + var err error move.Origin, err = url.Parse(move.OriginURI) if err != nil { - return nil, fmt.Errorf("error parsing Move originURI: %w", err) + return fmt.Errorf("error parsing Move originURI: %w", err) } } if move.Target == nil { + var err error move.Target, err = url.Parse(move.TargetURI) if err != nil { - return nil, fmt.Errorf("error parsing Move originURI: %w", err) + return fmt.Errorf("error parsing Move targetURI: %w", err) } } - return move, nil + return nil } func (m *moveDB) PutMove(ctx context.Context, move *gtsmodel.Move) error { diff --git a/internal/db/move.go b/internal/db/move.go index 5bce781a3..42357627b 100644 --- a/internal/db/move.go +++ b/internal/db/move.go @@ -34,6 +34,9 @@ type Move interface { // GetMoveByOriginTarget gets one move with the given originURI and targetURI. GetMoveByOriginTarget(ctx context.Context, originURI string, targetURI string) (*gtsmodel.Move, error) + // PopulateMove parses out the origin and target URIs on the move. + PopulateMove(ctx context.Context, move *gtsmodel.Move) error + // GetLatestMoveSuccessInvolvingURIs gets the time of // the latest successfully-processed Move that includes // either uri1 or uri2 in target or origin positions. -- cgit v1.2.3