Fixed single message previous/next navigation

pull/147/head
M66B 7 years ago
parent 00f42983df
commit 524f5b9136

@ -283,7 +283,7 @@ public class FragmentMessages extends FragmentBase {
if (viewType == AdapterMessage.ViewType.THREAD) { if (viewType == AdapterMessage.ViewType.THREAD) {
if (actionbar) { if (actionbar) {
ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class); ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class);
model.observePrevNext(getViewLifecycleOwner(), thread, new ViewModelMessages.IPrevNext() { model.observePrevNext(getViewLifecycleOwner(), id, new ViewModelMessages.IPrevNext() {
@Override @Override
public void onPrevious(boolean exists, Long id) { 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).setIntent(new Intent().putExtra("id", id));
@ -1777,7 +1777,7 @@ public class FragmentMessages extends FragmentBase {
private void loadMessages() { private void loadMessages() {
if (viewType == AdapterMessage.ViewType.THREAD && autonext) { if (viewType == AdapterMessage.ViewType.THREAD && autonext) {
ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class); ViewModelMessages model = ViewModelProviders.of(getActivity()).get(ViewModelMessages.class);
model.observePrevNext(getViewLifecycleOwner(), thread, new ViewModelMessages.IPrevNext() { model.observePrevNext(getViewLifecycleOwner(), id, new ViewModelMessages.IPrevNext() {
boolean once = false; boolean once = false;
@Override @Override

@ -75,22 +75,22 @@ public class ViewModelMessages extends ViewModel {
messages.clear(); messages.clear();
} }
void observePrevNext(LifecycleOwner owner, final String thread, final IPrevNext intf) { void observePrevNext(LifecycleOwner owner, final long id, final IPrevNext intf) {
LiveData<PagedList<TupleMessageEx>> list = messages.get(false); LiveData<PagedList<TupleMessageEx>> list = messages.get(false);
if (list == null) { if (list == null) {
Log.w("Observe previous/next without list"); Log.w("Observe previous/next without list");
return; return;
} }
Log.i("Observe previous/next thread=" + thread); Log.i("Observe previous/next id=" + id);
list.observe(owner, new Observer<PagedList<TupleMessageEx>>() { list.observe(owner, new Observer<PagedList<TupleMessageEx>>() {
@Override @Override
public void onChanged(PagedList<TupleMessageEx> messages) { public void onChanged(PagedList<TupleMessageEx> messages) {
Log.i("Observe previous/next thread=" + thread + " messages=" + messages.size()); Log.i("Observe previous/next id=" + id + " messages=" + messages.size());
for (int pos = 0; pos < messages.size(); pos++) { for (int pos = 0; pos < messages.size(); pos++) {
TupleMessageEx item = messages.get(pos); TupleMessageEx item = messages.get(pos);
if (item != null && thread.equals(item.thread)) { if (item != null && id == item.id) {
boolean load = false; boolean load = false;
if (pos - 1 >= 0) { if (pos - 1 >= 0) {
@ -116,7 +116,7 @@ public class ViewModelMessages extends ViewModel {
} }
} }
Log.w("Observe previous/next gone thread=" + thread); Log.w("Observe previous/next gone id=" + id);
} }
}); });
} }

Loading…
Cancel
Save