mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[feature] Client API endpoints + v. basic web view for pinned posts (#1547)
* implement status pin client api + web handler * make test names + comments more descriptive * don't use separate table for status pins * remove unused add + remove checking * tidy up + add some more tests
This commit is contained in:
@@ -346,17 +346,16 @@ func (c *converter) ASStatusToStatus(ctx context.Context, statusable ap.Statusab
|
||||
// advanced visibility for this status
|
||||
// TODO: a lot of work to be done here -- a new type needs to be created for this in go-fed/activity using ASTOOL
|
||||
// for now we just set everything to true
|
||||
pinned := false
|
||||
federated := true
|
||||
boostable := true
|
||||
replyable := true
|
||||
likeable := true
|
||||
|
||||
status.Pinned = &pinned
|
||||
status.Federated = &federated
|
||||
status.Boostable = &boostable
|
||||
status.Replyable = &replyable
|
||||
status.Likeable = &likeable
|
||||
|
||||
// sensitive
|
||||
sensitive := ap.ExtractSensitive(statusable)
|
||||
status.Sensitive = &sensitive
|
||||
|
@@ -37,7 +37,6 @@ func (c *converter) StatusToBoost(ctx context.Context, s *gtsmodel.Status, boost
|
||||
}
|
||||
|
||||
sensitive := *s.Sensitive
|
||||
pinned := false // can't pin a boost
|
||||
federated := *s.Federated
|
||||
boostable := *s.Boostable
|
||||
replyable := *s.Replyable
|
||||
@@ -75,7 +74,6 @@ func (c *converter) StatusToBoost(ctx context.Context, s *gtsmodel.Status, boost
|
||||
BoostOfID: s.ID,
|
||||
BoostOfAccountID: s.AccountID,
|
||||
Visibility: s.Visibility,
|
||||
Pinned: &pinned,
|
||||
Federated: &federated,
|
||||
Boostable: &boostable,
|
||||
Replyable: &replyable,
|
||||
|
@@ -433,7 +433,7 @@ func (suite *InternalToASTestSuite) TestStatusesToASOutboxPage() {
|
||||
ctx := context.Background()
|
||||
|
||||
// get public statuses from testaccount
|
||||
statuses, err := suite.db.GetAccountStatuses(ctx, testAccount.ID, 30, true, true, "", "", false, false, true)
|
||||
statuses, err := suite.db.GetAccountStatuses(ctx, testAccount.ID, 30, true, true, "", "", false, true)
|
||||
suite.NoError(err)
|
||||
|
||||
page, err := suite.typeconverter.StatusesToASOutboxPage(ctx, testAccount.OutboxURI, "", "", statuses)
|
||||
|
@@ -628,7 +628,7 @@ func (c *converter) StatusToAPIStatus(ctx context.Context, s *gtsmodel.Status, r
|
||||
Bookmarked: interacts.Bookmarked,
|
||||
Muted: interacts.Muted,
|
||||
Reblogged: interacts.Reblogged,
|
||||
Pinned: *s.Pinned,
|
||||
Pinned: interacts.Pinned,
|
||||
Content: s.Content,
|
||||
Reblog: nil,
|
||||
Application: apiApplication,
|
||||
|
@@ -32,6 +32,7 @@ type statusInteractions struct {
|
||||
Muted bool
|
||||
Bookmarked bool
|
||||
Reblogged bool
|
||||
Pinned bool
|
||||
}
|
||||
|
||||
func (c *converter) interactionsWithStatusForAccount(ctx context.Context, s *gtsmodel.Status, requestingAccount *gtsmodel.Account) (*statusInteractions, error) {
|
||||
@@ -61,6 +62,12 @@ func (c *converter) interactionsWithStatusForAccount(ctx context.Context, s *gts
|
||||
return nil, fmt.Errorf("error checking if requesting account has bookmarked status: %s", err)
|
||||
}
|
||||
si.Bookmarked = bookmarked
|
||||
|
||||
// The only time 'pinned' should be true is if the
|
||||
// requesting account is looking at its OWN status.
|
||||
if s.AccountID == requestingAccount.ID {
|
||||
si.Pinned = !s.PinnedAt.IsZero()
|
||||
}
|
||||
}
|
||||
return si, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user