From 660cf2c94ce6a87ac33d704ab1f68b2d4a258d92 Mon Sep 17 00:00:00 2001 From: nicole mikołajczyk Date: Tue, 12 Aug 2025 14:05:15 +0200 Subject: [feature] scheduled statuses (#4274) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4274 Co-authored-by: nicole mikołajczyk Co-committed-by: nicole mikołajczyk --- internal/api/model/scheduledstatus.go | 50 ++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 13 deletions(-) (limited to 'internal/api/model/scheduledstatus.go') diff --git a/internal/api/model/scheduledstatus.go b/internal/api/model/scheduledstatus.go index 1b074ab55..4acfde697 100644 --- a/internal/api/model/scheduledstatus.go +++ b/internal/api/model/scheduledstatus.go @@ -17,22 +17,46 @@ package model +import "time" + // ScheduledStatus represents a status that will be published at a future scheduled date. +// +// swagger:model scheduledStatus type ScheduledStatus struct { - ID string `json:"id"` - ScheduledAt string `json:"scheduled_at"` - Params *StatusParams `json:"params"` - MediaAttachments []Attachment `json:"media_attachments"` + ID string `json:"id"` + ScheduledAt string `json:"scheduled_at"` + Params *ScheduledStatusParams `json:"params"` + MediaAttachments []*Attachment `json:"media_attachments"` } // StatusParams represents parameters for a scheduled status. -type StatusParams struct { - Text string `json:"text"` - InReplyToID string `json:"in_reply_to_id,omitempty"` - MediaIDs []string `json:"media_ids,omitempty"` - Sensitive bool `json:"sensitive,omitempty"` - SpoilerText string `json:"spoiler_text,omitempty"` - Visibility string `json:"visibility"` - ScheduledAt string `json:"scheduled_at,omitempty"` - ApplicationID string `json:"application_id"` +type ScheduledStatusParams struct { + Text string `json:"text"` + MediaIDs []string `json:"media_ids,omitempty"` + Sensitive bool `json:"sensitive,omitempty"` + Poll *ScheduledStatusParamsPoll `json:"poll,omitempty"` + SpoilerText string `json:"spoiler_text,omitempty"` + Visibility Visibility `json:"visibility"` + InReplyToID string `json:"in_reply_to_id,omitempty"` + Language string `json:"language"` + ApplicationID string `json:"application_id"` + LocalOnly bool `json:"local_only,omitempty"` + ContentType StatusContentType `json:"content_type,omitempty"` + InteractionPolicy *InteractionPolicy `json:"interaction_policy,omitempty"` + ScheduledAt *string `json:"scheduled_at"` +} + +type ScheduledStatusParamsPoll struct { + Options []string `json:"options"` + ExpiresIn int `json:"expires_in"` + Multiple bool `json:"multiple"` + HideTotals bool `json:"hide_totals"` +} + +// ScheduledStatusUpdateRequest models a request to update the scheduled status publication date. +// +// swagger:ignore +type ScheduledStatusUpdateRequest struct { + // ISO 8601 Datetime at which to schedule a status. + ScheduledAt *time.Time `form:"scheduled_at" json:"scheduled_at"` } -- cgit v1.2.3