mirror of
https://github.com/M66B/FairEmail.git
synced 2026-01-05 20:34:49 +01:00
Fixed next on close timing
This commit is contained in:
@@ -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();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user