fix gap max_id when post before gap is filtered
hopefully fixes sk22#856
This commit is contained in:
@@ -26,6 +26,7 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import me.grishka.appkit.api.Callback;
|
||||
@@ -69,7 +70,7 @@ public class CacheController{
|
||||
Status status=MastodonAPIController.gson.fromJson(cursor.getString(0), Status.class);
|
||||
status.postprocess();
|
||||
int flags=cursor.getInt(1);
|
||||
status.hasGapAfter=((flags & POST_FLAG_GAP_AFTER)!=0);
|
||||
status.hasGapAfter=((flags & POST_FLAG_GAP_AFTER)!=0) ? status.id : null;
|
||||
newMaxID=status.id;
|
||||
result.add(status);
|
||||
}while(cursor.moveToNext());
|
||||
@@ -113,7 +114,7 @@ public class CacheController{
|
||||
values.put("id", s.id);
|
||||
values.put("json", MastodonAPIController.gson.toJson(s));
|
||||
int flags=0;
|
||||
if(s.hasGapAfter)
|
||||
if(Objects.equals(s.hasGapAfter, s.id))
|
||||
flags|=POST_FLAG_GAP_AFTER;
|
||||
values.put("flags", flags);
|
||||
values.put("time", s.createdAt.getEpochSecond());
|
||||
|
||||
@@ -280,14 +280,14 @@ public class AccountSession{
|
||||
if(filterStatusContainingObject(o, extractor, context, profile)){
|
||||
Status s=extractor.apply(o);
|
||||
removeUs.add(o);
|
||||
if(s!=null && s.hasGapAfter && i>0){
|
||||
if(s!=null && s.hasGapAfter!=null && i>0){
|
||||
// oops, we're about to remove an item that has a gap after...
|
||||
// gotta find the previous status that's not also about to be removed
|
||||
for(int j=i-1; j>=0; j--){
|
||||
T p=objects.get(j);
|
||||
Status prev=extractor.apply(objects.get(j));
|
||||
if(prev!=null && !removeUs.contains(p)){
|
||||
prev.hasGapAfter=true;
|
||||
prev.hasGapAfter=s.hasGapAfter;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user