mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-18 13:49:53 +01:00
[android] remove complicated logic for detecting new visible items
notify after every scroll for all visible items instead
This commit is contained in:
@@ -16,7 +16,7 @@ class ConversationScrollListener extends
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onNewItemVisible(ConversationItem item) {
|
protected void onItemVisible(ConversationItem item) {
|
||||||
if (!item.isRead()) {
|
if (!item.isRead()) {
|
||||||
viewModel.markMessageRead(item.getGroupId(), item.getId());
|
viewModel.markMessageRead(item.getGroupId(), item.getId());
|
||||||
item.markRead();
|
item.markRead();
|
||||||
|
|||||||
@@ -34,14 +34,14 @@ class ThreadScrollListener<I extends ThreadItem>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onNewItemVisible(int firstVisible, int lastVisible,
|
protected void onItemsVisible(int firstVisible, int lastVisible,
|
||||||
int itemCount) {
|
int itemCount) {
|
||||||
super.onNewItemVisible(firstVisible, lastVisible, itemCount);
|
super.onItemsVisible(firstVisible, lastVisible, itemCount);
|
||||||
updateUnreadButtons(firstVisible, lastVisible, itemCount);
|
updateUnreadButtons(firstVisible, lastVisible, itemCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onNewItemVisible(I item) {
|
protected void onItemVisible(I item) {
|
||||||
if (!item.isRead()) {
|
if (!item.isRead()) {
|
||||||
item.setRead(true);
|
item.setRead(true);
|
||||||
controller.markItemRead(item);
|
controller.markItemRead(item);
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public abstract class BriarRecyclerViewScrollListener<A extends ItemReturningAda
|
|||||||
if (firstVisible != prevFirstVisible ||
|
if (firstVisible != prevFirstVisible ||
|
||||||
lastVisible != prevLastVisible ||
|
lastVisible != prevLastVisible ||
|
||||||
itemCount != prevItemCount) {
|
itemCount != prevItemCount) {
|
||||||
onNewItemVisible(firstVisible, lastVisible, itemCount);
|
onItemsVisible(firstVisible, lastVisible, itemCount);
|
||||||
prevFirstVisible = firstVisible;
|
prevFirstVisible = firstVisible;
|
||||||
prevLastVisible = lastVisible;
|
prevLastVisible = lastVisible;
|
||||||
prevItemCount = itemCount;
|
prevItemCount = itemCount;
|
||||||
@@ -44,37 +44,18 @@ public abstract class BriarRecyclerViewScrollListener<A extends ItemReturningAda
|
|||||||
}
|
}
|
||||||
|
|
||||||
@CallSuper
|
@CallSuper
|
||||||
protected void onNewItemVisible(int firstVisible, int lastVisible,
|
protected void onItemsVisible(int firstVisible, int lastVisible,
|
||||||
int itemCount) {
|
int itemCount) {
|
||||||
boolean init = prevFirstVisible == NO_POSITION ||
|
for (int i = firstVisible; i <= lastVisible; i++) {
|
||||||
prevLastVisible == NO_POSITION;
|
onItemVisible(i);
|
||||||
int visibleItems = prevLastVisible - prevFirstVisible;
|
|
||||||
boolean jump = Math.abs(firstVisible - prevFirstVisible) > visibleItems;
|
|
||||||
|
|
||||||
if (init || jump) {
|
|
||||||
// If the list has loaded, or we jump scrolled,
|
|
||||||
// all visible items are newly visible
|
|
||||||
for (int i = firstVisible; i <= lastVisible; i++)
|
|
||||||
onNewItemVisible(i);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean up = firstVisible > prevFirstVisible ||
|
|
||||||
lastVisible > prevLastVisible;
|
|
||||||
if (up) {
|
|
||||||
for (int i = prevLastVisible + 1; i <= lastVisible; i++)
|
|
||||||
onNewItemVisible(i);
|
|
||||||
} else {
|
|
||||||
for (int i = firstVisible; i < prevFirstVisible; i++)
|
|
||||||
onNewItemVisible(i);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onNewItemVisible(int position) {
|
private void onItemVisible(int position) {
|
||||||
I item = requireNonNull(adapter.getItemAt(position));
|
I item = requireNonNull(adapter.getItemAt(position));
|
||||||
onNewItemVisible(item);
|
onItemVisible(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void onNewItemVisible(I item);
|
protected abstract void onItemVisible(I item);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user