@using System.Collections @inject UpdateService UpdateService @inject NavigationManager NavigationManager
@foreach (var downloadLink in DownloadLinks) { }
@code { class DownloadLink { public string Name { get; set; } public string Url { get; set; } public string Icon { get; set; } public string[] Tags { get; set; } } IEnumerable DownloadLinks = new List(); readonly Hashtable _iconMap = new() { [LauncherPlatform.Windows] = IconType.Fill.Windows, [LauncherPlatform.Linux] = IconType.Outline.Qq, // Not Linux, but QQ penguin [LauncherPlatform.macOS] = IconType.Fill.Apple, }; protected override async Task OnInitializedAsync() { var artifacts = await UpdateService.GetLauncherArtifactsAsync(); DownloadLinks = artifacts .OrderBy(a => a.Platform) .ThenBy(a => a.Architecture) .Select(a => { var tags = new List(); if (artifacts.Count(art => art.Platform == a.Platform && art.Architecture == a.Architecture) > 1) { if (a.Url.ToLower().EndsWith(".exe")) tags.Add("exe"); else if (a.Url.ToLower().EndsWith(".zip")) tags.Add("zip"); } return new DownloadLink { Name = $"{a.Platform} ({a.Architecture})", Icon = _iconMap[a.Platform].ToString(), Url = a.Url, Tags = tags.ToArray() }; }); } }