58cd0d8ac141abd104535eff52eda125aa967da7
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / pages / UnbookmarkPage.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.data.Post
4 import net.pterodactylus.sone.utils.also
5 import net.pterodactylus.sone.utils.isGET
6 import net.pterodactylus.sone.utils.isPOST
7 import net.pterodactylus.sone.utils.parameters
8 import net.pterodactylus.sone.web.WebInterface
9 import net.pterodactylus.sone.web.page.FreenetRequest
10 import net.pterodactylus.util.template.Template
11 import net.pterodactylus.util.template.TemplateContext
12 import javax.inject.Inject
13
14 /**
15  * Page that lets the user unbookmark a post.
16  */
17 class UnbookmarkPage @Inject constructor(template: Template, webInterface: WebInterface):
18                 SoneTemplatePage("unbookmark.html", webInterface, template, "Page.Unbookmark.Title") {
19
20         override fun handleRequest(freenetRequest: FreenetRequest, templateContext: TemplateContext) {
21                 when {
22                         freenetRequest.isGET && (freenetRequest.parameters["post"] == "allNotLoaded") -> {
23                                 webInterface.core.bookmarkedPosts
24                                                 .filterNot(Post::isLoaded)
25                                                 .forEach(webInterface.core::unbookmarkPost)
26                                 throw RedirectException("bookmarks.html")
27                         }
28                         freenetRequest.isPOST -> {
29                                 freenetRequest.parameters["post", 36]
30                                                 ?.let(webInterface.core::getPost)
31                                                 ?.also(webInterface.core::unbookmarkPost)
32                                 throw RedirectException(freenetRequest.parameters["returnPage", 256])
33                         }
34                 }
35         }
36
37 }