X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FPostAccessor.kt;fp=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FPostAccessor.kt;h=5222b945ab5ba51d44dc19ee8fcc4310fd501f16;hp=db2686675a4772e3f5727c61b1193986f9527d11;hb=d9cffbf70e8504180328964511303c1d70207b84;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..5222b94 100644 --- a/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt +++ b/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt @@ -34,13 +34,21 @@ 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.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