X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FWebInterface.java;h=3577b378ca99f1f408e3c67671d8ce48e4cf9438;hb=32504b93a91bb68e5ae47c660a61067f4ee1448a;hp=60cda15ccb5f53b5cda98bae242ba6ee49dbacde;hpb=63ef27de3c0ebad90acf11e6ed5688d9f83b2d4e;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 60cda15..3577b37 100644 --- a/src/main/java/net/pterodactylus/sone/web/WebInterface.java +++ b/src/main/java/net/pterodactylus/sone/web/WebInterface.java @@ -796,6 +796,23 @@ public class WebInterface { } } + private boolean localSoneMentionedInNewPostOrReply(Post post) { + if (!post.getSone().isLocal()) { + if (!getMentionedSones(post.getText()).isEmpty() && !post.isKnown()) { + return true; + } + } + for (PostReply postReply : getCore().getReplies(post.getId())) { + if (postReply.getSone().isLocal()) { + continue; + } + if (!getMentionedSones(postReply.getText()).isEmpty() && !postReply.isKnown()) { + return true; + } + } + return false; + } + // // EVENT HANDLERS // @@ -857,8 +874,8 @@ public class WebInterface { } if (!hasFirstStartNotification()) { notificationManager.addNotification(isLocal ? localReplyNotification : newReplyNotification); - if (!getMentionedSones(reply.getText()).isEmpty() && !isLocal && (reply.getPost().getSone() != null) && (reply.getTime() <= System.currentTimeMillis())) { - mentionNotification.add(reply.getPost()); + if (reply.getPost().isPresent() && localSoneMentionedInNewPostOrReply(reply.getPost().get())) { + mentionNotification.add(reply.getPost().get()); notificationManager.addNotification(mentionNotification); } } else { @@ -887,7 +904,9 @@ public class WebInterface { public void markPostKnown(MarkPostKnownEvent markPostKnownEvent) { newPostNotification.remove(markPostKnownEvent.post()); localPostNotification.remove(markPostKnownEvent.post()); - mentionNotification.remove(markPostKnownEvent.post()); + if (!localSoneMentionedInNewPostOrReply(markPostKnownEvent.post())) { + mentionNotification.remove(markPostKnownEvent.post()); + } } /** @@ -898,9 +917,12 @@ public class WebInterface { */ @Subscribe public void markReplyKnown(MarkPostReplyKnownEvent markPostReplyKnownEvent) { - newReplyNotification.remove(markPostReplyKnownEvent.postReply()); - localReplyNotification.remove(markPostReplyKnownEvent.postReply()); - mentionNotification.remove(markPostReplyKnownEvent.postReply().getPost()); + PostReply postReply = markPostReplyKnownEvent.postReply(); + newReplyNotification.remove(postReply); + localReplyNotification.remove(postReply); + if (postReply.getPost().isPresent() && !localSoneMentionedInNewPostOrReply(postReply.getPost().get())) { + mentionNotification.remove(postReply.getPost().get()); + } } /** @@ -924,7 +946,9 @@ public class WebInterface { public void postRemoved(PostRemovedEvent postRemovedEvent) { newPostNotification.remove(postRemovedEvent.post()); localPostNotification.remove(postRemovedEvent.post()); - mentionNotification.remove(postRemovedEvent.post()); + if (!localSoneMentionedInNewPostOrReply(postRemovedEvent.post())) { + mentionNotification.remove(postRemovedEvent.post()); + } } /** @@ -938,14 +962,8 @@ public class WebInterface { PostReply reply = postReplyRemovedEvent.postReply(); newReplyNotification.remove(reply); localReplyNotification.remove(reply); - if (!getMentionedSones(reply.getText()).isEmpty()) { - boolean isMentioned = false; - for (PostReply existingReply : getCore().getReplies(reply.getPost())) { - isMentioned |= !reply.isKnown() && !getMentionedSones(existingReply.getText()).isEmpty(); - } - if (!isMentioned) { - mentionNotification.remove(reply.getPost()); - } + if (reply.getPost().isPresent() && !localSoneMentionedInNewPostOrReply(reply.getPost().get())) { + mentionNotification.remove(reply.getPost().get()); } } @@ -964,7 +982,6 @@ public class WebInterface { @SuppressWarnings("synthetic-access") public void run() { lockedSonesNotification.add(sone); - lockedSonesTickerObjects.remove(sone); notificationManager.addNotification(lockedSonesNotification); } }, 5, TimeUnit.MINUTES);