48 lines
1.2 KiB
Svelte
48 lines
1.2 KiB
Svelte
<script>
|
|
import { onMount } from 'svelte';
|
|
import { api } from '../../urls.svelte';
|
|
import { t } from '../../translations.svelte';
|
|
|
|
import Editor from '../../Components/MarkdownEditor.svelte';
|
|
|
|
let error = $state(null);
|
|
let { id } = $props();
|
|
let page = $state(null);
|
|
|
|
async function loadPage(){
|
|
const url = api(`wiki/page/${id}`);
|
|
const res = await fetch(url,{credentials:'include'});
|
|
if (res.ok){
|
|
page = await res.json();
|
|
error = null;
|
|
} else {
|
|
error = await res.text();
|
|
}
|
|
}
|
|
|
|
async function patch(data){
|
|
const url = api(`wiki/page/${id}`);
|
|
const res = await fetch(url,{
|
|
credentials:'include',
|
|
method:'PATCH',
|
|
body:JSON.stringify(data)
|
|
});
|
|
if (res.ok){
|
|
return true;
|
|
error = null;
|
|
} else {
|
|
error = await res.text();
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
onMount(loadPage);
|
|
</script>
|
|
<h2>{id}</h2>
|
|
{#if error}
|
|
<span class="error">{error}</span>
|
|
{/if}
|
|
{#if page}
|
|
<Editor editable={true} value={page.content} onSet={s => patch({content:s})}></Editor>
|
|
{/if} |