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);
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);
}
}

Loading…
Cancel
Save