diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 11cee11df..6881f26d7 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -2607,7 +2607,7 @@ namespace ArchiSteamFarm { } // Wait a short time for eventual LastChangeNumber initialization - for (byte i = 0; (i < WebBrowser.MaxTries) && (ASF.GlobalDatabase.LastChangeNumber == 0); i++) { + for (byte i = 0; (i < WebBrowser.MaxTries) && !SteamPICSChanges.LiveUpdate; i++) { await Task.Delay(1000).ConfigureAwait(false); } diff --git a/ArchiSteamFarm/SteamPICSChanges.cs b/ArchiSteamFarm/SteamPICSChanges.cs index 0ff0d4527..cdbea0cf3 100644 --- a/ArchiSteamFarm/SteamPICSChanges.cs +++ b/ArchiSteamFarm/SteamPICSChanges.cs @@ -30,6 +30,8 @@ namespace ArchiSteamFarm { internal static class SteamPICSChanges { private const byte RefreshTimerInMinutes = 5; + internal static bool LiveUpdate { get; private set; } + private static readonly SemaphoreSlim RefreshSemaphore = new(1, 1); private static readonly Timer RefreshTimer = new(RefreshChanges); @@ -66,6 +68,8 @@ namespace ArchiSteamFarm { refreshBot = Bot.Bots?.Values.Where(bot => bot.IsConnectedAndLoggedOn).OrderByDescending(bot => bot.OwnedPackageIDs.Count).FirstOrDefault(); if (refreshBot == null) { + LiveUpdate = false; + return; } @@ -77,12 +81,15 @@ namespace ArchiSteamFarm { } if ((refreshBot == null) || (picsChanges == null)) { + LiveUpdate = false; ASF.ArchiLogger.LogGenericWarning(Strings.WarningFailed); return; } if (picsChanges.CurrentChangeNumber == picsChanges.LastChangeNumber) { + LiveUpdate = true; + return; } @@ -93,11 +100,15 @@ namespace ArchiSteamFarm { await ASF.GlobalDatabase.OnPICSChangesRestart(refreshBot, picsChanges.CurrentChangeNumber).ConfigureAwait(false); } + LiveUpdate = true; + await PluginsCore.OnPICSChangesRestart(picsChanges.CurrentChangeNumber).ConfigureAwait(false); return; } + LiveUpdate = true; + if (ASF.GlobalDatabase != null) { ASF.GlobalDatabase.LastChangeNumber = picsChanges.CurrentChangeNumber;