From 91aa81041e98d013d01adc0c455c359980e7a997 Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> Date: Wed, 22 Jun 2016 12:27:58 -0300 Subject: [PATCH] Store and expose time a blog post was received This is useful when sorting blog posts in the combined feed. It ensures you do not miss older posts that were just synced to you. --- .../src/org/briarproject/api/blogs/BlogConstants.java | 1 + .../src/org/briarproject/api/blogs/BlogPostHeader.java | 9 ++++++++- .../src/org/briarproject/blogs/BlogManagerImpl.java | 6 ++++-- .../src/org/briarproject/blogs/BlogPostValidator.java | 2 ++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/briar-api/src/org/briarproject/api/blogs/BlogConstants.java b/briar-api/src/org/briarproject/api/blogs/BlogConstants.java index 3c8e8baf83..7bbaacdb8b 100644 --- a/briar-api/src/org/briarproject/api/blogs/BlogConstants.java +++ b/briar-api/src/org/briarproject/api/blogs/BlogConstants.java @@ -32,6 +32,7 @@ public interface BlogConstants { String KEY_DESCRIPTION = "description"; String KEY_TITLE = "title"; String KEY_TIMESTAMP = "timestamp"; + String KEY_TIME_RECEIVED = "timeReceived"; String KEY_PARENT = "parent"; String KEY_AUTHOR_ID = "id"; String KEY_AUTHOR_NAME = "name"; diff --git a/briar-api/src/org/briarproject/api/blogs/BlogPostHeader.java b/briar-api/src/org/briarproject/api/blogs/BlogPostHeader.java index b3a740bcb9..980ea27eb4 100644 --- a/briar-api/src/org/briarproject/api/blogs/BlogPostHeader.java +++ b/briar-api/src/org/briarproject/api/blogs/BlogPostHeader.java @@ -11,18 +11,25 @@ public class BlogPostHeader extends PostHeader { @Nullable private final String title; + private final long timeReceived; public BlogPostHeader(@Nullable String title, @NotNull MessageId id, - @Nullable MessageId parentId, long timestamp, + @Nullable MessageId parentId, long timestamp, long timeReceived, @NotNull Author author, @NotNull Status authorStatus, @NotNull String contentType, boolean read) { super(id, parentId, timestamp, author, authorStatus, contentType, read); this.title = title; + this.timeReceived = timeReceived; } @Nullable public String getTitle() { return title; } + + public long getTimeReceived() { + return timeReceived; + } + } diff --git a/briar-core/src/org/briarproject/blogs/BlogManagerImpl.java b/briar-core/src/org/briarproject/blogs/BlogManagerImpl.java index 45b3bbe847..182ea11869 100644 --- a/briar-core/src/org/briarproject/blogs/BlogManagerImpl.java +++ b/briar-core/src/org/briarproject/blogs/BlogManagerImpl.java @@ -55,6 +55,7 @@ import static org.briarproject.api.blogs.BlogConstants.KEY_PARENT; import static org.briarproject.api.blogs.BlogConstants.KEY_PUBLIC_KEY; import static org.briarproject.api.blogs.BlogConstants.KEY_READ; import static org.briarproject.api.blogs.BlogConstants.KEY_TIMESTAMP; +import static org.briarproject.api.blogs.BlogConstants.KEY_TIME_RECEIVED; import static org.briarproject.api.blogs.BlogConstants.KEY_TITLE; import static org.briarproject.api.contact.ContactManager.AddContactHook; import static org.briarproject.api.contact.ContactManager.RemoveContactHook; @@ -376,6 +377,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager, String title = meta.getOptionalString(KEY_TITLE); long timestamp = meta.getLong(KEY_TIMESTAMP); + long timeReceived = meta.getLong(KEY_TIME_RECEIVED, timestamp); MessageId parentId = null; if (meta.containsKey(KEY_PARENT)) parentId = new MessageId(meta.getRaw(KEY_PARENT)); @@ -394,7 +396,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager, String contentType = meta.getString(KEY_CONTENT_TYPE); boolean read = meta.getBoolean(KEY_READ); - return new BlogPostHeader(title, id, parentId, timestamp, author, - authorStatus, contentType, read); + return new BlogPostHeader(title, id, parentId, timestamp, timeReceived, + author, authorStatus, contentType, read); } } diff --git a/briar-core/src/org/briarproject/blogs/BlogPostValidator.java b/briar-core/src/org/briarproject/blogs/BlogPostValidator.java index 1ff0e2d461..d412f10aea 100644 --- a/briar-core/src/org/briarproject/blogs/BlogPostValidator.java +++ b/briar-core/src/org/briarproject/blogs/BlogPostValidator.java @@ -34,6 +34,7 @@ import static org.briarproject.api.blogs.BlogConstants.KEY_PARENT; import static org.briarproject.api.blogs.BlogConstants.KEY_PUBLIC_KEY; import static org.briarproject.api.blogs.BlogConstants.KEY_READ; import static org.briarproject.api.blogs.BlogConstants.KEY_TIMESTAMP; +import static org.briarproject.api.blogs.BlogConstants.KEY_TIME_RECEIVED; import static org.briarproject.api.blogs.BlogConstants.KEY_TITLE; import static org.briarproject.api.blogs.BlogConstants.MAX_BLOG_POST_BODY_LENGTH; import static org.briarproject.api.blogs.BlogConstants.MAX_BLOG_POST_TITLE_LENGTH; @@ -119,6 +120,7 @@ class BlogPostValidator extends BdfMessageValidator { ); meta.put(KEY_AUTHOR, author); meta.put(KEY_TIMESTAMP, m.getTimestamp()); + meta.put(KEY_TIME_RECEIVED, clock.currentTimeMillis()); if (parent != null) { meta.put(KEY_PARENT, parent); dependencies = Collections.singletonList(new MessageId(parent)); -- GitLab