From 74ff715a6299c92dd61cde8bea48dd5849256bdd Mon Sep 17 00:00:00 2001 From: JustArchi Date: Mon, 4 Jan 2021 00:15:29 +0100 Subject: [PATCH] Misc rework of change number delay --- ArchiSteamFarm/Bot.cs | 2 +- ArchiSteamFarm/SteamPICSChanges.cs | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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;