diff options
Diffstat (limited to 'internal/db/bundb/account.go')
-rw-r--r-- | internal/db/bundb/account.go | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/internal/db/bundb/account.go b/internal/db/bundb/account.go index 43e5055e1..fdee8cb76 100644 --- a/internal/db/bundb/account.go +++ b/internal/db/bundb/account.go @@ -254,7 +254,7 @@ func (a *accountDB) getAccount(ctx context.Context, lookup string, dbQuery func( func (a *accountDB) PopulateAccount(ctx context.Context, account *gtsmodel.Account) error { var ( err error - errs = gtserror.NewMultiError(3) + errs = gtserror.NewMultiError(5) ) if account.AvatarMediaAttachment == nil && account.AvatarMediaAttachmentID != "" { @@ -279,6 +279,37 @@ func (a *accountDB) PopulateAccount(ctx context.Context, account *gtsmodel.Accou } } + if !account.AlsoKnownAsPopulated() { + // Account alsoKnownAs accounts are + // out-of-date with URIs, repopulate. + alsoKnownAs := make([]*gtsmodel.Account, 0) + for _, uri := range account.AlsoKnownAsURIs { + akaAcct, err := a.state.DB.GetAccountByURI( + gtscontext.SetBarebones(ctx), + uri, + ) + if err != nil { + errs.Appendf("error populating also known as account %s: %w", uri, err) + continue + } + + alsoKnownAs = append(alsoKnownAs, akaAcct) + } + + account.AlsoKnownAs = alsoKnownAs + } + + if account.MovedTo == nil && account.MovedToURI != "" { + // Account movedTo is not set, fetch from database. + account.MovedTo, err = a.state.DB.GetAccountByURI( + gtscontext.SetBarebones(ctx), + account.MovedToURI, + ) + if err != nil { + errs.Appendf("error populating moved to account: %w", err) + } + } + if !account.EmojisPopulated() { // Account emojis are out-of-date with IDs, repopulate. account.Emojis, err = a.state.DB.GetEmojisByIDs( |