Use Sequence instead of Collection
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / pages / NewPage.kt
index 55df67a..2f9f1bb 100644 (file)
@@ -1,19 +1,20 @@
 package net.pterodactylus.sone.web.pages
 
-import net.pterodactylus.sone.utils.Pagination
 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.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) {
+class NewPage @Inject constructor(  template: Template, webInterface: WebInterface):
+               SoneTemplatePage("new.html", webInterface, template, "Page.New.Title") {
 
        override fun handleRequest(freenetRequest: FreenetRequest, templateContext: TemplateContext) =
                        getCurrentSone(freenetRequest.toadletContext).let { currentSone ->
@@ -21,12 +22,12 @@ class NewPage(template: Template, webInterface: WebInterface):
                                                .distinct()
                                                .sortedByDescending { it.time }
                                                .let { posts ->
-                                                       Pagination(posts, webInterface.core.preferences.postsPerPage).apply {
-                                                               page = freenetRequest.parameters["page"]?.toIntOrNull() ?: 0
-                                                       }.let { pagination ->
-                                                               templateContext["pagination"] = pagination
-                                                               templateContext["posts"] = pagination.items
-                                                       }
+                                                       posts.paginate(webInterface.core.preferences.postsPerPage)
+                                                                       .turnTo(freenetRequest.parameters["page"]?.toIntOrNull() ?: 0)
+                                                                       .let { pagination ->
+                                                                               templateContext["pagination"] = pagination
+                                                                               templateContext["posts"] = pagination.items
+                                                                       }
                                                }
                        }