[feature] Implement backfilling statuses thru scheduled_at (#3685)

* Implement backfilling statuses thru scheduled_at

* Forbid mentioning others in backfills

* Update error messages & codes

* Add new tests for backfilled statuses

* Test that backfilling doesn't timeline or notify

* Fix check for absence of notification

* Test that backfills do not cause federation

* Fix type of apimodel.StatusCreateRequest.ScheduledAt in tests

* Add config file switch and min date check
This commit is contained in:
Vyr Cossont 2025-02-12 09:49:33 -08:00 committed by GitHub
commit fccb0bc102
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 515 additions and 42 deletions

View file

@ -86,7 +86,7 @@ func (s *Status) GetAccountID() string {
return s.AccountID
}
// GetBoostID implements timeline.Timelineable{}.
// GetBoostOfID implements timeline.Timelineable{}.
func (s *Status) GetBoostOfID() string {
return s.BoostOfID
}
@ -171,7 +171,7 @@ func (s *Status) EditsPopulated() bool {
return true
}
// EmojissUpToDate returns whether status emoji attachments of receiving status are up-to-date
// EmojisUpToDate returns whether status emoji attachments of receiving status are up-to-date
// according to emoji attachments of the passed status, by comparing their emoji URIs. We don't
// use IDs as this is used to determine whether there are new emojis to fetch.
func (s *Status) EmojisUpToDate(other *Status) bool {
@ -386,3 +386,8 @@ type Content struct {
Content string
ContentMap map[string]string
}
// BackfillStatus is a wrapper for creating a status without pushing notifications to followers.
type BackfillStatus struct {
*Status
}