diff options
author | 2021-06-13 18:42:28 +0200 | |
---|---|---|
committer | 2021-06-13 18:42:28 +0200 | |
commit | b4288f3c47a9ff9254b933dcb9ee7274d4a4135c (patch) | |
tree | 3fe1bb1ab8d4b8c5d9a83df708e5088f35c3150a /internal/typeutils | |
parent | Tidy + timeline embetterment (#38) (diff) | |
download | gotosocial-b4288f3c47a9ff9254b933dcb9ee7274d4a4135c.tar.xz |
Timeline manager (#40)
* start messing about with timeline manager
* i have no idea what i'm doing
* i continue to not know what i'm doing
* it's coming along
* bit more progress
* update timeline with new posts as they come in
* lint and fmt
* Select accounts where empty string
* restructure a bunch, get unfaves working
* moving stuff around
* federate status deletes properly
* mention regex better but not 100% there
* fix regex
* some more hacking away at the timeline code phew
* fix up some little things
* i can't even
* more timeline stuff
* move to ulid
* fiddley
* some lil fixes for kibou compatibility
* timelines working pretty alright!
* tidy + lint
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) |