@using LANCommander.Launcher.Models @using LANCommander.Launcher.Settings @using LANCommander.SDK.Services @inject InstallService InstallService @inject LibraryService LibraryService @inject GameClient GameClient @inject SettingsProvider SettingsProvider @inject NavigationManager NavigationManager @inject LocalizationService LocalizationService @inject ConfirmService ConfirmService @inject ModalService ModalService @namespace LANCommander.Launcher.UI @if (InstallService.Queue.Any(qi => qi.State)) {

@LocalizationService.GetString("InProgress")

@foreach (var queueItem in InstallService.Queue.Where(qi => qi.State)) {

@queueItem.Title

} }

@LocalizationService.GetString("UpNext")

@foreach (var queueItem in InstallService.Queue.Where(qi => !qi.State && qi.Status == SDK.Enums.InstallStatus.Queued)) {

@queueItem.Title

} @if (!InstallService.Queue.Any(qi => qi.Status == SDK.Enums.InstallStatus.Queued)) { } @if (InstallService.Queue.Any(qi => !qi.State && qi.Status != SDK.Enums.InstallStatus.Queued && qi.Status != SDK.Enums.InstallStatus.Failed && qi.Status != SDK.Enums.InstallStatus.Canceled)) {

@LocalizationService.GetString("Completed")

@foreach (var queueItem in InstallService.Queue.Where(qi => !qi.State)) {

@queueItem.Title

@LocalizationService.GetString("ViewInLibrary")
} }
@code { bool Visible { get; set; } = false; protected override void OnInitialized() { InstallService.OnInstallFail += OnInstallFail; } protected override async Task OnInitializedAsync() { InstallService.OnQueueChanged += async () => { StateHasChanged(); }; } async Task Cancel(IInstallQueueItem queueItem) { await InstallService.CancelInstallAsync(queueItem.Id); } async Task Remove(IInstallQueueItem queueItem) { InstallService.Remove(queueItem); } async Task ViewInLibrary(IInstallQueueItem queueItem) { Visible = false; NavigationManager.NavigateTo("/" + queueItem.Id); } public async Task Show() { Visible = true; await InvokeAsync(StateHasChanged); } public async Task Hide() { Visible = false; await InvokeAsync(StateHasChanged); } async Task OnInstallFail(Data.Models.Game game) { var result = await ConfirmService.Show( LocalizationService.GetString("InstallationFailedMessage", game.Title), LocalizationService.GetString("InstallationFailed"), ConfirmButtons.RetryCancel, ConfirmIcon.Error ); await LibraryService.LibraryChanged(); if (result == ConfirmResult.Retry) { var libraryItem = LibraryService.GetItem(game.Id); Install(libraryItem); } } async Task Install(Models.ListItem libraryItem) { var addons = await GameClient.GetAddonsAsync(libraryItem.Key); if (SettingsProvider.CurrentValue.Games.InstallDirectories.Length > 1 || (addons != null && addons.Any())) { var modalOptions = new ModalOptions { Title = LocalizationService.GetString("InstallGame", libraryItem.Name), Maximizable = false, DefaultMaximized = false, Closable = true, OkText = LocalizationService.GetString("Install"), Draggable = true, Centered = true, WrapClassName = "ant-modal-wrap-no-padding", Footer = null, }; var modalRef = ModalService.CreateModal(modalOptions, libraryItem); } else { await InstallService.Add(libraryItem.DataItem as Data.Models.Game); } } }