Fixed next on close timing

pull/147/head
M66B 7 years ago
parent ab71106b55
commit 2a88cccd2a

@ -280,20 +280,22 @@ public class FragmentMessages extends FragmentBase {
rvMessage.setAdapter(adapter); rvMessage.setAdapter(adapter);
if (viewType == AdapterMessage.ViewType.THREAD) { if (viewType == AdapterMessage.ViewType.THREAD) {
ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class); if (actionbar) {
model.observePrevNext(getViewLifecycleOwner(), thread, new ViewModelMessages.IPrevNext() { ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class);
@Override model.observePrevNext(getViewLifecycleOwner(), thread, new ViewModelMessages.IPrevNext() {
public void onPrevious(Long id) { @Override
bottom_navigation.getMenu().findItem(R.id.action_prev).setIntent(new Intent().putExtra("id", id)); public void onPrevious(boolean exists, Long id) {
bottom_navigation.getMenu().findItem(R.id.action_prev).setEnabled(id != null); 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 @Override
public void onNext(Long id) { 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).setIntent(new Intent().putExtra("id", id));
bottom_navigation.getMenu().findItem(R.id.action_next).setEnabled(id != null); bottom_navigation.getMenu().findItem(R.id.action_next).setEnabled(id != null);
} }
}); });
}
} else { } else {
final SelectionPredicateMessage predicate = new SelectionPredicateMessage(rvMessage); final SelectionPredicateMessage predicate = new SelectionPredicateMessage(rvMessage);
@ -2069,12 +2071,21 @@ public class FragmentMessages extends FragmentBase {
if (autoclose) if (autoclose)
finish(); finish();
else if (autonext) { else if (autonext) {
Intent intent = bottom_navigation.getMenu().findItem(R.id.action_next).getIntent(); ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class);
Long id = (intent == null ? null : intent.getLongExtra("id", -1)); model.observePrevNext(getViewLifecycleOwner(), thread, new ViewModelMessages.IPrevNext() {
if (id == null || id < 0) @Override
finish(); public void onPrevious(boolean exists, Long id) {
else // Do nothing
navigate(id); }
@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); TupleMessageEx next = list.get(pos - 1);
if (next == null) if (next == null)
load = true; load = true;
else intf.onNext(true, next == null ? null : next.id);
intf.onNext(next.id);
} else } else
intf.onNext(null); intf.onNext(false, null);
if (pos + 1 < list.size()) { if (pos + 1 < list.size()) {
TupleMessageEx prev = list.get(pos + 1); TupleMessageEx prev = list.get(pos + 1);
if (prev == null) if (prev == null)
load = true; load = true;
else intf.onPrevious(true, prev == null ? null : prev.id);
intf.onPrevious(prev.id);
} else } else
intf.onPrevious(null); intf.onPrevious(false, null);
if (load) if (load)
list.loadAround(pos); list.loadAround(pos);
@ -116,8 +114,8 @@ public class ViewModelMessages extends ViewModel {
} }
interface IPrevNext { interface IPrevNext {
void onPrevious(Long id); void onPrevious(boolean exists, Long id);
void onNext(Long id); void onNext(boolean exists, Long id);
} }
} }

Loading…
Cancel
Save