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

49 lines
1.2 KiB
Plaintext
Raw Permalink Normal View History

@using System.Text.Json
2024-03-02 01:04:42 +00:00
@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);
}
}
}