This commit is contained in:
M-L-Ml 2025-04-21 19:32:00 +02:00
parent ffc3ded283
commit c9cdd4149b

View file

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
namespace SourceGit.Models namespace SourceGit.Models
{ {
@ -75,32 +76,31 @@ namespace SourceGit.Models
baseUrl => $"{baseUrl}/commit/" baseUrl => $"{baseUrl}/commit/"
) )
}; };
/// <summary>
/// translate remotes to CommitLink-s . TODO: rename /// <summary>
/// </summary> /// Attempts to create a CommitLink for a given remote by matching a provider.
/// <param name="remotes"></param> /// </summary>
/// <returns></returns> private static CommitLink? TryCreateCommitLink(Remote remote)
{
if (!remote.TryGetVisitURL(out var url))
return null;
var provider = Providers.FirstOrDefault(p => p.IsMatch(url));
if (provider.Name == null)
return null;
string repoName = provider.ExtractRepo(url);
return new CommitLink($"{provider.Name} ({repoName})", provider.BuildCommitUrlPrefix(url));
}
/// <summary>
/// Translates remotes to CommitLinks. TODO: rename
/// </summary>
public static List<CommitLink> Get(List<Remote> remotes) public static List<CommitLink> Get(List<Remote> remotes)
{ {
var outs = new List<CommitLink>(); return remotes
.Select(TryCreateCommitLink)
foreach (var remote in remotes) .Where(cl => cl != null)
{ .Cast<CommitLink>()
if (remote.TryGetVisitURL(out var url)) .ToList();
{
foreach (var provider in Providers)
{
if (provider.IsMatch(url))
{
string repoName = provider.ExtractRepo(url);
outs.Add(new CommitLink($"{provider.Name} ({repoName})", provider.BuildCommitUrlPrefix(url)));
break;
}
}
}
}
return outs;
} }
} }
} }