fix(search): preserve configured ticket links

This commit is contained in:
Meik
2026-07-13 11:55:00 +02:00
parent 997dcee78f
commit b3520f8865
2 changed files with 19 additions and 10 deletions

View File

@@ -53,6 +53,21 @@ public class TicketExternalLinkHelperTest
Assert.Equal("https://m42.example/wm/ticket/preview", ticketLink.TrimEnd('/'));
}
[Fact]
public void TryGetTicketLink_PreservesConfiguredTicketLink()
{
var relation = CreateTicketRelation();
relation.Infos = new Dictionary<string, string>
{
["TicketLink"] = "matrix42-client://ticket/TCK00001"
};
var result = TicketExternalLinkHelper.TryGetTicketLink(relation, null, out var ticketLink);
Assert.True(result);
Assert.Equal("matrix42-client://ticket/TCK00001", ticketLink);
}
[Fact]
public void TryGetTicketLink_BuildsPreviewLinkForOverviewRelation()
{

View File

@@ -65,8 +65,8 @@ namespace FasdDesktopUi.Basics.Helper
if (relation == null || relation.Type != enumF4sdSearchResultClass.Ticket)
return false;
if (TryGetHttpLink(relation, "TicketLink", out ticketLink) ||
TryGetHttpLink(relation, "DirectLinkPreview", out ticketLink))
if (TryGetConfiguredLink(relation, "TicketLink", out ticketLink) ||
TryGetConfiguredLink(relation, "DirectLinkPreview", out ticketLink))
{
return true;
}
@@ -90,19 +90,13 @@ namespace FasdDesktopUi.Basics.Helper
return true;
}
private static bool TryGetHttpLink(cF4sdApiSearchResultRelation relation, string key, out string ticketLink)
private static bool TryGetConfiguredLink(cF4sdApiSearchResultRelation relation, string key, out string ticketLink)
{
ticketLink = null;
if (relation?.Infos?.TryGetValue(key, out var configuredLink) != true || string.IsNullOrWhiteSpace(configuredLink))
return false;
if (!Uri.TryCreate(configuredLink, UriKind.Absolute, out var linkUri) ||
(linkUri.Scheme != Uri.UriSchemeHttp && linkUri.Scheme != Uri.UriSchemeHttps))
{
return false;
}
ticketLink = linkUri.AbsoluteUri;
ticketLink = configuredLink;
return true;
}