From eecc1242bee8044d8845c82b9afc53cd9ef6c367 Mon Sep 17 00:00:00 2001 From: sk Date: Fri, 30 Dec 2022 22:34:41 +0100 Subject: [PATCH] handle recursive compose/drafts list --- .../android/fragments/ComposeFragment.java | 15 +++++++++++---- .../fragments/ScheduledStatusListFragment.java | 16 +++++++++++++++- 2 files changed, 26 insertions(+), 5 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 fd4d92f8a..aa6c2cd77 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -144,6 +144,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr private static final int MEDIA_RESULT=717; private static final int IMAGE_DESCRIPTION_RESULT=363; + private static final int SCHEDULED_STATUS_OPENED_RESULT=161; private static final int MAX_ATTACHMENTS=4; private static final String TAG="ComposeFragment"; @@ -249,7 +250,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr AccountSessionManager.getInstance().updateInstanceInfo(instanceDomain); } - // sorry about all this ugly code, but i can't find any consistency in ComposeFragment.java Bundle bundle = savedInstanceState != null ? savedInstanceState : getArguments(); if (bundle.containsKey("scheduledStatus")) scheduledStatus=Parcels.unwrap(bundle.getParcelable("scheduledStatus")); if (bundle.containsKey("scheduledAt")) scheduledAt=(Instant) bundle.getSerializable("scheduledAt"); @@ -708,9 +708,14 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr args.putString("account", accountID); InputMethodManager imm=getActivity().getSystemService(InputMethodManager.class); imm.hideSoftInputFromWindow(draftsBtn.getWindowToken(), 0); - Nav.go(getActivity(), ScheduledStatusListFragment.class, args); - // TODO: figure out a better way to handle the back stack -// if (!hasDraft()) content.postDelayed(()->Nav.finish(this), 200); + if (hasDraft()) { + Nav.go(getActivity(), ScheduledStatusListFragment.class, args); + } else { + // result for the previous ScheduledStatusList + setResult(true, null); + // finishing fragment in "onFragmentResult" + Nav.goForResult(getActivity(), ScheduledStatusListFragment.class, args, SCHEDULED_STATUS_OPENED_RESULT, this); + } } private void updateLanguage(String lang) { @@ -1040,6 +1045,8 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr break; } } + } else if (reqCode == SCHEDULED_STATUS_OPENED_RESULT && success && getActivity() != null) { + Nav.finish(this); } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ScheduledStatusListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ScheduledStatusListFragment.java index 5fed551fd..fffb2caba 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ScheduledStatusListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ScheduledStatusListFragment.java @@ -2,6 +2,8 @@ package org.joinmastodon.android.fragments; import android.app.Activity; import android.os.Bundle; +import android.view.View; +import android.widget.ImageButton; import com.squareup.otto.Subscribe; @@ -18,6 +20,7 @@ import org.joinmastodon.android.model.HeaderPaginationList; import org.joinmastodon.android.model.ScheduledStatus; import org.joinmastodon.android.model.Status; import org.joinmastodon.android.ui.displayitems.StatusDisplayItem; +import org.joinmastodon.android.ui.utils.UiUtils; import org.parceler.Parcels; import java.util.Collections; @@ -28,6 +31,7 @@ import me.grishka.appkit.api.SimpleCallback; public class ScheduledStatusListFragment extends BaseStatusListFragment { private String nextMaxID; + private static final int SCHEDULED_STATUS_LIST_OPENED = 161; @Override public void onCreate(Bundle savedInstanceState){ @@ -68,7 +72,17 @@ public class ScheduledStatusListFragment extends BaseStatusListFragment