X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterface.java;h=f9b6929b6a6650057586f6a3635738e8972e2e5a;hb=c8ec218c74a94810f5b416aa216b60382560a4d9;hp=c9547fbca28997c2943fb90cb894fce6f0138916;hpb=a372629239706054eb03a2138274a644ee76fc04;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/web/WebInterface.java b/src/main/java/net/pterodactylus/sone/web/WebInterface.java index c9547fb..f9b6929 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -100,6 +100,7 @@ import net.pterodactylus.util.cache.CacheItem; import net.pterodactylus.util.cache.DefaultCacheItem; import net.pterodactylus.util.cache.MemoryCache; import net.pterodactylus.util.cache.ValueRetriever; +import net.pterodactylus.util.collection.SetBuilder; import net.pterodactylus.util.filter.Filters; import net.pterodactylus.util.logging.Logging; import net.pterodactylus.util.notify.Notification; @@ -168,6 +169,12 @@ public class WebInterface implements CoreListener { /** The “new reply” notification. */ private final ListNotification newReplyNotification; + /** The invisible “local post” notification. */ + private final ListNotification localPostNotification; + + /** The invisible “local reply” notification. */ + private final ListNotification localReplyNotification; + /** The “you have been mentioned” notification. */ private final ListNotification mentionNotification; @@ -235,9 +242,11 @@ public class WebInterface implements CoreListener { Template newPostNotificationTemplate = TemplateParser.parse(createReader("/templates/notify/newPostNotification.html")); newPostNotification = new ListNotification("new-post-notification", "posts", newPostNotificationTemplate, false); + localPostNotification = new ListNotification("local-post-notification", "posts", newPostNotificationTemplate, false); Template newReplyNotificationTemplate = TemplateParser.parse(createReader("/templates/notify/newReplyNotification.html")); newReplyNotification = new ListNotification("new-reply-notification", "replies", newReplyNotificationTemplate, false); + localReplyNotification = new ListNotification("local-reply-notification", "replies", newReplyNotificationTemplate, false); Template mentionNotificationTemplate = TemplateParser.parse(createReader("/templates/notify/mentionNotification.html")); mentionNotification = new ListNotification("mention-notification", "posts", mentionNotificationTemplate, false); @@ -420,7 +429,7 @@ public class WebInterface implements CoreListener { * @return The new posts */ public Set getNewPosts() { - return new HashSet(newPostNotification.getElements()); + return new SetBuilder().addAll(newPostNotification.getElements()).addAll(localPostNotification.getElements()).get(); } /** @@ -430,7 +439,7 @@ public class WebInterface implements CoreListener { * @return The new replies */ public Set getNewReplies() { - return new HashSet(newReplyNotification.getElements()); + return new SetBuilder().addAll(newReplyNotification.getElements()).addAll(localReplyNotification.getElements()).get(); } /** @@ -731,10 +740,15 @@ public class WebInterface implements CoreListener { */ @Override public void newPostFound(Post post) { - newPostNotification.add(post); + boolean isLocal = getCore().isLocalSone(post.getSone()); + if (isLocal) { + localPostNotification.add(post); + } else { + newPostNotification.add(post); + } if (!hasFirstStartNotification()) { - notificationManager.addNotification(newPostNotification); - if (!getMentionedSones(post.getText()).isEmpty()) { + notificationManager.addNotification(isLocal ? localPostNotification : newPostNotification); + if (!getMentionedSones(post.getText()).isEmpty() && !isLocal) { mentionNotification.add(post); notificationManager.addNotification(mentionNotification); } @@ -751,10 +765,15 @@ public class WebInterface implements CoreListener { if (reply.getPost().getSone() == null) { return; } - newReplyNotification.add(reply); + boolean isLocal = getCore().isLocalSone(reply.getSone()); + if (isLocal) { + localReplyNotification.add(reply); + } else { + newReplyNotification.add(reply); + } if (!hasFirstStartNotification()) { - notificationManager.addNotification(newReplyNotification); - if (!getMentionedSones(reply.getText()).isEmpty()) { + notificationManager.addNotification(isLocal ? localReplyNotification : newReplyNotification); + if (!getMentionedSones(reply.getText()).isEmpty() && !isLocal) { mentionNotification.add(reply.getPost()); notificationManager.addNotification(mentionNotification); } @@ -777,6 +796,7 @@ public class WebInterface implements CoreListener { @Override public void markPostKnown(Post post) { newPostNotification.remove(post); + localPostNotification.remove(post); mentionNotification.remove(post); } @@ -786,6 +806,7 @@ public class WebInterface implements CoreListener { @Override public void markReplyKnown(Reply reply) { newReplyNotification.remove(reply); + localReplyNotification.remove(reply); mentionNotification.remove(reply.getPost()); } @@ -803,6 +824,7 @@ public class WebInterface implements CoreListener { @Override public void postRemoved(Post post) { newPostNotification.remove(post); + localPostNotification.remove(post); } /** @@ -811,6 +833,7 @@ public class WebInterface implements CoreListener { @Override public void replyRemoved(Reply reply) { newReplyNotification.remove(reply); + localReplyNotification.remove(reply); } /**