Import feature
This commit is contained in:
@@ -14,6 +14,7 @@ dependencies {
|
||||
implementation(project(":css"))
|
||||
|
||||
implementation(libs.http4k.core)
|
||||
implementation(libs.http4k.multipart)
|
||||
implementation(libs.bundles.jetty)
|
||||
implementation(libs.kotlinx.serialization.json)
|
||||
|
||||
|
||||
@@ -2,21 +2,19 @@ package be.simplenotes.app.controllers
|
||||
|
||||
import be.simplenotes.app.extensions.html
|
||||
import be.simplenotes.app.extensions.redirect
|
||||
import be.simplenotes.domain.DeleteError
|
||||
import be.simplenotes.domain.DeleteForm
|
||||
import be.simplenotes.domain.ExportService
|
||||
import be.simplenotes.domain.UserService
|
||||
import be.simplenotes.domain.*
|
||||
import be.simplenotes.types.LoggedInUser
|
||||
import be.simplenotes.views.SettingView
|
||||
import jakarta.inject.Singleton
|
||||
import org.http4k.core.*
|
||||
import org.http4k.core.body.form
|
||||
import org.http4k.core.cookie.invalidateCookie
|
||||
import jakarta.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class SettingsController(
|
||||
private val userService: UserService,
|
||||
private val exportService: ExportService,
|
||||
private val importService: ImportService,
|
||||
private val settingView: SettingView,
|
||||
) {
|
||||
fun settings(request: Request, loggedInUser: LoggedInUser): Response {
|
||||
@@ -36,6 +34,7 @@ class SettingsController(
|
||||
error = "Wrong password",
|
||||
),
|
||||
)
|
||||
|
||||
is DeleteError.InvalidForm -> Response(Status.OK).html(
|
||||
settingView.settings(
|
||||
loggedInUser,
|
||||
@@ -79,4 +78,12 @@ class SettingsController(
|
||||
|
||||
private fun Request.deleteForm(loggedInUser: LoggedInUser) =
|
||||
DeleteForm(loggedInUser.username, form("password"), form("checked") != null)
|
||||
|
||||
fun import(request: Request, loggedInUser: LoggedInUser): Response {
|
||||
val form = MultipartFormBody.from(request)
|
||||
val file = form.file("file") ?: return Response(Status.BAD_REQUEST)
|
||||
val json = file.content.bufferedReader().readText()
|
||||
importService.importJson(loggedInUser, json)
|
||||
return Response.redirect("/notes")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ class SettingsRoutes(
|
||||
"/settings" bind GET to settingsController::settings,
|
||||
"/settings" bind POST to settingsController::settings,
|
||||
"/export" bind POST to settingsController::export,
|
||||
"/import" bind POST to settingsController::import,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -17,6 +17,6 @@ internal class LocalDateTimeSerializer : KSerializer<LocalDateTime> {
|
||||
}
|
||||
|
||||
override fun deserialize(decoder: Decoder): LocalDateTime {
|
||||
TODO("Not implemented, isn't needed")
|
||||
return LocalDateTime.parse(decoder.decodeString())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user