From 9c64ac20f04c389a61bb1062863677e7f663094d Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 20 Sep 2019 08:39:15 +0200 Subject: [PATCH] Fix by simplifying --- .../eu/faircode/email/FragmentMessages.java | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 07063bd660..8dd75586e1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -229,7 +229,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. private SelectionPredicateMessage selectionPredicate = null; private SelectionTracker selectionTracker = null; - private Long previous = null; + private Long prev = null; private Long next = null; private Long closeId = null; private int autoCloseCount = 0; @@ -647,8 +647,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { - boolean reversed = prefs.getBoolean("reversed", false); - switch (menuItem.getItemId()) { case R.id.action_delete: onActionMove(EntityFolder.TRASH); @@ -663,11 +661,11 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. return true; case R.id.action_prev: - navigate(reversed ? next : previous, true); + navigate(prev, true); return true; case R.id.action_next: - navigate(reversed ? previous : next, false); + navigate(next, false); return true; default: @@ -924,14 +922,24 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. model.observePrevNext(getViewLifecycleOwner(), id, new ViewModelMessages.IPrevNext() { @Override public void onPrevious(boolean exists, Long id) { - previous = id; - bottom_navigation.getMenu().findItem(R.id.action_prev).setEnabled(id != null); + boolean reversed = prefs.getBoolean("reversed", false); + if (reversed) + next = id; + else + prev = id; + bottom_navigation.getMenu().findItem(R.id.action_prev).setEnabled(prev != null); + bottom_navigation.getMenu().findItem(R.id.action_next).setEnabled(next != null); } @Override public void onNext(boolean exists, Long id) { - next = id; - bottom_navigation.getMenu().findItem(R.id.action_next).setEnabled(id != null); + boolean reversed = prefs.getBoolean("reversed", false); + if (reversed) + prev = id; + else + next = id; + bottom_navigation.getMenu().findItem(R.id.action_prev).setEnabled(prev != null); + bottom_navigation.getMenu().findItem(R.id.action_next).setEnabled(next != null); } @Override @@ -954,30 +962,24 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. final SwipeListener swipeListener = new SwipeListener(getContext(), new SwipeListener.ISwipeListener() { @Override public boolean onSwipeRight() { - boolean reversed = prefs.getBoolean("reversed", false); - Long go = (reversed ? next : previous); - - if (go == null) { + if (prev == null) { Animation bounce = AnimationUtils.loadAnimation(getContext(), R.anim.bounce_right); view.startAnimation(bounce); } else - navigate(go, true); + navigate(prev, true); - return (go != null); + return (prev != null); } @Override public boolean onSwipeLeft() { - boolean reversed = prefs.getBoolean("reversed", false); - Long go = (reversed ? previous : next); - - if (go == null) { + if (next == null) { Animation bounce = AnimationUtils.loadAnimation(getContext(), R.anim.bounce_left); view.startAnimation(bounce); } else - navigate(go, false); + navigate(next, false); - return (go != null); + return (next != null); } }); @@ -3212,7 +3214,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. return null; EntityFolder folder = db.folder().getFolder(message.folder); - if (folder == null) + if (folder == null || folder.account == null) return null; EntityAccount account = db.account().getAccount(folder.account);