browse: add last modified filter.

Closes #251
master
Floens 7 years ago
parent 099465239a
commit a093b9dfbd
  1. 38
      Clover/app/src/main/java/org/floens/chan/core/model/Post.java
  2. 4
      Clover/app/src/main/java/org/floens/chan/core/site/common/FutabaChanReader.java
  3. 4
      Clover/app/src/main/java/org/floens/chan/core/site/common/vichan/VichanApi.java
  4. 1
      Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanThreadLoader.java
  5. 41
      Clover/app/src/main/java/org/floens/chan/ui/adapter/PostsFilter.java
  6. 3
      Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
  7. 1
      Clover/app/src/main/res/values/strings.xml

@ -28,8 +28,6 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import okhttp3.HttpUrl;
/**
* Contains all data needed to represent a single post.<br>
* All {@code final} fields are thread-safe.
@ -99,12 +97,13 @@ public class Post {
public final List<Integer> repliesFrom = new ArrayList<>();
// These members may only mutate on the main thread.
private boolean sticky = false;
private boolean closed = false;
private boolean archived = false;
private int replies = -1;
private int imagesCount = -1;
private int uniqueIps = -1;
private boolean sticky;
private boolean closed;
private boolean archived;
private int replies;
private int imagesCount;
private int uniqueIps;
private long lastModified;
private String title = "";
private Post(Builder builder) {
@ -116,6 +115,7 @@ public class Post {
replies = builder.replies;
imagesCount = builder.imagesCount;
uniqueIps = builder.uniqueIps;
lastModified = builder.lastModified;
sticky = builder.sticky;
closed = builder.closed;
archived = builder.archived;
@ -214,6 +214,16 @@ public class Post {
this.uniqueIps = uniqueIps;
}
@MainThread
public long getLastModified() {
return lastModified;
}
@MainThread
public void setLastModified(long lastModified) {
this.lastModified = lastModified;
}
@MainThread
public String getTitle() {
return title;
@ -246,19 +256,16 @@ public class Post {
public boolean sticky;
public boolean closed;
public boolean archived;
public long lastModified = -1L;
public String subject = "";
public String name = "";
public CharSequence comment = "";
public String tripcode = "";
public long unixTimestampSeconds = -1;
public long unixTimestampSeconds = -1L;
public List<PostImage> images;
public String countryCode;
public String countryName;
public HttpUrl countryUrl;
public List<PostHttpIcon> httpIcons;
public String posterId = "";
@ -324,6 +331,11 @@ public class Post {
return this;
}
public Builder lastModified(long lastModified) {
this.lastModified = lastModified;
return this;
}
public Builder closed(boolean closed) {
this.closed = closed;
return this;

@ -193,6 +193,9 @@ public class FutabaChanReader implements ChanReader {
case "unique_ips":
builder.uniqueIps(reader.nextInt());
break;
case "last_modified":
builder.lastModified(reader.nextLong());
break;
case "id":
builder.posterId(reader.nextString());
break;
@ -253,6 +256,7 @@ public class FutabaChanReader implements ChanReader {
op.replies(builder.replies);
op.images(builder.imagesCount);
op.uniqueIps(builder.uniqueIps);
op.lastModified(builder.lastModified);
queue.setOp(op);
}

@ -171,6 +171,9 @@ public class VichanApi extends CommonSite.CommonApi {
case "unique_ips":
builder.uniqueIps(reader.nextInt());
break;
case "last_modified":
builder.lastModified(reader.nextLong());
break;
case "id":
builder.posterId(reader.nextString());
break;
@ -228,6 +231,7 @@ public class VichanApi extends CommonSite.CommonApi {
op.replies(builder.replies);
op.images(builder.imagesCount);
op.uniqueIps(builder.uniqueIps);
op.lastModified(builder.lastModified);
queue.setOp(op);
}

@ -310,6 +310,7 @@ public class ChanThreadLoader implements Response.ErrorListener, Response.Listen
realOp.setReplies(fakeOp.replies);
realOp.setImagesCount(fakeOp.imagesCount);
realOp.setUniqueIps(fakeOp.uniqueIps);
realOp.setLastModified(fakeOp.lastModified);
} else {
Logger.e(TAG, "Thread has no op!");
}

@ -35,33 +35,20 @@ import javax.inject.Inject;
import static org.floens.chan.Chan.inject;
public class PostsFilter {
public static final Comparator<Post> IMAGE_COMPARATOR = new Comparator<Post>() {
@Override
public int compare(Post lhs, Post rhs) {
return rhs.getImagesCount() - lhs.getImagesCount();
}
};
private static final Comparator<Post> IMAGE_COMPARATOR =
(lhs, rhs) -> rhs.getImagesCount() - lhs.getImagesCount();
public static final Comparator<Post> REPLY_COMPARATOR = new Comparator<Post>() {
@Override
public int compare(Post lhs, Post rhs) {
return rhs.getReplies() - lhs.getReplies();
}
};
private static final Comparator<Post> REPLY_COMPARATOR =
(lhs, rhs) -> rhs.getReplies() - lhs.getReplies();
public static final Comparator<Post> NEWEST_COMPARATOR = new Comparator<Post>() {
@Override
public int compare(Post lhs, Post rhs) {
return (int) (rhs.time - lhs.time);
}
};
private static final Comparator<Post> NEWEST_COMPARATOR =
(lhs, rhs) -> (int) (rhs.time - lhs.time);
public static final Comparator<Post> OLDEST_COMPARATOR = new Comparator<Post>() {
@Override
public int compare(Post lhs, Post rhs) {
return (int) (lhs.time - rhs.time);
}
};
private static final Comparator<Post> OLDEST_COMPARATOR =
(lhs, rhs) -> (int) (lhs.time - rhs.time);
private static final Comparator<Post> MODIFIED_COMPARATOR =
(lhs, rhs) -> (int) (rhs.getLastModified() - lhs.getLastModified());
@Inject
DatabaseManager databaseManager;
@ -99,6 +86,9 @@ public class PostsFilter {
case OLDEST:
Collections.sort(posts, OLDEST_COMPARATOR);
break;
case MODIFIED:
Collections.sort(posts, MODIFIED_COMPARATOR);
break;
}
}
@ -149,7 +139,8 @@ public class PostsFilter {
REPLY("reply"),
IMAGE("image"),
NEWEST("newest"),
OLDEST("oldest");
OLDEST("oldest"),
MODIFIED("modified");
public String name;

@ -290,6 +290,9 @@ public class BrowseController extends ThreadController implements
case OLDEST:
nameId = R.string.order_oldest;
break;
case MODIFIED:
nameId = R.string.order_modified;
break;
}
String name = getString(nameId);

@ -116,6 +116,7 @@ Re-enable this permission in the app settings if you permanently disabled it."</
<string name="order_image">Image count</string>
<string name="order_newest">Newest</string>
<string name="order_oldest">Oldest</string>
<string name="order_modified">Latest reply</string>
<string name="search_hint">Search</string>
<string name="search_results">Found %1$d %2$s for "%3$s"</string>

Loading…
Cancel
Save