From 6d087a9ac9fbf99c333364ce59bd7ff34489411e Mon Sep 17 00:00:00 2001 From: JustArchi Date: Sun, 19 Jun 2016 13:59:56 +0200 Subject: [PATCH] Misc --- ArchiSteamFarm/ArchiWebHandler.cs | 1 - ArchiSteamFarm/Bot.cs | 3 ++- ArchiSteamFarm/Trading.cs | 26 +++++++++++++++----------- ArchiSteamFarm/Utilities.cs | 10 ---------- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/ArchiSteamFarm/ArchiWebHandler.cs b/ArchiSteamFarm/ArchiWebHandler.cs index c9660a759..d4ddca329 100644 --- a/ArchiSteamFarm/ArchiWebHandler.cs +++ b/ArchiSteamFarm/ArchiWebHandler.cs @@ -171,7 +171,6 @@ namespace ArchiSteamFarm { Logging.LogGenericInfo("Success!", Bot.BotName); - WebBrowser.CookieContainer.Add(new Cookie("steamid", SteamID.ToString(), "/", "." + SteamCommunityHost)); // TODO: Check if needed for mobile auth WebBrowser.CookieContainer.Add(new Cookie("sessionid", sessionID, "/", "." + SteamCommunityHost)); string steamLogin = authResult["token"].Value; diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 4dacbe3e9..b1e1471ef 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -288,7 +288,8 @@ namespace ArchiSteamFarm { } } - await confirmations.ForEachAsync(async confirmation => await BotDatabase.MobileAuthenticator.HandleConfirmation(confirmation, accept).ConfigureAwait(false)).ConfigureAwait(false); + List> tasks = confirmations.Select(confirmation => BotDatabase.MobileAuthenticator.HandleConfirmation(confirmation, accept)).ToList(); + await Task.WhenAll(tasks).ConfigureAwait(false); } internal async Task RefreshSession() { diff --git a/ArchiSteamFarm/Trading.cs b/ArchiSteamFarm/Trading.cs index c52f827d9..ecdf56451 100644 --- a/ArchiSteamFarm/Trading.cs +++ b/ArchiSteamFarm/Trading.cs @@ -93,33 +93,37 @@ namespace ArchiSteamFarm { return; } - await tradeOffers.ForEachAsync(ParseTrade).ConfigureAwait(false); + List> tasks = tradeOffers.Select(ParseTrade).ToList(); + bool[] results = await Task.WhenAll(tasks).ConfigureAwait(false); - if (tradeOffers.Any(tradeoffer => tradeoffer.ItemsToGive.Count > 0)) { + if (results.Any(result => result)) { HashSet tradeIDs = new HashSet(tradeOffers.Select(tradeOffer => tradeOffer.TradeOfferID)); await Bot.AcceptConfirmations(true, Steam.ConfirmationDetails.EType.Trade, 0, tradeIDs).ConfigureAwait(false); } } - private async Task ParseTrade(Steam.TradeOffer tradeOffer) { + private async Task ParseTrade(Steam.TradeOffer tradeOffer) { if (tradeOffer == null) { Logging.LogNullError(nameof(tradeOffer), Bot.BotName); - return; + return false; } if (tradeOffer.State != Steam.TradeOffer.ETradeOfferState.Active) { - return; + return false; } if (await ShouldAcceptTrade(tradeOffer).ConfigureAwait(false)) { Logging.LogGenericInfo("Accepting trade: " + tradeOffer.TradeOfferID, Bot.BotName); - await Bot.ArchiWebHandler.AcceptTradeOffer(tradeOffer.TradeOfferID).ConfigureAwait(false); - } else if (Bot.BotConfig.IsBotAccount) { - Logging.LogGenericInfo("Rejecting trade: " + tradeOffer.TradeOfferID, Bot.BotName); - Bot.ArchiWebHandler.DeclineTradeOffer(tradeOffer.TradeOfferID); - } else { - Logging.LogGenericInfo("Ignoring trade: " + tradeOffer.TradeOfferID, Bot.BotName); + return await Bot.ArchiWebHandler.AcceptTradeOffer(tradeOffer.TradeOfferID).ConfigureAwait(false); } + + if (Bot.BotConfig.IsBotAccount) { + Logging.LogGenericInfo("Rejecting trade: " + tradeOffer.TradeOfferID, Bot.BotName); + return Bot.ArchiWebHandler.DeclineTradeOffer(tradeOffer.TradeOfferID); + } + + Logging.LogGenericInfo("Ignoring trade: " + tradeOffer.TradeOfferID, Bot.BotName); + return false; } private async Task ShouldAcceptTrade(Steam.TradeOffer tradeOffer) { diff --git a/ArchiSteamFarm/Utilities.cs b/ArchiSteamFarm/Utilities.cs index 7e3ee8480..026b06c2a 100644 --- a/ArchiSteamFarm/Utilities.cs +++ b/ArchiSteamFarm/Utilities.cs @@ -23,7 +23,6 @@ */ using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Net; @@ -34,15 +33,6 @@ namespace ArchiSteamFarm { [SuppressMessage("ReSharper", "UnusedParameter.Global")] internal static void Forget(this Task task) { } - internal static Task ForEachAsync(this IEnumerable sequence, Func action) { - if (action != null) { - return Task.WhenAll(sequence.Select(action)); - } - - Logging.LogNullError(nameof(action)); - return Task.FromResult(true); - } - internal static string GetCookieValue(this CookieContainer cookieContainer, string url, string name) { if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(name)) { Logging.LogNullError(nameof(url) + " || " + nameof(name));