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;
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}.
*
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>) part);
}
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> sone = core.getSone(freemailPart.getIdentityId());
+ String soneName = sone.transform(new Function<Sone, String>() {
+ @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.
*