Add events for marked known posts and replies.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / Core.java
index 2f69bee..4c08651 100644 (file)
@@ -438,6 +438,9 @@ public class Core implements IdentityListener {
                synchronized (newSones) {
                        boolean isNew = !knownSones.contains(sone.getId()) && newSones.remove(sone.getId());
                        knownSones.add(sone.getId());
+                       if (isNew) {
+                               coreListenerManager.fireMarkSoneKnown(sone);
+                       }
                        return isNew;
                }
        }
@@ -485,6 +488,9 @@ public class Core implements IdentityListener {
                synchronized (newPosts) {
                        boolean isNew = !knownPosts.contains(postId) && newPosts.remove(postId);
                        knownPosts.add(postId);
+                       if (isNew) {
+                               coreListenerManager.fireMarkPostKnown(getPost(postId));
+                       }
                        return isNew;
                }
        }
@@ -540,6 +546,9 @@ public class Core implements IdentityListener {
                synchronized (newReplies) {
                        boolean isNew = !knownReplies.contains(replyId) && newReplies.remove(replyId);
                        knownReplies.add(replyId);
+                       if (isNew) {
+                               coreListenerManager.fireMarkReplyKnown(getReply(replyId));
+                       }
                        return isNew;
                }
        }
@@ -679,7 +688,13 @@ public class Core implements IdentityListener {
                        sone.setLatestEdition(Numbers.safeParseLong(identity.getProperty("Sone.LatestEdition"), (long) 0));
                        if (newSone) {
                                synchronized (newSones) {
-                                       newSones.add(sone.getId());
+                                       newSone = !knownSones.contains(sone.getId());
+                                       if (newSone) {
+                                               newSones.add(sone.getId());
+                                       }
+                               }
+                               if (newSone) {
+                                       coreListenerManager.fireNewSoneFound(sone);
                                }
                        }
                        remoteSones.put(identity.getId(), sone);