X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FParserFilter.java;fp=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FParserFilter.java;h=c12b36dbe007ed80741873f7e8d2e7f93d5e0007;hb=9bc9aa0ee4737d2f2ddcdaf8e404e1db31a34af3;hp=7cf8c706f36448f528b1eca283bd5c688cdbed08;hpb=05005ae056950675002f5bb4319a42cd725b6800;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java index 7cf8c70..c12b36d 100644 --- a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java +++ b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java @@ -29,8 +29,11 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import javax.annotation.Nonnull; + import net.pterodactylus.sone.core.Core; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.text.FreemailPart; import net.pterodactylus.sone.text.FreenetLinkPart; import net.pterodactylus.sone.text.LinkPart; import net.pterodactylus.sone.text.Part; @@ -45,6 +48,9 @@ import net.pterodactylus.util.template.TemplateContext; import net.pterodactylus.util.template.TemplateContextFactory; import net.pterodactylus.util.template.TemplateParser; +import com.google.common.base.Function; +import com.google.common.base.Optional; + /** * Filter that filters a given text through a {@link SoneTextParser}. * @@ -170,6 +176,8 @@ public class ParserFilter implements Filter { render(writer, (SonePart) part); } else if (part instanceof PostPart) { render(writer, (PostPart) part); + } else if (part instanceof FreemailPart) { + render(writer, (FreemailPart) part); } else if (part instanceof Iterable) { render(writer, (Iterable) part); } @@ -263,6 +271,22 @@ public class ParserFilter implements Filter { renderLink(writer, "viewPost.html?post=" + postPart.getPost().getId(), excerpt.toString(), SoneAccessor.getNiceName(postPart.getPost().getSone()), "in-sone"); } + private void render(@Nonnull Writer writer, @Nonnull FreemailPart freemailPart) { + Optional sone = core.getSone(freemailPart.getIdentityId()); + String soneName = sone.transform(new Function() { + @Nonnull + @Override + public String apply(Sone input) { + return SoneAccessor.getNiceName(input); + } + }).or(freemailPart.getIdentityId()); + renderLink(writer, + "/Freemail/NewMessage?to=" + freemailPart.getIdentityId(), + String.format("%s@%s.freemail", freemailPart.getEmailLocalPart(), soneName), + String.format("%s", soneName), + "in-sone"); + } + /** * Renders the given link. *