@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
{
}
@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);
}
}