Always fire element-was-read events, even if element is not new.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / Core.java
index e94924c..da2a2a1 100644 (file)
@@ -1168,15 +1168,13 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                                List<Post> storedPosts = storedSone.getPosts();
                                synchronized (knownPosts) {
                                        for (Post post : sone.getPosts()) {
-                                               post.setSone(storedSone);
+                                               post.setSone(storedSone).setKnown(knownPosts.contains(post.getId()));
                                                if (!storedPosts.contains(post)) {
                                                        if (post.getTime() < getSoneFollowingTime(sone)) {
-                                                               sone.setKnown(true);
                                                                knownPosts.add(post.getId());
                                                        } else if (!knownPosts.contains(post.getId())) {
+                                                               sone.setKnown(false);
                                                                coreListenerManager.fireNewPostFound(post);
-                                                       } else {
-                                                               sone.setKnown(true);
                                                        }
                                                }
                                                posts.put(post.getId(), post);
@@ -1195,15 +1193,13 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                                Set<PostReply> storedReplies = storedSone.getReplies();
                                synchronized (knownReplies) {
                                        for (PostReply reply : sone.getReplies()) {
-                                               reply.setSone(storedSone);
+                                               reply.setSone(storedSone).setKnown(knownReplies.contains(reply.getId()));
                                                if (!storedReplies.contains(reply)) {
                                                        if (reply.getTime() < getSoneFollowingTime(sone)) {
-                                                               reply.setKnown(true);
                                                                knownReplies.add(reply.getId());
                                                        } else if (!knownReplies.contains(reply.getId())) {
+                                                               reply.setKnown(false);
                                                                coreListenerManager.fireNewReplyFound(reply);
-                                                       } else {
-                                                               reply.setKnown(true);
                                                        }
                                                }
                                                replies.put(reply.getId(), reply);
@@ -1654,8 +1650,8 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        public void markPostKnown(Post post) {
                post.setKnown(true);
                synchronized (knownPosts) {
+                       coreListenerManager.fireMarkPostKnown(post);
                        if (knownPosts.add(post.getId())) {
-                               coreListenerManager.fireMarkPostKnown(post);
                                touchConfiguration();
                        }
                }
@@ -1793,8 +1789,8 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        public void markReplyKnown(PostReply reply) {
                reply.setKnown(true);
                synchronized (knownReplies) {
+                       coreListenerManager.fireMarkReplyKnown(reply);
                        if (knownReplies.add(reply.getId())) {
-                               coreListenerManager.fireMarkReplyKnown(reply);
                                touchConfiguration();
                        }
                }