From 11fe0018704e60612cd47cb1de8639a52eaac435 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Fri, 1 Jul 2011 10:33:35 +0200 Subject: [PATCH] Allow to skip Sone-specific checks in notification filters. --- .../sone/notify/ListNotificationFilters.java | 38 ++++++++++++++-------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java b/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java index b0198b8..56a4939 100644 --- a/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java +++ b/src/main/java/net/pterodactylus/sone/notify/ListNotificationFilters.java @@ -147,6 +147,13 @@ public class ListNotificationFilters { * considered visible if one of the following statements is true: * + *

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

+ * * 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; @@ -212,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; -- 2.7.4