Replace edit profile field ajax page with Kotlin version
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / ajax / EditProfileFieldAjaxPage.kt
1 package net.pterodactylus.sone.web.ajax
2
3 import net.pterodactylus.sone.utils.ifFalse
4 import net.pterodactylus.sone.utils.parameters
5 import net.pterodactylus.sone.web.WebInterface
6 import net.pterodactylus.sone.web.page.FreenetRequest
7
8 /**
9  * AJAX page that lets the user rename a profile field.
10  */
11 class EditProfileFieldAjaxPage(webInterface: WebInterface) : JsonPage("editProfileField.ajax", webInterface) {
12
13         override fun createJsonObject(request: FreenetRequest) =
14                         getCurrentSone(request.toadletContext).profile.let { profile ->
15                                 request.parameters["field"]!!
16                                                 .let(profile::getFieldById)
17                                                 ?.let { field ->
18                                                         request.parameters["name"]!!.trim().let { newName ->
19                                                                 newName.isBlank().ifFalse {
20                                                                         try {
21                                                                                 field.name = newName
22                                                                                 createSuccessJsonObject().also {
23                                                                                         getCurrentSone(request.toadletContext).profile = profile
24                                                                                 }
25                                                                         } catch (_: IllegalArgumentException) {
26                                                                                 createErrorJsonObject("duplicate-field-name")
27                                                                         }
28                                                                 }
29                                                         } ?: createErrorJsonObject("invalid-parameter-name")
30                                                 } ?: createErrorJsonObject("invalid-field-id")
31                         }
32
33 }