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