From 18600ed5fa96cd2316e35ce9b49ec945b05ef60a Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Fri, 25 Apr 2025 07:56:16 -0300 Subject: [PATCH] refactor(ScheduledStatus.java): add the scheduled status model back --- .../android/model/ScheduledStatus.java | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 mastodon/src/main/java/org/joinmastodon/android/model/ScheduledStatus.java diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/ScheduledStatus.java b/mastodon/src/main/java/org/joinmastodon/android/model/ScheduledStatus.java new file mode 100644 index 000000000..0f2af6cb6 --- /dev/null +++ b/mastodon/src/main/java/org/joinmastodon/android/model/ScheduledStatus.java @@ -0,0 +1,93 @@ +package org.joinmastodon.android.model; + +import org.joinmastodon.android.api.ObjectValidationException; +import org.joinmastodon.android.api.RequiredField; +import org.joinmastodon.android.model.Poll.Option; +import org.parceler.Parcel; + +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.List; +import java.util.stream.Collectors; + +@Parcel +public class ScheduledStatus extends BaseModel implements DisplayItemsParent{ + @RequiredField + public String id; + @RequiredField + public Instant scheduledAt; + @RequiredField + public Params params; + public List mediaAttachments; + + @Override + public String getID() { + return id; + } + + @Override + public void postprocess() throws ObjectValidationException { + super.postprocess(); + if(mediaAttachments==null) mediaAttachments=List.of(); + for(Attachment a:mediaAttachments) + a.postprocess(); + if(params!=null) params.postprocess(); + } + + @Parcel + public static class Params extends BaseModel { + @RequiredField + public String text; + public String spoilerText; + @RequiredField + public StatusPrivacy visibility; + public long inReplyToId; + public ScheduledPoll poll; + public boolean sensitive; + public boolean withRateLimit; + public String language; + public String idempotency; + public String applicationId; + public List mediaIds; + public ContentType contentType; + + @Override + public void postprocess() throws ObjectValidationException { + super.postprocess(); + if(poll!=null) poll.postprocess(); + } + } + + @Parcel + public static class ScheduledPoll extends BaseModel { + @RequiredField + public String expiresIn; + @RequiredField + public List options; + public boolean multiple; + public boolean hideTotals; + + public Poll toPoll() { + Poll p=new Poll(); + p.voted=true; + p.emojis=List.of(); + p.ownVotes=List.of(); + p.multiple=multiple; + p.options=options.stream().map(Option::new).collect(Collectors.toList()); + p.expiresAt=Instant.now().plus(Integer.parseInt(expiresIn)+1, ChronoUnit.SECONDS); + return p; + } + } + + public Status toStatus() { + Status s=Status.ofFake(id, params.text, scheduledAt); + s.mediaAttachments=mediaAttachments; + s.inReplyToId=params.inReplyToId>0 ? ""+params.inReplyToId : null; + s.spoilerText=params.spoilerText; + s.visibility=params.visibility; + s.language=params.language; + s.sensitive=params.sensitive; + if(params.poll!=null) s.poll=params.poll.toPoll(); + return s; + } +}