oliverbooth.dev/OliverBooth/Pages/Components/MarkdownEditor.razor

49 lines
1.2 KiB
Plaintext

@using System.Text.Json
@using OliverBooth.Common.Data.Blog
@using OliverBooth.Common.Services
@implements IDisposable
@inject IBlogPostService BlogPostService
@inject IJSRuntime JsRuntime
@code {
private DotNetObjectReference<MarkdownEditor>? _dotNetHelper;
[JSInvokable]
public string GetEditorObject(Guid id)
{
if (!BlogPostService.TryGetPost(id, out IBlogPost? post))
{
return JsonSerializer.Serialize(new { blocks = Array.Empty<object>() });
}
return BlogPostService.GetBlogPostEditorObject(post);
}
[JSInvokable]
public void Save(Guid id, string content)
{
if (!BlogPostService.TryGetPost(id, out IBlogPost? post))
{
return;
}
post.Body = content;
BlogPostService.UpdatePost(post);
}
public void Dispose()
{
_dotNetHelper?.Dispose();
}
/// <inheritdoc />
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
_dotNetHelper = DotNetObjectReference.Create(this);
await JsRuntime.InvokeVoidAsync("Interop.setDotNetHelper", _dotNetHelper);
}
}
}