diff --git a/F4SD.Cockpit.Client.Test/Basics/Helper/TicketExternalLinkHelperTest.cs b/F4SD.Cockpit.Client.Test/Basics/Helper/TicketExternalLinkHelperTest.cs index 9492f88..b6cb025 100644 --- a/F4SD.Cockpit.Client.Test/Basics/Helper/TicketExternalLinkHelperTest.cs +++ b/F4SD.Cockpit.Client.Test/Basics/Helper/TicketExternalLinkHelperTest.cs @@ -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 + { + ["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() { diff --git a/FasdDesktopUi/Basics/Helper/TicketDeepLinkHelper.cs b/FasdDesktopUi/Basics/Helper/TicketDeepLinkHelper.cs index ae43b05..e97fb38 100644 --- a/FasdDesktopUi/Basics/Helper/TicketDeepLinkHelper.cs +++ b/FasdDesktopUi/Basics/Helper/TicketDeepLinkHelper.cs @@ -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; }