LANCommander/LANCommander.Launcher/UI/Components/DownloadQueue.razor

111 lines
3.6 KiB
Text
Raw Permalink Normal View History

@using LANCommander.Launcher.Models
@inject InstallService InstallService
2024-06-11 00:26:17 -05:00
@inject NavigationManager NavigationManager
@inject LocalizationService LocalizationService
2024-12-31 18:21:41 -06:00
<Drawer Placement="DrawerPlacement.Bottom" Class="download-queue" @bind-Visible="@Visible" OnClose="Hide">
2024-06-11 00:26:17 -05:00
@if (InstallService.Queue.Any(qi => qi.State))
2024-05-27 17:07:28 -05:00
{
<h2>@LocalizationService.GetString("InProgress")</h2>
@foreach (var queueItem in InstallService.Queue.Where(qi => qi.State))
2024-06-11 00:26:17 -05:00
{
<div class="queue-item">
<MediaImage Id="@queueItem.CoverId" Class="queue-item-cover" />
<div class="queue-item-info">
<div>
<h3>@queueItem.Title</h3>
</div>
</div>
<div class="queue-item-current-download">
<CurrentDownloadItem />
2024-05-27 17:07:28 -05:00
</div>
</div>
2024-06-11 00:26:17 -05:00
}
2024-05-27 17:07:28 -05:00
}
<h2>@LocalizationService.GetString("UpNext")</h2>
@foreach (var queueItem in InstallService.Queue.Where(qi => !qi.State && qi.Status == SDK.Enums.InstallStatus.Queued))
2024-05-27 17:07:28 -05:00
{
<div class="queue-item">
2024-06-11 00:26:17 -05:00
<MediaImage Id="@queueItem.CoverId" Class="queue-item-cover" />
2024-05-27 17:07:28 -05:00
<div class="queue-item-info">
<div>
2024-06-11 00:26:17 -05:00
<h3>@queueItem.Title</h3>
2024-05-27 17:07:28 -05:00
</div>
</div>
2024-06-11 00:26:17 -05:00
<div class="queue-item-actions">
2024-12-31 18:21:41 -06:00
<Button Icon="@IconType.Outline.Close" Size="ButtonSize.Large" Danger OnClick="() => Remove(queueItem)" />
2024-06-11 00:26:17 -05:00
</div>
</div>
2024-05-27 17:07:28 -05:00
}
@if (!InstallService.Queue.Any(qi => qi.Status == SDK.Enums.InstallStatus.Queued))
2024-05-27 17:07:28 -05:00
{
<Empty Simple Description="@LocalizationService.GetString("TheQueueIsEmpty")" />
2024-06-11 00:26:17 -05:00
}
@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))
2024-06-11 00:26:17 -05:00
{
<h2>@LocalizationService.GetString("Completed")</h2>
@foreach (var queueItem in InstallService.Queue.Where(qi => !qi.State))
2024-06-11 00:26:17 -05:00
{
<div class="queue-item">
<MediaImage Id="@queueItem.CoverId" Class="queue-item-cover" />
<div class="queue-item-info">
<div>
<h3>@queueItem.Title</h3>
2025-01-29 23:02:59 -06:00
<span><ByteSize Value="queueItem.TotalBytes" /></span>
2024-06-11 00:26:17 -05:00
</div>
</div>
<div class="queue-item-actions">
<PlayButton LibraryItemId="@queueItem.Id">
2024-06-11 00:26:17 -05:00
<MenuExtra>
<MenuItem OnClick="() => ViewInLibrary(queueItem)">
@LocalizationService.GetString("ViewInLibrary")
2024-06-11 00:26:17 -05:00
</MenuItem>
</MenuExtra>
</PlayButton>
2024-05-27 17:07:28 -05:00
</div>
</div>
2024-06-11 00:26:17 -05:00
}
2024-05-27 17:07:28 -05:00
}
</Drawer>
@code {
bool Visible { get; set; } = false;
2024-05-29 20:13:38 -05:00
protected override async Task OnInitializedAsync()
{
InstallService.OnQueueChanged += async () =>
{
StateHasChanged();
};
}
2024-06-11 00:26:17 -05:00
async Task Remove(IInstallQueueItem queueItem)
2024-06-11 00:26:17 -05:00
{
InstallService.Remove(queueItem);
2024-06-11 00:26:17 -05:00
}
async Task ViewInLibrary(IInstallQueueItem queueItem)
2024-06-11 00:26:17 -05:00
{
Visible = false;
NavigationManager.NavigateTo("/" + queueItem.Id);
}
public async Task Show()
{
Visible = true;
await InvokeAsync(StateHasChanged);
}
public async Task Hide()
{
Visible = false;
await InvokeAsync(StateHasChanged);
}
}