Extend the ability of the hosted page markdown parser

This commit is contained in:
2025-11-22 17:40:17 +08:00
parent 0e44d9c514
commit 7b7a6c9218
8 changed files with 53 additions and 16 deletions

View File

@@ -2,14 +2,14 @@ using DysonNetwork.Shared.Models;
using DysonNetwork.Shared.Proto;
using DysonNetwork.Shared.Registry;
using DysonNetwork.Zone.Publication;
using Markdig;
// Add this using statement
using Microsoft.AspNetCore.Mvc.RazorPages;
using NodaTime;
namespace DysonNetwork.Zone.Pages;
public class AboutModel(RemoteAccountService ras) : PageModel
public class AboutModel(RemoteAccountService ras, MarkdownConverter markdownConverter) : PageModel
{
public SnPublicationSite? Site { get; set; }
public Account? UserAccount { get; set; }
@@ -32,8 +32,7 @@ public class AboutModel(RemoteAccountService ras) : PageModel
if (UserAccount?.Profile?.Bio != null)
{
var pipeline = new MarkdownPipelineBuilder().Build();
HtmlBio = Markdown.ToHtml(UserAccount.Profile.Bio, pipeline);
HtmlBio = markdownConverter.ToHtml(UserAccount.Profile.Bio);
}
}
}

View File

@@ -2,7 +2,7 @@ using DysonNetwork.Shared.Models;
using DysonNetwork.Shared.Proto;
using DysonNetwork.Shared.Registry;
using DysonNetwork.Zone.Publication;
using Markdig;
// Add this using statement
using Microsoft.AspNetCore.Mvc.RazorPages;
using NodaTime;
@@ -11,9 +11,11 @@ namespace DysonNetwork.Zone.Pages;
public class IndexModel(
PostService.PostServiceClient postClient,
RemotePublisherService rps,
RemoteAccountService ras
RemoteAccountService ras,
MarkdownConverter markdownConverter // Inject MarkdownConverter
) : PageModel
{
private readonly MarkdownConverter _markdownConverter = markdownConverter; // Store the injected service
public SnPublicationSite? Site { get; set; }
public SnPublisher? Publisher { get; set; }
public Account? UserAccount { get; set; }
@@ -60,7 +62,7 @@ public class IndexModel(
foreach (
var post in FeaturedPosts.Where(post => !string.IsNullOrEmpty(post.Content))
)
post.Content = Markdown.ToHtml(post.Content!);
post.Content = _markdownConverter.ToHtml(post.Content!);
}
}
}

View File

@@ -1,14 +1,20 @@
using Markdig;
using DysonNetwork.Shared.Models;
using DysonNetwork.Shared.Proto;
using DysonNetwork.Shared.Registry;
using DysonNetwork.Zone.Publication;
// Add this using statement
using Microsoft.AspNetCore.Mvc.RazorPages;
using PostType = DysonNetwork.Shared.Models.PostType;
namespace DysonNetwork.Zone.Pages;
public class PostsModel(PostService.PostServiceClient postClient, RemotePublisherService rps) : PageModel
public class PostsModel(
PostService.PostServiceClient postClient,
RemotePublisherService rps,
MarkdownConverter markdownConverter // Inject MarkdownConverter
) : PageModel
{
private readonly MarkdownConverter _markdownConverter = markdownConverter; // Store the injected service
public SnPublicationSite? Site { get; set; }
public SnPublisher? Publisher { get; set; }
public List<SnPost> Posts { get; set; } = [];
@@ -43,7 +49,7 @@ public class PostsModel(PostService.PostServiceClient postClient, RemotePublishe
// Convert the markdown content to HTML
foreach (var post in Posts.Where(post => !string.IsNullOrEmpty(post.Content)))
post.Content = Markdown.ToHtml(post.Content!);
post.Content = _markdownConverter.ToHtml(post.Content!, softBreaks: post.Type != PostType.Article);
}
}
}

View File

@@ -1,14 +1,15 @@
using Markdig;
using DysonNetwork.Shared.Models;
using DysonNetwork.Shared.Proto;
using DysonNetwork.Zone.Publication;
// Add this using statement
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace DysonNetwork.Zone.Pages.Posts;
public class DetailsModel(PostService.PostServiceClient postClient) : PageModel
public class DetailsModel(PostService.PostServiceClient postClient, MarkdownConverter markdownConverter) : PageModel
{
private readonly MarkdownConverter _markdownConverter = markdownConverter;
[FromRoute] public string Slug { get; set; } = null!;
public SnPublicationSite? Site { get; set; }
@@ -35,7 +36,7 @@ public class DetailsModel(PostService.PostServiceClient postClient) : PageModel
// Convert markdown content to HTML
if (Post != null && !string.IsNullOrEmpty(Post.Content))
Post.Content = Markdown.ToHtml(Post.Content);
Post.Content = _markdownConverter.ToHtml(Post.Content);
return Page();
}