X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fnotify%2FReplyVisibilityFilter.java;h=cd282b710f52e02ebcf061f3d52f5f66832ff610;hb=fa971584d8bb5c0e49851187a76e129f29684c0e;hp=fd13779bab65bf69565e4a9c112e65fb9665e8d2;hpb=244444029d47c3eb11d1dde212757e8332ee5865;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/notify/ReplyVisibilityFilter.java b/src/main/java/net/pterodactylus/sone/notify/ReplyVisibilityFilter.java index fd13779..cd282b7 100644 --- a/src/main/java/net/pterodactylus/sone/notify/ReplyVisibilityFilter.java +++ b/src/main/java/net/pterodactylus/sone/notify/ReplyVisibilityFilter.java @@ -1,72 +1,19 @@ package net.pterodactylus.sone.notify; -import static com.google.common.base.Preconditions.checkNotNull; - +import java.util.function.Predicate; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import javax.inject.Inject; -import javax.inject.Singleton; -import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.PostReply; import net.pterodactylus.sone.data.Sone; -import com.google.common.base.Optional; -import com.google.common.base.Predicate; - -/** - * Filter that checks a {@link PostReply} for visibility. - * - * @author David ‘Bombe’ Roden - */ -@Singleton -public class ReplyVisibilityFilter { - - private final PostVisibilityFilter postVisibilityFilter; +import com.google.inject.ImplementedBy; - @Inject - public ReplyVisibilityFilter(@Nonnull PostVisibilityFilter postVisibilityFilter) { - this.postVisibilityFilter = postVisibilityFilter; - } +@ImplementedBy(DefaultReplyVisibilityFilter.class) +public interface ReplyVisibilityFilter { - /** - * Checks whether a reply is visible to the given Sone. A reply is not - * considered visible if one of the following statements is true: - * - * If none of these statements is true the reply is considered visible. - * - * @param sone - * 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 - */ - boolean isReplyVisible(@Nullable Sone sone, @Nonnull PostReply reply) { - checkNotNull(reply, "reply must not be null"); - Optional post = reply.getPost(); - if (!post.isPresent()) { - return false; - } - if (!postVisibilityFilter.isPostVisible(sone, post.get())) { - return false; - } - return reply.getTime() <= System.currentTimeMillis(); - } + boolean isReplyVisible(@Nullable Sone sone, @Nonnull PostReply reply); - @Nonnull - public Predicate isVisible(@Nullable final Sone currentSone) { - return new Predicate() { - @Override - public boolean apply(@Nullable PostReply postReply) { - return (postReply != null) && isReplyVisible(currentSone, postReply); - } - }; - } + Predicate isVisible(@Nullable final Sone currentSone); }