From 230ed4b2ba5ef7eab80792eb40d47747db97595e Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 9 Nov 2022 10:59:49 +0100 Subject: [PATCH] Improve and avoid last empty when coming back --- .../FragmentMastodonConversation.java | 13 ++++----- .../FragmentMastodonNotification.java | 11 ++++--- .../timeline/FragmentMastodonTimeline.java | 29 ++++++++----------- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonConversation.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonConversation.java index 3b7fdd1c1..b7abf5582 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonConversation.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonConversation.java @@ -15,9 +15,6 @@ package app.fedilab.android.ui.fragment.timeline; * see . */ -import static app.fedilab.android.BaseMainActivity.currentInstance; -import static app.fedilab.android.BaseMainActivity.currentUserID; - import android.content.SharedPreferences; import android.os.Bundle; import android.view.LayoutInflater; @@ -43,7 +40,6 @@ import app.fedilab.android.client.entities.app.StatusCache; import app.fedilab.android.client.entities.app.Timeline; import app.fedilab.android.databinding.FragmentPaginationBinding; import app.fedilab.android.exception.DBException; -import app.fedilab.android.helper.Helper; import app.fedilab.android.helper.MastodonHelper; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.ui.drawer.ConversationAdapter; @@ -70,6 +66,7 @@ public class FragmentMastodonConversation extends Fragment implements Conversati flagLoading = false; binding = FragmentPaginationBinding.inflate(inflater, container, false); binding.getRoot().setBackgroundColor(ThemeHelper.getBackgroundColor(requireActivity())); + isViewInitialized = false; return binding.getRoot(); } @@ -86,9 +83,11 @@ public class FragmentMastodonConversation extends Fragment implements Conversati @Override public void onResume() { super.onResume(); - if (Timeline.TimeLineEnum.CONVERSATION.getValue().compareTo(Helper.getSlugOfFirstFragment(requireActivity(), currentUserID, currentInstance)) != 0 && !isViewInitialized) { + if (!isViewInitialized) { isViewInitialized = true; - initializeConversationCommonView(initialConversations); + if (initialConversations != null) { + initializeConversationCommonView(initialConversations); + } } } @@ -221,7 +220,7 @@ public class FragmentMastodonConversation extends Fragment implements Conversati public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - isViewInitialized = Timeline.TimeLineEnum.CONVERSATION.getValue().compareTo(Helper.getSlugOfFirstFragment(requireActivity(), currentUserID, currentInstance)) == 0; + int c1 = getResources().getColor(R.color.cyanea_accent_reference); binding.swipeContainer.setProgressBackgroundColorSchemeColor(getResources().getColor(R.color.cyanea_primary_reference)); binding.swipeContainer.setColorSchemeColors( diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java index b4076ffc7..04697e963 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java @@ -14,9 +14,6 @@ package app.fedilab.android.ui.fragment.timeline; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ -import static app.fedilab.android.BaseMainActivity.currentInstance; -import static app.fedilab.android.BaseMainActivity.currentUserID; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -170,7 +167,7 @@ public class FragmentMastodonNotification extends Fragment implements Notificati public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { flagLoading = false; - isViewInitialized = Timeline.TimeLineEnum.NOTIFICATION.getValue().compareTo(Helper.getSlugOfFirstFragment(requireActivity(), currentUserID, currentInstance)) == 0; + isViewInitialized = false; binding = FragmentPaginationBinding.inflate(inflater, container, false); View root = binding.getRoot(); if (getArguments() != null) { @@ -323,9 +320,11 @@ public class FragmentMastodonNotification extends Fragment implements Notificati @Override public void onResume() { super.onResume(); - if (Timeline.TimeLineEnum.NOTIFICATION.getValue().compareTo(Helper.getSlugOfFirstFragment(requireActivity(), currentUserID, currentInstance)) != 0 && !isViewInitialized) { + if (!isViewInitialized) { isViewInitialized = true; - initializeNotificationView(initialNotifications); + if (initialNotifications != null) { + initializeNotificationView(initialNotifications); + } } } diff --git a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java index e51754bdc..8c354c9b3 100644 --- a/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java +++ b/app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java @@ -164,17 +164,17 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. private PinnedTimeline pinnedTimeline; private String ident; private String slug; - private TimelinesVM.TimelineParams timelineParams; private boolean canBeFederated; private boolean rememberPosition; @Override public void onResume() { super.onResume(); - if (slug != null && slug.compareTo(Helper.getSlugOfFirstFragment(requireActivity(), currentUserID, currentInstance)) != 0 - && !isViewInitialized) { + if (!isViewInitialized) { isViewInitialized = true; - initializeStatusesCommonView(initialStatuses); + if (initialStatuses != null) { + initializeStatusesCommonView(initialStatuses); + } } if (timelineStatuses != null && timelineStatuses.size() > 0) { route(DIRECTION.FETCH_NEW, true); @@ -229,7 +229,6 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - timelinesVM = new ViewModelProvider(FragmentMastodonTimeline.this).get(viewModelKey, TimelinesVM.class); accountsVM = new ViewModelProvider(FragmentMastodonTimeline.this).get(viewModelKey, AccountsVM.class); initialStatuses = null; @@ -244,22 +243,20 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. } //Only fragment in main view pager should not have the view initialized //AND Only the first fragment will initialize its view - if (!isViewInitialized) { - if (slug != null) { - isViewInitialized = slug.compareTo(Helper.getSlugOfFirstFragment(requireActivity(), currentUserID, currentInstance)) == 0; - } - } - flagLoading = false; - router(null); } + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + } + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { timelineType = Timeline.TimeLineEnum.HOME; - canBeFederated = true; if (getArguments() != null) { timelineType = (Timeline.TimeLineEnum) getArguments().get(Helper.ARG_TIMELINE_TYPE); @@ -592,14 +589,12 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter. * @param direction - DIRECTION null if first call, then is set to TOP or BOTTOM depending of scroll */ private void routeCommon(DIRECTION direction, boolean fetchingMissing, Status status) { - if (direction == null && !isViewInitialized && slug != null) { - isViewInitialized = slug.compareTo(Helper.getSlugOfFirstFragment(requireActivity(), currentUserID, currentInstance)) == 0; - } + if (binding == null || getActivity() == null || !isAdded()) { return; } //Initialize with default params - timelineParams = new TimelinesVM.TimelineParams(timelineType, direction, ident); + TimelinesVM.TimelineParams timelineParams = new TimelinesVM.TimelineParams(timelineType, direction, ident); timelineParams.limit = MastodonHelper.statusesPerCall(requireActivity()); if (direction == DIRECTION.REFRESH || direction == DIRECTION.SCROLL_TOP || direction == DIRECTION.FETCH_NEW) { timelineParams.maxId = null;