@using LANCommander.Launcher.Data.Models @using LANCommander.SDK.Enums @namespace LANCommander.Launcher.UI @inherits FeedbackComponent @inject LibraryService LibraryService @inject IMessageService MessageService @inject ILogger Logger @inject LocalizationService LocalizationService
@LocalizationService.GetString("BaseGame") @Options.Name
@if (DependentGames.Any()) { }
@code { Data.Models.Game? Game; List DependentGames = new(); IEnumerable SelectedDependentGames = []; protected override void OnInitialized() { base.OnInitialized(); Game = (Game)Options.DataItem; DependentGames = Game?.DependentGames.OrderBy(g => g.SortTitle ?? g.Title).ToList() ?? []; SelectedDependentGames = DependentGames?.Where(g => g.Type == GameType.Expansion || g.Type == GameType.Mod) ?? []; } async Task Close() { await CloseFeedbackAsync(); } async Task RemoveFromLibrary() { if (Options.DataItem is Game game) { try { var addonIds = SelectedDependentGames?.Select(a => a.Id).ToArray() ?? []; await LibraryService.RemoveFromLibraryAsync(game!.Id, addonIds); await LibraryService.RefreshItemsAsync(true); } catch (Exception ex) { MessageService.Error(LocalizationService.GetString("CouldNotRemoveGame")); Logger?.LogError(ex, "Could not remove game {GameTitle}", game.Title); } } await CloseFeedbackAsync(); } }