X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fnotify%2FListNotificationFilters.java;h=56a4939a7b51055d894c43e186bc094875aede46;hb=11fe0018704e60612cd47cb1de8639a52eaac435;hp=37cff6fafc65534cd59b93a2d3e23957ab6d87ec;hpb=b8ca643133eb0e9564c67a232f07363410e4ea29;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java b/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java index 37cff6f..56a4939 100644 --- a/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java +++ b/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java @@ -102,6 +102,7 @@ public class ListNotificationFilters { } ListNotification filteredNotification = new ListNotification(newPostNotification); filteredNotification.setElements(newPosts); + filteredNotification.setLastUpdateTime(newPostNotification.getLastUpdatedTime()); return filteredNotification; } @@ -137,6 +138,7 @@ public class ListNotificationFilters { } ListNotification filteredNotification = new ListNotification(newReplyNotification); filteredNotification.setElements(newReplies); + filteredNotification.setLastUpdateTime(newReplyNotification.getLastUpdatedTime()); return filteredNotification; } @@ -145,6 +147,13 @@ public class ListNotificationFilters { * considered visible if one of the following statements is true: *
    *
  • The post does not have a Sone.
  • + *
  • The post’s {@link Post#getTime() time} is in the future.
  • + *
+ *

+ * If {@code post} is not {@code null} more checks are performed, and the + * post will be invisible if: + *

+ *
    *
  • The Sone of the post is not the given Sone, the given Sone does not * follow the post’s Sone, and the given Sone is not the recipient of the * post.
  • @@ -153,36 +162,38 @@ public class ListNotificationFilters { * Sone. *
  • The given Sone has not explicitely assigned negative trust to the * post’s Sone but the implicit trust is negative.
  • - *
  • The post’s {@link Post#getTime() time} is in the future.
  • *
* If none of these statements is true the post is considered visible. * * @param sone - * The Sone that checks for a post’s visibility + * The Sone that checks for a post’s visibility (may be + * {@code null} to skip Sone-specific checks, such as trust) * @param post * The post to check for visibility * @return {@code true} if the post is considered visible, {@code false} * otherwise */ public static boolean isPostVisible(Sone sone, Post post) { - Validation.begin().isNotNull("Sone", sone).isNotNull("Post", post).check().isNotNull("Sone’s Identity", sone.getIdentity()).check().isInstanceOf("Sone’s Identity", sone.getIdentity(), OwnIdentity.class).check(); + Validation.begin().isNotNull("Post", post).check(); Sone postSone = post.getSone(); if (postSone == null) { return false; } - Trust trust = postSone.getIdentity().getTrust((OwnIdentity) sone.getIdentity()); - if (trust != null) { - if ((trust.getExplicit() != null) && (trust.getExplicit() < 0)) { + if (sone != null) { + Trust trust = postSone.getIdentity().getTrust((OwnIdentity) sone.getIdentity()); + if (trust != null) { + if ((trust.getExplicit() != null) && (trust.getExplicit() < 0)) { + return false; + } + if ((trust.getExplicit() == null) && (trust.getImplicit() != null) && (trust.getImplicit() < 0)) { + return false; + } + } else { return false; } - if ((trust.getExplicit() == null) && (trust.getImplicit() != null) && (trust.getImplicit() < 0)) { + if ((!postSone.equals(sone)) && !sone.hasFriend(postSone.getId()) && !sone.equals(post.getRecipient())) { return false; } - } else { - return false; - } - if ((!postSone.equals(sone)) && !sone.hasFriend(postSone.getId()) && !sone.equals(post.getRecipient())) { - return false; } if (post.getTime() > System.currentTimeMillis()) { return false; @@ -210,14 +221,15 @@ public class ListNotificationFilters { * If none of these statements is true the reply is considered visible. * * @param sone - * The Sone that checks for a post’s visibility + * The Sone that checks for a post’s visibility (may be + * {@code null} to skip Sone-specific checks, such as trust) * @param reply * The reply to check for visibility * @return {@code true} if the reply is considered visible, {@code false} * otherwise */ public static boolean isReplyVisible(Sone sone, Reply reply) { - Validation.begin().isNotNull("Sone", sone).isNotNull("Reply", reply).check().isNotNull("Sone’s Identity", sone.getIdentity()).check().isInstanceOf("Sone’s Identity", sone.getIdentity(), OwnIdentity.class).check(); + Validation.begin().isNotNull("Reply", reply).check(); Post post = reply.getPost(); if (post == null) { return false;