LANCommander/LANCommander.Launcher/UI/Components/DownloadQueue.razor
Pat Hartl 29047a4f12 Merge branch 'main' into v1.0.0
# Conflicts:
#	LANCommander.Launcher.Models/LibraryItem.cs
#	LANCommander.SDK/Client.cs
2024-08-10 12:11:04 -05:00

109 lines
3.4 KiB
Text

@using LANCommander.Launcher.Models
@inject DownloadService DownloadService
@inject NavigationManager NavigationManager
<Drawer Placement="bottom" Class="download-queue" @bind-Visible="@Visible" OnClose="Hide">
@if (DownloadService.Queue.Any(qi => qi.State))
{
<h2>In Progress</h2>
@foreach (var queueItem in DownloadService.Queue.Where(qi => qi.State))
{
<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 />
</div>
</div>
}
}
<h2>Up Next</h2>
@foreach (var queueItem in DownloadService.Queue.Where(qi => !qi.State && qi.Status == SDK.Enums.GameInstallStatus.Idle))
{
<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-actions">
<Button Icon="@IconType.Outline.Close" Size="@ButtonSize.Large" Danger OnClick="() => Remove(queueItem)" />
</div>
</div>
}
@if (!DownloadService.Queue.Any(qi => qi.Status == SDK.Enums.GameInstallStatus.Idle))
{
<Empty Simple Description="@("The queue is empty")" />
}
@if (DownloadService.Queue.Any(qi => !qi.State && qi.Status != SDK.Enums.GameInstallStatus.Idle && qi.Status != SDK.Enums.GameInstallStatus.Failed && qi.Status != SDK.Enums.GameInstallStatus.Canceled))
{
<h2>Completed</h2>
@foreach (var queueItem in DownloadService.Queue.Where(qi => !qi.State))
{
<div class="queue-item">
<MediaImage Id="@queueItem.CoverId" Class="queue-item-cover" />
<div class="queue-item-info">
<div>
<h3>@queueItem.Title</h3>
<span>@ByteSizeLib.ByteSize.FromBytes(queueItem.TotalBytes)</span>
</div>
</div>
<div class="queue-item-actions">
<PlayButton LibraryItemId="@queueItem.Id">
<MenuExtra>
<MenuItem OnClick="() => ViewInLibrary(queueItem)">
View in Library
</MenuItem>
</MenuExtra>
</PlayButton>
</div>
</div>
}
}
</Drawer>
@code {
bool Visible { get; set; } = false;
protected override async Task OnInitializedAsync()
{
DownloadService.OnQueueChanged += async () =>
{
StateHasChanged();
};
}
async Task Remove(IDownloadQueueItem queueItem)
{
DownloadService.Remove(queueItem);
}
async Task ViewInLibrary(IDownloadQueueItem 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);
}
}