X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=22ab47b7f93cf68778b3401b58b41ad57b0d1bb5;hb=7edffb4478bdeae16b009bced9d6769d0cb50a3b;hp=3ebdb59fe90849f38f5026abed003f4049346321;hpb=0dc78f88b1f1c66e859567f7c6ba038cac7d92db;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index 3ebdb59..22ab47b 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -494,20 +494,38 @@ public class Core implements IdentityListener, UpdateListener { } /** - * Returns whether the given Sone is a new Sone. After this check, the Sone - * is marked as known, i.e. a second call with the same parameters will - * always yield {@code false}. + * Returns whether the Sone with the given ID is a new Sone. After this + * check, the Sone is marked as known, i.e. a second call with the same + * parameters will always yield {@code false}. * - * @param sone - * The sone to check for + * @param soneId + * The ID of the sone to check for * @return {@code true} if the given Sone is new, false otherwise */ - public boolean isNewSone(Sone sone) { + public boolean isNewSone(String soneId) { + return isNewSone(soneId, true); + } + + /** + * Returns whether the Sone with the given ID is a new Sone. The Sone will + * be marked as known if {@code markAsKnown} is {@code true}, otherwise the + * Sone will keep its current “new” state. + * + * @param soneId + * The ID of the sone to check for + * @param markAsKnown + * {@code true} to mark the Sone as known in any case, + * {@code false} to not mark it as known + * @return {@code true} if the given Sone is new, false otherwise + */ + public boolean isNewSone(String soneId, boolean markAsKnown) { synchronized (newSones) { - boolean isNew = !knownSones.contains(sone.getId()) && newSones.remove(sone.getId()); - knownSones.add(sone.getId()); - if (isNew) { - coreListenerManager.fireMarkSoneKnown(sone); + boolean isNew = !knownSones.contains(soneId) && newSones.contains(soneId); + if (markAsKnown) { + Sone sone = getSone(soneId, false); + if (sone != null) { + markSoneKnown(sone); + } } return isNew; } @@ -1125,6 +1143,23 @@ public class Core implements IdentityListener, UpdateListener { } /** + * Marks the given Sone as known. If the Sone was {@link #isNewPost(String) + * new} before, a {@link CoreListener#markSoneKnown(Sone)} event is fired. + * + * @param sone + * The Sone to mark as known + */ + public void markSoneKnown(Sone sone) { + synchronized (newSones) { + if (newSones.remove(sone.getId())) { + knownPosts.add(sone.getId()); + coreListenerManager.fireMarkSoneKnown(sone); + saveConfiguration(); + } + } + } + + /** * Loads and updates the given Sone from the configuration. If any error is * encountered, loading is aborted and the given Sone is not changed. *