From f06d93a34839a32936e233a6951d81d22c67fc26 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 27 Dec 2025 23:03:26 +0800 Subject: [PATCH] :necktie: Update post truncate logic --- DysonNetwork.Sphere/Post/PostService.cs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/DysonNetwork.Sphere/Post/PostService.cs b/DysonNetwork.Sphere/Post/PostService.cs index d958ab8..57cd4ce 100644 --- a/DysonNetwork.Sphere/Post/PostService.cs +++ b/DysonNetwork.Sphere/Post/PostService.cs @@ -9,6 +9,7 @@ using DysonNetwork.Sphere.Publisher; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Localization; using NodaTime; +using Markdig; using DysonNetwork.Shared.Models; namespace DysonNetwork.Sphere.Post; @@ -37,23 +38,27 @@ public partial class PostService( { if (item.Content?.Length > maxLength) { - item.Content = item.Content[..maxLength]; + var plainText = Markdown.ToPlainText(item.Content); + item.Content = plainText.Length > maxLength ? plainText[..maxLength] : plainText; item.IsTruncated = true; } // Truncate replied post content with shorter embed length - if (item.RepliedPost?.Content?.Length > embedMaxLength) + if (item.RepliedPost?.Content != null) { - item.RepliedPost.Content = item.RepliedPost.Content[..embedMaxLength]; - item.RepliedPost.IsTruncated = true; + var plainText = Markdown.ToPlainText(item.RepliedPost.Content); + if (plainText.Length > embedMaxLength) + { + item.RepliedPost.Content = plainText[..embedMaxLength]; + item.RepliedPost.IsTruncated = true; + } } // Truncate forwarded post content with shorter embed length - if (item.ForwardedPost?.Content?.Length > embedMaxLength) - { - item.ForwardedPost.Content = item.ForwardedPost.Content[..embedMaxLength]; - item.ForwardedPost.IsTruncated = true; - } + if (item.ForwardedPost?.Content == null || Markdown.ToPlainText(item.ForwardedPost.Content).Length <= embedMaxLength) continue; + var forwardedPlainText = Markdown.ToPlainText(item.ForwardedPost.Content); + item.ForwardedPost.Content = forwardedPlainText[..embedMaxLength]; + item.ForwardedPost.IsTruncated = true; } return input; @@ -1033,4 +1038,4 @@ public static class PostQueryExtensions (e.Publisher.AccountId != null && userFriends.Contains(e.Publisher.AccountId.Value)) || publishersId.Contains(e.PublisherId)); } -} \ No newline at end of file +}