diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java index ef4c5ca34..fa7506246 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java @@ -64,7 +64,6 @@ import me.grishka.appkit.utils.V; public class HomeTabFragment extends MastodonToolbarFragment implements ScrollableToTop, OnBackPressedListener { private static final int ANNOUNCEMENTS_RESULT = 654; - private static final int PINNED_UPDATED_RESULT = 523; private String accountID; private MenuItem announcements; @@ -86,7 +85,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab private Fragment[] fragments; private FrameLayout[] tabViews; private TimelineDefinition[] timelines; - private Map timelinesByMenuItem = new HashMap<>(); + private final Map timelinesByMenuItem = new HashMap<>(); @Override public void onCreate(Bundle savedInstanceState) { @@ -378,11 +377,11 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab args.putString("listID", list.id); args.putString("listTitle", list.title); args.putInt("repliesPolicy", list.repliesPolicy.ordinal()); - Nav.goForResult(getActivity(), ListTimelineFragment.class, args, PINNED_UPDATED_RESULT, this); + Nav.go(getActivity(), ListTimelineFragment.class, args); } else if ((hashtag = hashtagsItems.get(id)) != null) { args.putString("hashtag", hashtag.name); args.putBoolean("following", hashtag.following); - Nav.goForResult(getActivity(), HashtagTimelineFragment.class, args, PINNED_UPDATED_RESULT, this); + Nav.go(getActivity(), HashtagTimelineFragment.class, args); } else { TimelineDefinition tl = timelinesByMenuItem.get(id); if (tl != null) { @@ -511,8 +510,6 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab announcements.setIcon(R.drawable.ic_fluent_megaphone_24_regular); announcements.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); UiUtils.insetPopupMenuIcon(getContext(), announcements); - } else if (reqCode == PINNED_UPDATED_RESULT && result != null && result.getBoolean("pinnedUpdated", false)) { - UiUtils.restartApp(); } } @@ -546,6 +543,13 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab } } + @Override + protected void onShown() { + super.onShown(); + Object pinnedTimelines = GlobalUserPreferences.pinnedTimelines.get(accountID); + if (pinnedTimelines != null && timelineDefinitions != pinnedTimelines) UiUtils.restartApp(); + } + @Override public void onViewStateRestored(Bundle savedInstanceState) { super.onViewStateRestored(savedInstanceState); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java index 156123e02..ed11cbbc3 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java @@ -38,7 +38,6 @@ public class ListTimelineFragment extends PinnableStatusListFragment { private String listTitle; private ListTimeline.RepliesPolicy repliesPolicy; private ImageButton fab; - private Bundle resultArgs = new Bundle(); public ListTimelineFragment() { setListLayoutId(R.layout.recycler_fragment_with_fab); @@ -51,7 +50,6 @@ public class ListTimelineFragment extends PinnableStatusListFragment { listID = args.getString("listID"); listTitle = args.getString("listTitle"); repliesPolicy = ListTimeline.RepliesPolicy.values()[args.getInt("repliesPolicy", 0)]; - resultArgs.putString("listID", listID); setTitle(listTitle); setHasOptionsMenu(true); @@ -95,9 +93,11 @@ public class ListTimelineFragment extends PinnableStatusListFragment { setTitle(list.title); listTitle = list.title; repliesPolicy = list.repliesPolicy; - resultArgs.putString("listTitle", listTitle); - resultArgs.putInt("repliesPolicy", repliesPolicy.ordinal()); - setResult(true, resultArgs); + Bundle result = new Bundle(); + result.putString("listID", listID); + result.putString("listTitle", listTitle); + result.putInt("repliesPolicy", repliesPolicy.ordinal()); + setResult(true, result); } @Override @@ -110,19 +110,16 @@ public class ListTimelineFragment extends PinnableStatusListFragment { .show(); } else if (item.getItemId() == R.id.delete) { UiUtils.confirmDeleteList(getActivity(), accountID, listID, listTitle, () -> { - resultArgs.putBoolean("deleted", true); - setResult(true, resultArgs); + Bundle result = new Bundle(); + result.putBoolean("deleted", true); + result.putString("listID", listID); + setResult(true, result); Nav.finish(this); }); } return true; } - @Override - public Bundle getResultArgs() { - return resultArgs; - } - @Override protected TimelineDefinition makeTimelineDefinition() { return TimelineDefinition.ofList(listID, listTitle); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelinesFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelinesFragment.java index 4eb83b807..39462ac9a 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelinesFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelinesFragment.java @@ -47,7 +47,6 @@ public class ListTimelinesFragment extends BaseRecyclerFragment im private HashMap userInList = new HashMap<>(); private int inProgress = 0; private ListsAdapter adapter; - private boolean pinnedUpdated; public ListTimelinesFragment() { super(10); @@ -76,12 +75,6 @@ public class ListTimelinesFragment extends BaseRecyclerFragment im loadData(); } - @Override - public void onDestroy() { - super.onDestroy(); - if (pinnedUpdated) UiUtils.restartApp(); - } - @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); @@ -167,7 +160,6 @@ public class ListTimelinesFragment extends BaseRecyclerFragment im @Override public void onFragmentResult(int reqCode, boolean listChanged, Bundle result){ if (reqCode == LIST_CHANGED_RESULT && listChanged) { - if (result.getBoolean("pinnedUpdated")) pinnedUpdated = true; String listID = result.getString("listID"); for (int i = 0; i < data.size(); i++) { ListTimeline item = data.get(i); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/PinnableStatusListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/PinnableStatusListFragment.java index 903736ce5..0c8cd011c 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/PinnableStatusListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/PinnableStatusListFragment.java @@ -15,7 +15,6 @@ import java.util.ArrayList; import java.util.List; public abstract class PinnableStatusListFragment extends StatusListFragment { - protected boolean pinnedUpdated; protected List pinnedTimelines; @Override @@ -54,7 +53,7 @@ public abstract class PinnableStatusListFragment extends StatusListFragment { } protected void togglePin(MenuItem pin) { - pinnedUpdated = true; + onPinnedUpdated(true); getToolbar().performHapticFeedback(HapticFeedbackConstants.CONTEXT_CLICK); TimelineDefinition def = makeTimelineDefinition(); boolean pinned = isPinned(); @@ -66,17 +65,5 @@ public abstract class PinnableStatusListFragment extends StatusListFragment { updatePinButton(pin); } - protected Bundle getResultArgs() { - return new Bundle(); - } - - @Override - public void onDestroy() { - super.onDestroy(); - Bundle resultArgs = getResultArgs(); - if (pinnedUpdated) { - resultArgs.putBoolean("pinnedUpdated", true); - setResult(true, resultArgs); - } - } + public void onPinnedUpdated(boolean pinned) {} }