X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fnotify%2FListNotificationFilters.java;h=56a4939a7b51055d894c43e186bc094875aede46;hp=b0198b8f14aa350a00360af142d6a51502ce6955;hb=11fe0018704e60612cd47cb1de8639a52eaac435;hpb=4d07ddbfd96d610c2f862c4688aed75d3f4ff86f
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:
*
* - 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.
@@ -155,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;
@@ -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;