diff options
author | 2024-02-19 04:48:20 +0100 | |
---|---|---|
committer | 2024-02-19 03:48:20 +0000 | |
commit | a314d2b539804a31e602774196676e2d0089b8dc (patch) | |
tree | 9b68bb5176cf2b8f7909bf0fa02117f8c270d9b9 /internal/processing/util.go | |
parent | [chore] Comment out silly, frequently-failing `GetStatusTwice` test (#2656) (diff) | |
download | gotosocial-a314d2b539804a31e602774196676e2d0089b8dc.tar.xz |
[bugfix] Refactor parse mention, fix local mention bug (#2657)
* [bugfix] Refactor parse mention, fix local mention bug
* originAccount -> originAcct
Diffstat (limited to 'internal/processing/util.go')
-rw-r--r-- | internal/processing/util.go | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/internal/processing/util.go b/internal/processing/util.go deleted file mode 100644 index 1ce67c616..000000000 --- a/internal/processing/util.go +++ /dev/null @@ -1,91 +0,0 @@ -// GoToSocial -// Copyright (C) GoToSocial Authors admin@gotosocial.org -// SPDX-License-Identifier: AGPL-3.0-or-later -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -package processing - -import ( - "context" - "fmt" - - "github.com/superseriousbusiness/gotosocial/internal/config" - "github.com/superseriousbusiness/gotosocial/internal/db" - "github.com/superseriousbusiness/gotosocial/internal/federation" - "github.com/superseriousbusiness/gotosocial/internal/gtscontext" - "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" - "github.com/superseriousbusiness/gotosocial/internal/id" - "github.com/superseriousbusiness/gotosocial/internal/util" -) - -func GetParseMentionFunc(dbConn db.DB, federator *federation.Federator) gtsmodel.ParseMentionFunc { - return func(ctx context.Context, targetAccount string, originAccountID string, statusID string) (*gtsmodel.Mention, error) { - // get the origin account first since we'll need it to create the mention - originAccount, err := dbConn.GetAccountByID(ctx, originAccountID) - if err != nil { - return nil, fmt.Errorf("couldn't get mention origin account with id %s", originAccountID) - } - - username, domain, err := util.ExtractNamestringParts(targetAccount) - if err != nil { - return nil, fmt.Errorf("couldn't extract namestring parts from %s: %s", targetAccount, err) - } - - var mentionedAccount *gtsmodel.Account - if domain == "" || domain == config.GetHost() || domain == config.GetAccountDomain() { - localAccount, err := dbConn.GetAccountByUsernameDomain(ctx, username, "") - if err != nil { - return nil, err - } - mentionedAccount = localAccount - } else { - var requestingUsername string - - if originAccount.Domain == "" { - requestingUsername = originAccount.Username - } - - remoteAccount, _, err := federator.GetAccountByUsernameDomain( - gtscontext.SetFastFail(ctx), - requestingUsername, - username, - domain, - ) - if err != nil { - return nil, fmt.Errorf("parseMentionFunc: error fetching account: %s", err) - } - - // we were able to resolve it! - mentionedAccount = remoteAccount - } - - mentionID, err := id.NewRandomULID() - if err != nil { - return nil, err - } - - return >smodel.Mention{ - ID: mentionID, - StatusID: statusID, - OriginAccountID: originAccount.ID, - OriginAccountURI: originAccount.URI, - TargetAccountID: mentionedAccount.ID, - NameString: targetAccount, - TargetAccountURI: mentionedAccount.URI, - TargetAccountURL: mentionedAccount.URL, - OriginAccount: mentionedAccount, - }, nil - } -} |