diff --git a/Iceshrimp.Backend/Core/Federation/ActivityPub/MentionsResolver.cs b/Iceshrimp.Backend/Core/Federation/ActivityPub/MentionsResolver.cs index 3f7b2c44..efdec6ba 100644 --- a/Iceshrimp.Backend/Core/Federation/ActivityPub/MentionsResolver.cs +++ b/Iceshrimp.Backend/Core/Federation/ActivityPub/MentionsResolver.cs @@ -1,3 +1,4 @@ +using System.Runtime.CompilerServices; using CommunityToolkit.HighPerformance; using Iceshrimp.Backend.Core.Configuration; using Iceshrimp.Backend.Core.Database.Tables; @@ -45,6 +46,26 @@ public class MentionsResolver(IOptions config) : ISingle } } + [OverloadResolutionPriority(1)] + private void ResolveMentions( + Span nodes, string? host, + List mentionCache, + SplitDomainMapping splitDomainMapping + ) + { + for (var i = 0; i < nodes.Length; i++) + { + var node = nodes[i]; + if (node is not MfmMentionNode mention) + { + ResolveMentions(node.Children, host, mentionCache, splitDomainMapping); + continue; + } + + nodes[i] = ResolveMention(mention, host, mentionCache, splitDomainMapping); + } + } + private IMfmInlineNode ResolveMention( MfmMentionNode node, string? host, IEnumerable mentionCache,