🔥 Remove templates from FreenetTemplatePages
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / pages / NewPage.kt
index d1841d4..e00189a 100644 (file)
@@ -1,32 +1,35 @@
 package net.pterodactylus.sone.web.pages
 
-import net.pterodactylus.sone.utils.Pagination
+import net.pterodactylus.sone.main.*
 import net.pterodactylus.sone.utils.mapPresent
+import net.pterodactylus.sone.utils.paginate
 import net.pterodactylus.sone.utils.parameters
 import net.pterodactylus.sone.web.WebInterface
-import net.pterodactylus.sone.web.page.FreenetRequest
-import net.pterodactylus.util.template.Template
+import net.pterodactylus.sone.web.page.*
 import net.pterodactylus.util.template.TemplateContext
+import javax.inject.Inject
 
 /**
  * Page that displays all new posts and replies. The posts are filtered using
  * [PostVisibilityFilter.isPostVisible(Sone, Post)] and sorted by time.
  */
-class NewPage(template: Template, webInterface: WebInterface):
-               SoneTemplatePage("new.html", template, "Page.New.Title", webInterface, false) {
+@MenuName("New")
+@TemplatePath("/templates/new.html")
+class NewPage @Inject constructor(webInterface: WebInterface, loaders: Loaders, templateRenderer: TemplateRenderer):
+               SoneTemplatePage("new.html", webInterface, loaders, templateRenderer, pageTitleKey = "Page.New.Title") {
 
-       override fun handleRequest(request: FreenetRequest, templateContext: TemplateContext) =
-                       getCurrentSone(request.toadletContext).let { currentSone ->
-                               (webInterface.getNewPosts(currentSone) + webInterface.getNewReplies(currentSone).mapPresent { it.post })
+       override fun handleRequest(soneRequest: SoneRequest, templateContext: TemplateContext) =
+                       getCurrentSone(soneRequest.toadletContext).let { currentSone ->
+                               (soneRequest.webInterface.getNewPosts(currentSone) + soneRequest.webInterface.getNewReplies(currentSone).mapPresent { it.post })
                                                .distinct()
                                                .sortedByDescending { it.time }
                                                .let { posts ->
-                                                       Pagination(posts, webInterface.core.preferences.postsPerPage).apply {
-                                                               page = request.parameters["page"]?.toIntOrNull() ?: 0
-                                                       }.let { pagination ->
-                                                               templateContext["pagination"] = pagination
-                                                               templateContext["posts"] = pagination.items
-                                                       }
+                                                       posts.paginate(soneRequest.core.preferences.postsPerPage)
+                                                                       .turnTo(soneRequest.parameters["page"]?.toIntOrNull() ?: 0)
+                                                                       .let { pagination ->
+                                                                               templateContext["pagination"] = pagination
+                                                                               templateContext["posts"] = pagination.items
+                                                                       }
                                                }
                        }