From 2db74b569683f746adad09c8cd48d58159353a66 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Thu, 24 Oct 2024 19:18:00 -0500 Subject: [PATCH] Fix download queueing Fixes #131 --- LANCommander.Launcher.Models/DownloadQueueGame.cs | 2 +- LANCommander.Launcher.Services/DownloadService.cs | 11 +++++++---- LANCommander.SDK/Enums/InstallStatus.cs | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/LANCommander.Launcher.Models/DownloadQueueGame.cs b/LANCommander.Launcher.Models/DownloadQueueGame.cs index 56fc83ad..869f6e29 100644 --- a/LANCommander.Launcher.Models/DownloadQueueGame.cs +++ b/LANCommander.Launcher.Models/DownloadQueueGame.cs @@ -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); diff --git a/LANCommander.Launcher.Services/DownloadService.cs b/LANCommander.Launcher.Services/DownloadService.cs index 71fd189f..23b1d04c 100644 --- a/LANCommander.Launcher.Services/DownloadService.cs +++ b/LANCommander.Launcher.Services/DownloadService.cs @@ -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; diff --git a/LANCommander.SDK/Enums/InstallStatus.cs b/LANCommander.SDK/Enums/InstallStatus.cs index ca475820..333ca0dd 100644 --- a/LANCommander.SDK/Enums/InstallStatus.cs +++ b/LANCommander.SDK/Enums/InstallStatus.cs @@ -9,7 +9,7 @@ namespace LANCommander.SDK.Enums { public enum GameInstallStatus { - Idle, + Queued, Downloading, [Display(Name = "Installing Redistributables")] InstallingRedistributables,