From 2a88cccd2a4cc776f5840897bae731202dcdd900 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 29 Jan 2019 10:08:22 +0000 Subject: [PATCH] Fixed next on close timing --- .../eu/faircode/email/FragmentMessages.java | 49 ++++++++++++------- .../eu/faircode/email/ViewModelMessages.java | 14 +++--- 2 files changed, 36 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index ae73b605e6..84883ccf5f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -280,20 +280,22 @@ public class FragmentMessages extends FragmentBase { rvMessage.setAdapter(adapter); if (viewType == AdapterMessage.ViewType.THREAD) { - ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class); - model.observePrevNext(getViewLifecycleOwner(), thread, new ViewModelMessages.IPrevNext() { - @Override - public void onPrevious(Long id) { - bottom_navigation.getMenu().findItem(R.id.action_prev).setIntent(new Intent().putExtra("id", id)); - bottom_navigation.getMenu().findItem(R.id.action_prev).setEnabled(id != null); - } + if (actionbar) { + ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class); + model.observePrevNext(getViewLifecycleOwner(), thread, new ViewModelMessages.IPrevNext() { + @Override + public void onPrevious(boolean exists, Long id) { + bottom_navigation.getMenu().findItem(R.id.action_prev).setIntent(new Intent().putExtra("id", id)); + bottom_navigation.getMenu().findItem(R.id.action_prev).setEnabled(id != null); + } - @Override - public void onNext(Long id) { - bottom_navigation.getMenu().findItem(R.id.action_next).setIntent(new Intent().putExtra("id", id)); - bottom_navigation.getMenu().findItem(R.id.action_next).setEnabled(id != null); - } - }); + @Override + public void onNext(boolean exists, Long id) { + bottom_navigation.getMenu().findItem(R.id.action_next).setIntent(new Intent().putExtra("id", id)); + bottom_navigation.getMenu().findItem(R.id.action_next).setEnabled(id != null); + } + }); + } } else { final SelectionPredicateMessage predicate = new SelectionPredicateMessage(rvMessage); @@ -2069,12 +2071,21 @@ public class FragmentMessages extends FragmentBase { if (autoclose) finish(); else if (autonext) { - Intent intent = bottom_navigation.getMenu().findItem(R.id.action_next).getIntent(); - Long id = (intent == null ? null : intent.getLongExtra("id", -1)); - if (id == null || id < 0) - finish(); - else - navigate(id); + ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class); + model.observePrevNext(getViewLifecycleOwner(), thread, new ViewModelMessages.IPrevNext() { + @Override + public void onPrevious(boolean exists, Long id) { + // Do nothing + } + + @Override + public void onNext(boolean exists, Long id) { + if (id != null) + navigate(id); + if (!exists) + finish(); + } + }); } } diff --git a/app/src/main/java/eu/faircode/email/ViewModelMessages.java b/app/src/main/java/eu/faircode/email/ViewModelMessages.java index efb0800204..abe4096119 100644 --- a/app/src/main/java/eu/faircode/email/ViewModelMessages.java +++ b/app/src/main/java/eu/faircode/email/ViewModelMessages.java @@ -91,19 +91,17 @@ public class ViewModelMessages extends ViewModel { TupleMessageEx next = list.get(pos - 1); if (next == null) load = true; - else - intf.onNext(next.id); + intf.onNext(true, next == null ? null : next.id); } else - intf.onNext(null); + intf.onNext(false, null); if (pos + 1 < list.size()) { TupleMessageEx prev = list.get(pos + 1); if (prev == null) load = true; - else - intf.onPrevious(prev.id); + intf.onPrevious(true, prev == null ? null : prev.id); } else - intf.onPrevious(null); + intf.onPrevious(false, null); if (load) list.loadAround(pos); @@ -116,8 +114,8 @@ public class ViewModelMessages extends ViewModel { } interface IPrevNext { - void onPrevious(Long id); + void onPrevious(boolean exists, Long id); - void onNext(Long id); + void onNext(boolean exists, Long id); } }