@using LANCommander.SDK.Extensions
@namespace LANCommander.Launcher.UI.Components
@inject LibraryService LibraryService
@inject NavigationManager NavigationManager
@inject LocalizationService LocalizationService
@if (LibraryService.Items == null || !LibraryService.Items.Any())
{
}
else
{
if (LibraryItems == null || !LibraryItems.Any())
{
}
else
{
@if (Groups.Count > 1)
{
foreach (var group in Groups.OrderByTitle(g => g))
{
}
}
else
{
}
}
}
@code {
[Parameter] public EventCallback OnItemSelected { get; set; }
List Groups = new();
IEnumerable LibraryItems = [];
LibraryItemFilter? Filter;
Guid _currentItemId { get; set; }
protected override async Task OnInitializedAsync()
{
LibraryService.OnItemsFiltered += LoadFilteredItems;
await LibraryService.RefreshItemsAsync();
}
async Task LoadFilteredItems(IEnumerable libraryItems)
{
LibraryItems = libraryItems;
await UpdateGroups();
await InvokeAsync(StateHasChanged);
}
async Task SelectItem(Models.ListItem item)
{
_currentItemId = item.Key;
if (OnItemSelected.HasDelegate)
await OnItemSelected.InvokeAsync(item.Key);
}
async Task UpdateGroups()
{
Groups = LibraryItems.SelectMany(i => i.Groups).Distinct().ToList();
if (LibraryItems.Any(i => i.Groups == null || i.Groups.Length == 0))
Groups.Add(LocalizationService.GetString("Uncategorized"));
await InvokeAsync(StateHasChanged);
}
public void Dispose()
{
LibraryService.OnItemsFiltered -= LoadFilteredItems;
}
}