diff options
Diffstat (limited to 'internal/typeutils')
| -rw-r--r-- | internal/typeutils/astointernal.go | 11 | ||||
| -rw-r--r-- | internal/typeutils/internal.go | 9 | ||||
| -rw-r--r-- | internal/typeutils/internaltofrontend.go | 2 | ||||
| -rw-r--r-- | internal/typeutils/wrap.go | 10 | 
4 files changed, 22 insertions, 10 deletions
diff --git a/internal/typeutils/astointernal.go b/internal/typeutils/astointernal.go index 936cd9a22..5990e750f 100644 --- a/internal/typeutils/astointernal.go +++ b/internal/typeutils/astointernal.go @@ -117,10 +117,13 @@ func (c *converter) ASRepresentationToAccount(accountable Accountable, update bo  	// url property  	url, err := extractURL(accountable) -	if err != nil { -		return nil, fmt.Errorf("could not extract url for person with id %s: %s", uri.String(), err) +	if err == nil { +		// take the URL if we can find it +		acct.URL = url.String() +	} else { +		// otherwise just take the account URI as the URL +		acct.URL = uri.String()  	} -	acct.URL = url.String()  	// InboxURI  	if accountable.GetActivityStreamsInbox() != nil && accountable.GetActivityStreamsInbox().GetIRI() != nil { @@ -222,7 +225,7 @@ func (c *converter) ASStatusToStatus(statusable Statusable) (*gtsmodel.Status, e  	status.APStatusOwnerURI = attributedTo.String()  	statusOwner := >smodel.Account{} -	if err := c.db.GetWhere([]db.Where{{Key: "uri", Value: attributedTo.String()}}, statusOwner); err != nil { +	if err := c.db.GetWhere([]db.Where{{Key: "uri", Value: attributedTo.String(), CaseInsensitive: true}}, statusOwner); err != nil {  		return nil, fmt.Errorf("couldn't get status owner from db: %s", err)  	}  	status.AccountID = statusOwner.ID diff --git a/internal/typeutils/internal.go b/internal/typeutils/internal.go index 626509b34..3b3c8bd1b 100644 --- a/internal/typeutils/internal.go +++ b/internal/typeutils/internal.go @@ -4,8 +4,8 @@ import (  	"fmt"  	"time" -	"github.com/google/uuid"  	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" +	"github.com/superseriousbusiness/gotosocial/internal/id"  	"github.com/superseriousbusiness/gotosocial/internal/util"  ) @@ -25,7 +25,10 @@ func (c *converter) FollowRequestToFollow(f *gtsmodel.FollowRequest) *gtsmodel.F  func (c *converter) StatusToBoost(s *gtsmodel.Status, boostingAccount *gtsmodel.Account) (*gtsmodel.Status, error) {  	// the wrapper won't use the same ID as the boosted status so we generate some new UUIDs  	uris := util.GenerateURIsForAccount(boostingAccount.Username, c.config.Protocol, c.config.Host) -	boostWrapperStatusID := uuid.NewString() +	boostWrapperStatusID, err := id.NewULID() +	if err != nil { +		return nil, err +	}  	boostWrapperStatusURI := fmt.Sprintf("%s/%s", uris.StatusesURI, boostWrapperStatusID)  	boostWrapperStatusURL := fmt.Sprintf("%s/%s", uris.StatusesURL, boostWrapperStatusID) @@ -56,7 +59,7 @@ func (c *converter) StatusToBoost(s *gtsmodel.Status, boostingAccount *gtsmodel.  		Emojis:      []string{},  		// the below fields will be taken from the target status -		Content:             util.HTMLFormat(s.Content), +		Content:             s.Content,  		ContentWarning:      s.ContentWarning,  		ActivityStreamsType: s.ActivityStreamsType,  		Sensitive:           s.Sensitive, diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go index de3b94e01..1c283e9b8 100644 --- a/internal/typeutils/internaltofrontend.go +++ b/internal/typeutils/internaltofrontend.go @@ -64,7 +64,7 @@ func (c *converter) AccountToMastoSensitive(a *gtsmodel.Account) (*model.Account  func (c *converter) AccountToMastoPublic(a *gtsmodel.Account) (*model.Account, error) {  	// count followers  	followers := []gtsmodel.Follow{} -	if err := c.db.GetFollowersByAccountID(a.ID, &followers); err != nil { +	if err := c.db.GetFollowersByAccountID(a.ID, &followers, false); err != nil {  		if _, ok := err.(db.ErrNoEntries); !ok {  			return nil, fmt.Errorf("error getting followers: %s", err)  		} diff --git a/internal/typeutils/wrap.go b/internal/typeutils/wrap.go index fde6fda79..e06da2568 100644 --- a/internal/typeutils/wrap.go +++ b/internal/typeutils/wrap.go @@ -6,8 +6,8 @@ import (  	"github.com/go-fed/activity/streams"  	"github.com/go-fed/activity/streams/vocab" -	"github.com/google/uuid"  	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" +	"github.com/superseriousbusiness/gotosocial/internal/id"  	"github.com/superseriousbusiness/gotosocial/internal/util"  ) @@ -25,7 +25,13 @@ func (c *converter) WrapPersonInUpdate(person vocab.ActivityStreamsPerson, origi  	update.SetActivityStreamsActor(actorProp)  	// set the ID -	idString := util.GenerateURIForUpdate(originAccount.Username, c.config.Protocol, c.config.Host, uuid.NewString()) + +	newID, err := id.NewRandomULID() +	if err != nil { +		return nil, err +	} + +	idString := util.GenerateURIForUpdate(originAccount.Username, c.config.Protocol, c.config.Host, newID)  	idURI, err := url.Parse(idString)  	if err != nil {  		return nil, fmt.Errorf("WrapPersonInUpdate: error parsing url %s: %s", idString, err)  | 
