diff --git a/Clover/app/src/main/java/org/floens/chan/core/model/Post.java b/Clover/app/src/main/java/org/floens/chan/core/model/Post.java
index d9558c15..66384b5e 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/model/Post.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/model/Post.java
@@ -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.
* All {@code final} fields are thread-safe.
@@ -99,12 +97,13 @@ public class Post {
public final List 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 images;
- public String countryCode;
- public String countryName;
- public HttpUrl countryUrl;
-
public List 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;
diff --git a/Clover/app/src/main/java/org/floens/chan/core/site/common/FutabaChanReader.java b/Clover/app/src/main/java/org/floens/chan/core/site/common/FutabaChanReader.java
index 82563f27..29851612 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/site/common/FutabaChanReader.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/site/common/FutabaChanReader.java
@@ -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);
}
diff --git a/Clover/app/src/main/java/org/floens/chan/core/site/common/vichan/VichanApi.java b/Clover/app/src/main/java/org/floens/chan/core/site/common/vichan/VichanApi.java
index 29261fb2..382147ba 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/site/common/vichan/VichanApi.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/site/common/vichan/VichanApi.java
@@ -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);
}
diff --git a/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanThreadLoader.java b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanThreadLoader.java
index 90910abd..a197639d 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanThreadLoader.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanThreadLoader.java
@@ -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!");
}
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostsFilter.java b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostsFilter.java
index 3c5bb1cf..be0fafc3 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostsFilter.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostsFilter.java
@@ -35,33 +35,20 @@ import javax.inject.Inject;
import static org.floens.chan.Chan.inject;
public class PostsFilter {
- public static final Comparator IMAGE_COMPARATOR = new Comparator() {
- @Override
- public int compare(Post lhs, Post rhs) {
- return rhs.getImagesCount() - lhs.getImagesCount();
- }
- };
+ private static final Comparator IMAGE_COMPARATOR =
+ (lhs, rhs) -> rhs.getImagesCount() - lhs.getImagesCount();
- public static final Comparator REPLY_COMPARATOR = new Comparator() {
- @Override
- public int compare(Post lhs, Post rhs) {
- return rhs.getReplies() - lhs.getReplies();
- }
- };
+ private static final Comparator REPLY_COMPARATOR =
+ (lhs, rhs) -> rhs.getReplies() - lhs.getReplies();
- public static final Comparator NEWEST_COMPARATOR = new Comparator() {
- @Override
- public int compare(Post lhs, Post rhs) {
- return (int) (rhs.time - lhs.time);
- }
- };
+ private static final Comparator NEWEST_COMPARATOR =
+ (lhs, rhs) -> (int) (rhs.time - lhs.time);
- public static final Comparator OLDEST_COMPARATOR = new Comparator() {
- @Override
- public int compare(Post lhs, Post rhs) {
- return (int) (lhs.time - rhs.time);
- }
- };
+ private static final Comparator OLDEST_COMPARATOR =
+ (lhs, rhs) -> (int) (lhs.time - rhs.time);
+
+ private static final Comparator 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;
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
index 7e9e6799..a929ac51 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
@@ -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);
diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml
index 5e7eaf0c..4b4cf5d5 100644
--- a/Clover/app/src/main/res/values/strings.xml
+++ b/Clover/app/src/main/res/values/strings.xml
@@ -116,6 +116,7 @@ Re-enable this permission in the app settings if you permanently disabled it."
Image count
Newest
Oldest
+ Latest reply
Search
Found %1$d %2$s for "%3$s"