import net.pterodactylus.sone.template.SoneAccessor
import net.pterodactylus.sone.text.TimeTextConverter
import net.pterodactylus.sone.utils.jsonObject
+import net.pterodactylus.sone.utils.mapPresent
import net.pterodactylus.sone.utils.toArray
import net.pterodactylus.sone.web.WebInterface
import net.pterodactylus.sone.web.page.FreenetRequest
}
override fun createJsonObject(request: FreenetRequest) =
- (webInterface.getCurrentSoneWithoutCreatingSession(request.toadletContext) as Sone?).let { currentSone ->
+ getCurrentSone(request.toadletContext, false).let { currentSone ->
createSuccessJsonObject().apply {
this["loggedIn"] = currentSone != null
this["options"] = currentSone?.options?.toJsonOptions() ?: jsonObject {}
this["notificationHash"] = webInterface.getNotifications(currentSone).sortedBy { it.createdTime }.hashCode()
- this["sones"] = request.httpRequest.getParam("soneIds").split(',').map { webInterface.core.getSone(it).orNull() }.plus(currentSone).filterNotNull().toJsonSones()
+ this["sones"] = request.httpRequest.getParam("soneIds").split(',').mapNotNull(core::getSone).plus(currentSone).filterNotNull().toJsonSones()
this["newPosts"] = webInterface.getNewPosts(currentSone).toJsonPosts()
this["newReplies"] = webInterface.getNewReplies(currentSone).toJsonReplies()
this["linkedElements"] = request.httpRequest.getParam("elements", "[]").asJson().map(JsonNode::asText).map(elementLoader::loadElement).toJsonElements()
private fun String.asJson() = ObjectMapper().readTree(this).asIterable()
- override fun needsFormPassword() = false
- override fun requiresLogin() = false
+ override val needsFormPassword = false
+ override val requiresLogin = false
private fun SoneOptions.toJsonOptions() = jsonObject {
put("ShowNotification/NewSones", isShowNewSoneNotifications)
put("name", SoneAccessor.getNiceName(sone))
put("local", sone.isLocal)
put("status", sone.status.name)
- put("modified", webInterface.core.isModifiedSone(sone))
- put("locked", webInterface.core.isLocked(sone))
+ put("modified", core.isModifiedSone(sone))
+ put("locked", core.isLocked(sone))
put("lastUpdatedUnknown", sone.time == 0L)
synchronized(dateFormatter) {
put("lastUpdated", dateFormatter.format(sone.time))