From 9f0ff2dcd463cab891af320d0489b46f54ece6e6 Mon Sep 17 00:00:00 2001 From: sk Date: Sun, 22 Oct 2023 21:44:02 +0200 Subject: [PATCH] fix editing scheduled/drafted polls closes sk22#894 --- .../android/fragments/ComposeFragment.java | 2 +- .../android/model/ScheduledStatus.java | 36 ++++++++++--------- .../ComposePollViewController.java | 5 ++- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java index 2e7345fce..50efa9832 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -200,7 +200,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr public Instance instance; public Status editingStatus; - private ScheduledStatus scheduledStatus; + public ScheduledStatus scheduledStatus; private boolean redraftStatus; private ContentType contentType; diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/ScheduledStatus.java b/mastodon/src/main/java/org/joinmastodon/android/model/ScheduledStatus.java index 309bb4646..0f2af6cb6 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/ScheduledStatus.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/ScheduledStatus.java @@ -6,6 +6,7 @@ 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; @@ -27,10 +28,10 @@ public class ScheduledStatus extends BaseModel implements DisplayItemsParent{ @Override public void postprocess() throws ObjectValidationException { super.postprocess(); - if (mediaAttachments == null) mediaAttachments = List.of(); + if(mediaAttachments==null) mediaAttachments=List.of(); for(Attachment a:mediaAttachments) a.postprocess(); - if (params != null) params.postprocess(); + if(params!=null) params.postprocess(); } @Parcel @@ -53,7 +54,7 @@ public class ScheduledStatus extends BaseModel implements DisplayItemsParent{ @Override public void postprocess() throws ObjectValidationException { super.postprocess(); - if (poll != null) poll.postprocess(); + if(poll!=null) poll.postprocess(); } } @@ -67,25 +68,26 @@ public class ScheduledStatus extends BaseModel implements DisplayItemsParent{ 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()); + 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(); + 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; } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/viewcontrollers/ComposePollViewController.java b/mastodon/src/main/java/org/joinmastodon/android/ui/viewcontrollers/ComposePollViewController.java index 05c61b8d3..aa72ec724 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/viewcontrollers/ComposePollViewController.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/viewcontrollers/ComposePollViewController.java @@ -134,7 +134,10 @@ public class ComposePollViewController{ DraftPollOption opt=createDraftPollOption(false); opt.edit.setText(eopt.title); } - pollDuration=(int)fragment.editingStatus.poll.expiresAt.minus(fragment.editingStatus.createdAt.toEpochMilli(), ChronoUnit.MILLIS).getEpochSecond(); + if(fragment.scheduledStatus!=null && fragment.scheduledStatus.params.poll!=null) + pollDuration=Integer.parseInt(fragment.scheduledStatus.params.poll.expiresIn); + else if(fragment.editingStatus.poll.expiresAt!=null) + pollDuration=(int)fragment.editingStatus.poll.expiresAt.minus(fragment.editingStatus.createdAt.toEpochMilli(), ChronoUnit.MILLIS).getEpochSecond(); updatePollOptionHints(); pollDurationValue.setText(UiUtils.formatDuration(fragment.getContext(), pollDuration)); pollIsMultipleChoice=fragment.editingStatus.poll.multiple;