diff options
Diffstat (limited to 'internal/ap/extract.go')
-rw-r--r-- | internal/ap/extract.go | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/internal/ap/extract.go b/internal/ap/extract.go index 6d224e9a8..74c4497b3 100644 --- a/internal/ap/extract.go +++ b/internal/ap/extract.go @@ -32,7 +32,6 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/gtserror" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" "github.com/superseriousbusiness/gotosocial/internal/text" - "github.com/superseriousbusiness/gotosocial/internal/util" ) // ExtractObjects will extract object vocab.Types from given implementing interface. @@ -841,27 +840,27 @@ func ExtractMentions(i WithTag) ([]*gtsmodel.Mention, error) { // ExtractMention extracts a minimal gtsmodel.Mention from a Mentionable. func ExtractMention(i Mentionable) (*gtsmodel.Mention, error) { + // See if a name has been set in the + // format `@someone@example.org`. nameString := ExtractName(i) - if nameString == "" { - return nil, gtserror.New("name prop empty") - } - - // Ensure namestring is valid so we - // can handle it properly later on. - if _, _, err := util.ExtractNamestringParts(nameString); err != nil { - return nil, err - } // The href prop should be the AP URI - // of the target account. + // of the target account; it could also + // be the URL, but we'll check this later. + var href string hrefProp := i.GetActivityStreamsHref() - if hrefProp == nil || !hrefProp.IsIRI() { - return nil, gtserror.New("no href prop") + if hrefProp != nil && hrefProp.IsIRI() { + href = hrefProp.GetIRI().String() + } + + // One of nameString and hrefProp must be set. + if nameString == "" && href == "" { + return nil, gtserror.Newf("neither Name nor Href were set") } return >smodel.Mention{ NameString: nameString, - TargetAccountURI: hrefProp.GetIRI().String(), + TargetAccountURI: href, }, nil } |