X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FPostAccessor.kt;h=42239aa43bfea611995abe72e5d8338e3389a15e;hp=db2686675a4772e3f5727c61b1193986f9527d11;hb=HEAD;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..42239aa 100644 --- a/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt +++ b/src/main/kotlin/net/pterodactylus/sone/template/PostAccessor.kt @@ -1,5 +1,5 @@ /* - * Sone - PostAccessor.java - Copyright © 2010–2019 David Roden + * Sone - PostAccessor.kt - Copyright © 2010–2020 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -14,10 +14,12 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + 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 +36,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(noFutureReply) +private val TemplateContext?.currentSone: Sone? get() = this?.get("currentSone") as? Sone