Use Sequence instead of Collection
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / pages / KnownSonesPage.kt
index a3969b2..92a856a 100644 (file)
@@ -1,22 +1,23 @@
 package net.pterodactylus.sone.web.pages
 
 import net.pterodactylus.sone.data.Sone
-import net.pterodactylus.sone.utils.Pagination
+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
 
 /**
  * This page shows all known Sones.
  */
-class KnownSonesPage(template: Template, webInterface: WebInterface):
+class KnownSonesPage @Inject constructor(template: Template, webInterface: WebInterface):
                SoneTemplatePage("knownSones.html", webInterface, template, "Page.KnownSones.Title") {
 
        override fun handleRequest(freenetRequest: FreenetRequest, templateContext: TemplateContext) {
                getCurrentSone(freenetRequest.toadletContext).let { currentSone ->
-                       Pagination(webInterface.core.sones
+                       webInterface.core.sones.asSequence()
                                        .filterNot { freenetRequest.parameters["filter"] == "followed" && currentSone != null && !currentSone.hasFriend(it.id) }
                                        .filterNot { freenetRequest.parameters["filter"] == "not-followed" && currentSone != null && currentSone.hasFriend(it.id) }
                                        .filterNot { freenetRequest.parameters["filter"] == "new" && it.isKnown }
@@ -35,7 +36,8 @@ class KnownSonesPage(template: Template, webInterface: WebInterface):
                                                                        else -> comparator
                                                                }
                                                        }
-                                       ), 25).apply { page = freenetRequest.parameters["page"]?.toIntOrNull() ?: 0 }
+                                       ).paginate(25)
+                                       .turnTo(freenetRequest.parameters["page"]?.toIntOrNull() ?: 0)
                                        .let { pagination ->
                                                templateContext["pagination"] = pagination
                                                templateContext["knownSones"] = pagination.items