diff --git a/backend/build.gradle.kts b/backend/build.gradle.kts index 1ac11cb..13a7a1b 100644 --- a/backend/build.gradle.kts +++ b/backend/build.gradle.kts @@ -16,6 +16,7 @@ dependencies{ implementation(project(":core")) implementation(project(":documents")) implementation(project(":legacy")) + implementation(project(":markdown")) implementation(project(":messages")) implementation(project(":translations")) implementation(project(":user")) diff --git a/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java b/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java index a463dea..fa23c71 100644 --- a/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java +++ b/backend/src/main/java/de/srsoftware/umbrella/backend/Application.java @@ -13,6 +13,7 @@ import de.srsoftware.umbrella.core.Util; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; import de.srsoftware.umbrella.documents.DocumentApi; import de.srsoftware.umbrella.legacy.LegacyApi; +import de.srsoftware.umbrella.markdown.MarkdownApi; import de.srsoftware.umbrella.message.MessageApi; import de.srsoftware.umbrella.message.MessageSystem; import de.srsoftware.umbrella.translations.Translations; @@ -57,14 +58,16 @@ public class Application { var companyModule = new CompanyModule(config, userModule); var documentApi = new DocumentApi(companyModule, config); var legacyApi = new LegacyApi(userModule.userDb(),config); + var markdownApi = new MarkdownApi(userModule); var messageApi = new MessageApi(messageSystem); var webHandler = new WebHandler(); documentApi .bindPath("/api/document") .on(server); - legacyApi .bindPath("/legacy") .on(server); + markdownApi .bindPath("/api/markdown") .on(server); messageApi .bindPath("/api/messages") .on(server); translationModule.bindPath("/api/translations").on(server); userModule .bindPath("/api/user") .on(server); + legacyApi .bindPath("/legacy") .on(server); webHandler .bindPath("/") .on(server); server.setExecutor(Executors.newFixedThreadPool(threads)); diff --git a/core/src/main/java/de/srsoftware/umbrella/core/BaseHandler.java b/core/src/main/java/de/srsoftware/umbrella/core/BaseHandler.java index 851749a..6264d83 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/BaseHandler.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/BaseHandler.java @@ -11,6 +11,7 @@ import com.sun.net.httpserver.HttpExchange; import de.srsoftware.tools.Path; import de.srsoftware.tools.PathHandler; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.List; diff --git a/frontend/src/Components/MarkdownEditor.svelte b/frontend/src/Components/MarkdownEditor.svelte index 3f86d42..4b2fa27 100644 --- a/frontend/src/Components/MarkdownEditor.svelte +++ b/frontend/src/Components/MarkdownEditor.svelte @@ -2,8 +2,9 @@ let { editable = false, value = $bindable(null) } = $props(); let editing = $state(false); - let editValue = {source:value.source,rendered:value.rendered}; + let editValue = $state({source:value.source,rendered:value.rendered}); + let timer = null; function applyEdit(){ value.source = editValue.source; value.rendered = editValue.rendered; @@ -19,10 +20,22 @@ editing = editable; } + async function render(){ + const url = `${location.protocol}//${location.host.replace('5173','8080')}/api/markdown/render`; + const resp = await fetch(url,{ + credentials: 'include', + method: 'POST', + body: editValue.source + }); + editValue.rendered = await resp.text(); + } + function typed(ev){ if (ev.keyCode == 13 && ev.ctrlKey) applyEdit(); if (ev.keyCode == 27) resetEdit(); + if (timer) clearTimeout(timer); + timer = setTimeout(render,1000); // TODO: start timer, send text to renderer, update editValue.rendered } @@ -37,4 +50,4 @@ {#if editable && editing} {/if} -