X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FEditProfileFieldAjaxPage.kt;fp=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FEditProfileFieldAjaxPage.kt;h=72ee0059f1b2527f820efc1d6307f0a29fd43881;hp=0000000000000000000000000000000000000000;hb=bad2f1fc43a86069c26c0b448a5d760d0a2ae737;hpb=d73b576b8c1f372206bd404c5ea65b94b8f513b2 diff --git a/src/main/kotlin/net/pterodactylus/sone/web/ajax/EditProfileFieldAjaxPage.kt b/src/main/kotlin/net/pterodactylus/sone/web/ajax/EditProfileFieldAjaxPage.kt new file mode 100644 index 0000000..72ee005 --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/sone/web/ajax/EditProfileFieldAjaxPage.kt @@ -0,0 +1,33 @@ +package net.pterodactylus.sone.web.ajax + +import net.pterodactylus.sone.utils.ifFalse +import net.pterodactylus.sone.utils.parameters +import net.pterodactylus.sone.web.WebInterface +import net.pterodactylus.sone.web.page.FreenetRequest + +/** + * AJAX page that lets the user rename a profile field. + */ +class EditProfileFieldAjaxPage(webInterface: WebInterface) : JsonPage("editProfileField.ajax", webInterface) { + + override fun createJsonObject(request: FreenetRequest) = + getCurrentSone(request.toadletContext).profile.let { profile -> + request.parameters["field"]!! + .let(profile::getFieldById) + ?.let { field -> + request.parameters["name"]!!.trim().let { newName -> + newName.isBlank().ifFalse { + try { + field.name = newName + createSuccessJsonObject().also { + getCurrentSone(request.toadletContext).profile = profile + } + } catch (_: IllegalArgumentException) { + createErrorJsonObject("duplicate-field-name") + } + } + } ?: createErrorJsonObject("invalid-parameter-name") + } ?: createErrorJsonObject("invalid-field-id") + } + +}