X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FGetTimesAjaxPage.kt;h=233cf75b7b6ca1c2b92317a7ebe7a91932f19d18;hp=358003a0c80a3362b35606194e5136d6f6f3f55a;hb=fd852f7aee78ea04fb49920e698500c71321c6d4;hpb=69af5a8e6bc69347e3979fd2f351ead5fcfb98fb diff --git a/src/main/kotlin/net/pterodactylus/sone/web/ajax/GetTimesAjaxPage.kt b/src/main/kotlin/net/pterodactylus/sone/web/ajax/GetTimesAjaxPage.kt index 358003a..233cf75 100644 --- a/src/main/kotlin/net/pterodactylus/sone/web/ajax/GetTimesAjaxPage.kt +++ b/src/main/kotlin/net/pterodactylus/sone/web/ajax/GetTimesAjaxPage.kt @@ -3,28 +3,32 @@ package net.pterodactylus.sone.web.ajax import net.pterodactylus.sone.freenet.L10nFilter import net.pterodactylus.sone.text.TimeTextConverter import net.pterodactylus.sone.utils.jsonObject -import net.pterodactylus.sone.utils.let import net.pterodactylus.sone.utils.parameters import net.pterodactylus.sone.web.WebInterface import net.pterodactylus.sone.web.page.FreenetRequest import java.text.SimpleDateFormat +import java.util.TimeZone +import javax.inject.Inject /** * Ajax page that returns a formatted, relative timestamp for replies or posts. */ -class GetTimesAjaxPage(webInterface: WebInterface, +class GetTimesAjaxPage @Inject constructor(webInterface: WebInterface, private val timeTextConverter: TimeTextConverter, - private val l10nFilter: L10nFilter) : JsonPage("getTimes.ajax", webInterface) { + private val l10nFilter: L10nFilter, + timeZone: TimeZone) : JsonPage("getTimes.ajax", webInterface) { - private val dateTimeFormatter = SimpleDateFormat("MMM d, yyyy, HH:mm:ss") + private val dateTimeFormatter = SimpleDateFormat("MMM d, yyyy, HH:mm:ss").apply { + this.timeZone = timeZone + } - override fun needsFormPassword() = false - override fun requiresLogin() = false + override val needsFormPassword = false + override val requiresLogin = false override fun createJsonObject(request: FreenetRequest) = createSuccessJsonObject().apply { - put("postTimes", request.parameters["posts"]!!.idsToJson { webInterface.core.getPost(it)?.let { it.id to it.time } }) - put("replyTimes", request.parameters["replies"]!!.idsToJson { webInterface.core.getPostReply(it)?.let { it.id to it.time } }) + put("postTimes", request.parameters["posts"]!!.idsToJson { core.getPost(it)?.let { it.id to it.time } }) + put("replyTimes", request.parameters["replies"]!!.idsToJson { core.getPostReply(it)?.let { it.id to it.time } }) } private fun String.idsToJson(transform: (String) -> Pair?) = @@ -36,8 +40,10 @@ class GetTimesAjaxPage(webInterface: WebInterface, id to jsonObject( "timeText" to l10nFilter.format(null, timeText.l10nText, emptyMap()), "refreshTime" to timeText.refreshTime / 1000, - "tooltip" to dateTimeFormatter.format(time)) - }.forEach { this@jsonObject.put(it.first, it.second) } + "tooltip" to synchronized(dateTimeFormatter) { + dateTimeFormatter.format(time) + }) + }.forEach { this@jsonObject.set(it.first, it.second) } } }