fix(search): preserve configured ticket links
This commit is contained in:
@@ -53,6 +53,21 @@ public class TicketExternalLinkHelperTest
|
|||||||
Assert.Equal("https://m42.example/wm/ticket/preview", ticketLink.TrimEnd('/'));
|
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]
|
[Fact]
|
||||||
public void TryGetTicketLink_BuildsPreviewLinkForOverviewRelation()
|
public void TryGetTicketLink_BuildsPreviewLinkForOverviewRelation()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ namespace FasdDesktopUi.Basics.Helper
|
|||||||
if (relation == null || relation.Type != enumF4sdSearchResultClass.Ticket)
|
if (relation == null || relation.Type != enumF4sdSearchResultClass.Ticket)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (TryGetHttpLink(relation, "TicketLink", out ticketLink) ||
|
if (TryGetConfiguredLink(relation, "TicketLink", out ticketLink) ||
|
||||||
TryGetHttpLink(relation, "DirectLinkPreview", out ticketLink))
|
TryGetConfiguredLink(relation, "DirectLinkPreview", out ticketLink))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -90,19 +90,13 @@ namespace FasdDesktopUi.Basics.Helper
|
|||||||
return true;
|
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;
|
ticketLink = null;
|
||||||
if (relation?.Infos?.TryGetValue(key, out var configuredLink) != true || string.IsNullOrWhiteSpace(configuredLink))
|
if (relation?.Infos?.TryGetValue(key, out var configuredLink) != true || string.IsNullOrWhiteSpace(configuredLink))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!Uri.TryCreate(configuredLink, UriKind.Absolute, out var linkUri) ||
|
ticketLink = configuredLink;
|
||||||
(linkUri.Scheme != Uri.UriSchemeHttp && linkUri.Scheme != Uri.UriSchemeHttps))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ticketLink = linkUri.AbsoluteUri;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user