Fix download queueing

Fixes #131
This commit is contained in:
Pat Hartl 2024-10-24 19:18:00 -05:00
parent 8d7707c481
commit 2db74b5696
3 changed files with 9 additions and 6 deletions

View file

@ -56,7 +56,7 @@ namespace LANCommander.Launcher.Models
Title = game.Title;
Version = game.Archives.OrderByDescending(a => a.CreatedOn).FirstOrDefault()?.Version;
QueuedOn = DateTime.Now;
Status = GameInstallStatus.Idle;
Status = GameInstallStatus.Queued;
var cover = game.Media.FirstOrDefault(m => m.Type == SDK.Enums.MediaType.Cover);

View file

@ -102,7 +102,8 @@ namespace LANCommander.Launcher.Services
}
}
if (!Queue.Any(i => i.Id == game.Id && i.Status == GameInstallStatus.Idle))
// If not already queued
if (!Queue.Any(i => i.Id == game.Id && i.Status == GameInstallStatus.Queued))
{
var queueItem = new DownloadQueueGame(gameInfo);
@ -114,8 +115,6 @@ namespace LANCommander.Launcher.Services
{
Logger?.LogTrace("Download queue is empty, starting the game download immediately");
queueItem.Status = GameInstallStatus.Downloading;
Queue.Add(queueItem);
await Install();
@ -154,11 +153,15 @@ namespace LANCommander.Launcher.Services
public async Task Install()
{
var currentItem = Queue.FirstOrDefault(i => i.State);
var currentItem = Queue.FirstOrDefault(i => i.Status == GameInstallStatus.Queued);
if (currentItem == null)
return;
currentItem.Status = GameInstallStatus.Downloading;
OnQueueChanged?.Invoke();
Game game = null;
SDK.Models.Game gameInfo = null;

View file

@ -9,7 +9,7 @@ namespace LANCommander.SDK.Enums
{
public enum GameInstallStatus
{
Idle,
Queued,
Downloading,
[Display(Name = "Installing Redistributables")]
InstallingRedistributables,