@page "/update/{blogPostId}" @attribute [Authorize] @using LinkDotNet.Blog.Domain @using LinkDotNet.Blog.Infrastructure.Persistence @using LinkDotNet.Blog.Web.Features.Admin.BlogPostEditor.Components @using LinkDotNet.Blog.Web.Features.Admin.BlogPostEditor.Services @inject IRepository BlogPostRepository @inject IBlogPostVersionService BlogPostVersionService @inject IToastService ToastService Updating: @blogPostFromDb?.Title @if (blogPostFromDb is not null) { } else { } @code { [Parameter, EditorRequired] public required string BlogPostId { get; set; } private BlogPost? blogPostFromDb; protected override async Task OnParametersSetAsync() { ArgumentException.ThrowIfNullOrEmpty(BlogPostId); blogPostFromDb = await BlogPostRepository.GetByIdAsync(BlogPostId); } private async Task StoreBlogPostAsync(BlogPost blogPost) { ArgumentNullException.ThrowIfNull(blogPostFromDb); await BlogPostVersionService.SaveNewVersionAsync(blogPostFromDb, blogPost); ToastService.ShowSuccess($"Saved new version of \"{blogPost.Title}\""); blogPostFromDb = await BlogPostRepository.GetByIdAsync(BlogPostId); } private async Task HandleVersionRestoredAsync(BlogPostVersion version) { ArgumentNullException.ThrowIfNull(blogPostFromDb); await BlogPostVersionService.RestoreVersionAsync(blogPostFromDb, version); ToastService.ShowSuccess($"Restored version {version.VersionNumber}"); blogPostFromDb = await BlogPostRepository.GetByIdAsync(BlogPostId); StateHasChanged(); } }