X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FPostAccessor.kt;h=843e6e39acdc71dd9afa9c546212aad0ab77d645;hp=db2686675a4772e3f5727c61b1193986f9527d11;hb=de6be950b15db8012395f43217af6565fadecbf4;hpb=3ab186664b53925d8f9ee7a50a8dd9da2d9da172 diff --git a/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt b/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt index db26866..843e6e3 100644 --- a/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt +++ b/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt @@ -18,6 +18,7 @@ package net.pterodactylus.sone.template import net.pterodactylus.sone.core.* import net.pterodactylus.sone.data.* +import net.pterodactylus.sone.utils.* import net.pterodactylus.util.template.* /** @@ -34,13 +35,20 @@ class PostAccessor(private val core: Core) : ReflectionAccessor() { override fun get(templateContext: TemplateContext?, `object`: Any?, member: String): Any? = (`object` as Post).let { post -> when (member) { - "replies" -> core.getReplies(post.id).filter { Reply.FUTURE_REPLY_FILTER.apply(it) } + "replies" -> core.getReplies(post) "likes" -> core.getLikes(post) - "liked" -> (templateContext?.get("currentSone") as? Sone)?.isLikedPostId(post.id) ?: false + "liked" -> templateContext.currentSone?.isLikedPostId(post.id) ?: false "new" -> !post.isKnown "bookmarked" -> core.isBookmarked(post) + "replySone" -> core.getReplies(post).lastOrNull { it.sone.isLocal }?.sone + ?: post.recipient.let { it.takeIf { it.isLocal } } + ?: post.sone.takeIf { it.isLocal } + ?: templateContext.currentSone else -> super.get(templateContext, `object`, member) } } } + +private fun Core.getReplies(post: Post) = getReplies(post.id).filter { Reply.FUTURE_REPLY_FILTER.apply(it) } +private val TemplateContext?.currentSone: Sone? get() = this?.get("currentSone") as? Sone