This commit is contained in:
JustArchi
2016-06-19 13:59:56 +02:00
parent 529d366b6c
commit 6d087a9ac9
4 changed files with 17 additions and 23 deletions

View File

@@ -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;

View File

@@ -288,7 +288,8 @@ namespace ArchiSteamFarm {
}
}
await confirmations.ForEachAsync(async confirmation => await BotDatabase.MobileAuthenticator.HandleConfirmation(confirmation, accept).ConfigureAwait(false)).ConfigureAwait(false);
List<Task<bool>> tasks = confirmations.Select(confirmation => BotDatabase.MobileAuthenticator.HandleConfirmation(confirmation, accept)).ToList();
await Task.WhenAll(tasks).ConfigureAwait(false);
}
internal async Task<bool> RefreshSession() {

View File

@@ -93,33 +93,37 @@ namespace ArchiSteamFarm {
return;
}
await tradeOffers.ForEachAsync(ParseTrade).ConfigureAwait(false);
List<Task<bool>> 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<ulong> tradeIDs = new HashSet<ulong>(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<bool> 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<bool> ShouldAcceptTrade(Steam.TradeOffer tradeOffer) {

View File

@@ -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<T>(this IEnumerable<T> sequence, Func<T, Task> 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));