mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 14:52:26 -05:00
[feature] scheduled statuses (#4274)
An implementation of [`scheduled_statuses`](https://docs.joinmastodon.org/methods/scheduled_statuses/). Will fix #1006. this is heavily WIP and I need to reorganize some of the code, working on this made me somehow familiar with the codebase and led to my other recent contributions i told some fops on fedi i'd work on this so i have no choice but to complete it 🤷♀️ btw iirc my avatar presents me working on this branch Signed-off-by: nicole mikołajczyk <git@mkljczk.pl> Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4274 Co-authored-by: nicole mikołajczyk <git@mkljczk.pl> Co-committed-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
parent
cead741c16
commit
660cf2c94c
46 changed files with 2354 additions and 68 deletions
|
|
@ -3014,3 +3014,57 @@ func (c *Converter) TokenToAPITokenInfo(
|
|||
Application: apiApplication,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Converter) ScheduledStatusToAPIScheduledStatus(
|
||||
ctx context.Context,
|
||||
scheduledStatus *gtsmodel.ScheduledStatus,
|
||||
) (*apimodel.ScheduledStatus, error) {
|
||||
apiAttachments, err := c.convertAttachmentsToAPIAttachments(
|
||||
ctx,
|
||||
scheduledStatus.MediaAttachments,
|
||||
scheduledStatus.MediaIDs,
|
||||
)
|
||||
if err != nil {
|
||||
log.Errorf(ctx, "error converting status attachments: %v", err)
|
||||
}
|
||||
|
||||
scheduledAt := util.FormatISO8601(scheduledStatus.ScheduledAt)
|
||||
|
||||
apiScheduledStatus := &apimodel.ScheduledStatus{
|
||||
ID: scheduledStatus.ID,
|
||||
ScheduledAt: scheduledAt,
|
||||
Params: &apimodel.ScheduledStatusParams{
|
||||
Text: scheduledStatus.Text,
|
||||
MediaIDs: scheduledStatus.MediaIDs,
|
||||
Sensitive: *scheduledStatus.Sensitive,
|
||||
SpoilerText: scheduledStatus.SpoilerText,
|
||||
Visibility: VisToAPIVis(scheduledStatus.Visibility),
|
||||
InReplyToID: scheduledStatus.InReplyToID,
|
||||
Language: scheduledStatus.Language,
|
||||
ApplicationID: scheduledStatus.ApplicationID,
|
||||
LocalOnly: *scheduledStatus.LocalOnly,
|
||||
ContentType: apimodel.StatusContentType(scheduledStatus.ContentType),
|
||||
ScheduledAt: nil,
|
||||
},
|
||||
MediaAttachments: apiAttachments,
|
||||
}
|
||||
|
||||
if len(scheduledStatus.Poll.Options) > 1 {
|
||||
apiScheduledStatus.Params.Poll = &apimodel.ScheduledStatusParamsPoll{
|
||||
Options: scheduledStatus.Poll.Options,
|
||||
ExpiresIn: scheduledStatus.Poll.ExpiresIn,
|
||||
Multiple: *scheduledStatus.Poll.Multiple,
|
||||
HideTotals: *scheduledStatus.Poll.HideTotals,
|
||||
}
|
||||
}
|
||||
|
||||
if scheduledStatus.InteractionPolicy != nil {
|
||||
apiInteractionPolicy, err := c.InteractionPolicyToAPIInteractionPolicy(ctx, scheduledStatus.InteractionPolicy, nil, nil)
|
||||
if err != nil {
|
||||
return nil, gtserror.Newf("error converting interaction policy: %w", err)
|
||||
}
|
||||
apiScheduledStatus.Params.InteractionPolicy = apiInteractionPolicy
|
||||
}
|
||||
|
||||
return apiScheduledStatus, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue