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('/'));
|
||||
}
|
||||
|
||||
[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()
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user