@using LANCommander.Client.Models @inject LibraryService LibraryService @inject ImportService ImportService @inject MessageBusService MessageBusService
@if (Groups.Count > 1) { foreach (var group in Groups.OrderByTitle(g => g)) {
@context.Name
} } else {
@context.Name
}
@code { [Parameter] public Guid? SelectedItem { get; set; } [Parameter] public EventCallback OnItemSelected { get; set; } List Groups = new List(); IEnumerable LibraryItems; protected override void OnInitialized() { LibraryService.OnLibraryChanged += () => { UpdateGroups(); }; ImportService.OnImportComplete += () => { UpdateGroups(); }; MessageBusService.OnLibraryFilterApplied += UpdateGroups; UpdateGroups(); } string GetItemClasses(LibraryItem item) { HashSet classes = new HashSet(); if (item.State == LibraryItemState.Installed) classes.Add("installed"); if (SelectedItem == item.Key) classes.Add("selected"); return String.Join(" ", classes); } async Task SelectItem(LibraryItem item) { if (OnItemSelected.HasDelegate) await OnItemSelected.InvokeAsync(item.Key); } async Task UpdateGroups() { LibraryItems = await LibraryService.GetLibraryItemsAsync(); Groups = LibraryItems.SelectMany(i => i.Groups).Distinct().ToList(); if (LibraryItems.Any(i => i.Groups == null || i.Groups.Length == 0)) Groups.Add("Uncategorized"); InvokeAsync(StateHasChanged); } }