Don't auto-refresh notifications if the user scrolled too far
This commit is contained in:
parent
66b7b127f9
commit
ac1e5e991e
|
@ -130,7 +130,7 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
|
||||||
protected void onShown(){
|
protected void onShown(){
|
||||||
super.onShown();
|
super.onShown();
|
||||||
unreadMarker=realUnreadMarker=AccountSessionManager.get(accountID).getLastKnownNotificationsMarker();
|
unreadMarker=realUnreadMarker=AccountSessionManager.get(accountID).getLastKnownNotificationsMarker();
|
||||||
if(!dataLoading){
|
if(!dataLoading && canRefreshWithoutUpsettingUser()){
|
||||||
reloadingFromCache=true;
|
reloadingFromCache=true;
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
@ -348,4 +348,20 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean canRefreshWithoutUpsettingUser(){
|
||||||
|
// TODO maybe reload notifications the same way we reload the home timelines, i.e. with gaps and stuff
|
||||||
|
if(data.size()<=itemsPerPage)
|
||||||
|
return true;
|
||||||
|
for(int i=list.getChildCount()-1;i>=0;i--){
|
||||||
|
if(list.getChildViewHolder(list.getChildAt(i)) instanceof StatusDisplayItem.Holder<?> itemHolder){
|
||||||
|
String id=itemHolder.getItemID();
|
||||||
|
for(int j=0;j<data.size();j++){
|
||||||
|
if(data.get(j).id.equals(id))
|
||||||
|
return j<itemsPerPage; // Can refresh the list without losing scroll position if it is within the first page
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue