mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2026-01-01 14:10:53 +00:00
Revert recent trades
When steam is going crazy we're also forgetting trades that simply failed to accept Also, trade that is not valid currently, might be valid in future, especially STM
This commit is contained in:
@@ -37,7 +37,6 @@ namespace ArchiSteamFarm {
|
||||
|
||||
private readonly Bot Bot;
|
||||
private readonly SemaphoreSlim TradesSemaphore = new SemaphoreSlim(1);
|
||||
private readonly HashSet<ulong> RecentlyParsedTrades = new HashSet<ulong>();
|
||||
|
||||
private byte ParsingTasks;
|
||||
|
||||
@@ -80,36 +79,12 @@ namespace ArchiSteamFarm {
|
||||
TradesSemaphore.Release();
|
||||
}
|
||||
|
||||
private async Task ForgetRecentTrade(ulong tradeID) {
|
||||
await Utilities.SleepAsync(24 * 60 * 60 * 1000).ConfigureAwait(false);
|
||||
lock (RecentlyParsedTrades) {
|
||||
RecentlyParsedTrades.Remove(tradeID);
|
||||
RecentlyParsedTrades.TrimExcess();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ParseActiveTrades() {
|
||||
HashSet<Steam.TradeOffer> tradeOffers = Bot.ArchiWebHandler.GetTradeOffers();
|
||||
if (tradeOffers == null || tradeOffers.Count == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
lock (RecentlyParsedTrades) {
|
||||
tradeOffers.RemoveWhere(trade => RecentlyParsedTrades.Contains(trade.TradeOfferID));
|
||||
}
|
||||
|
||||
if (tradeOffers.Count == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (Steam.TradeOffer tradeOffer in tradeOffers) {
|
||||
lock (RecentlyParsedTrades) {
|
||||
RecentlyParsedTrades.Add(tradeOffer.TradeOfferID);
|
||||
}
|
||||
|
||||
ForgetRecentTrade(tradeOffer.TradeOfferID).Forget();
|
||||
}
|
||||
|
||||
await tradeOffers.ForEachAsync(ParseTrade).ConfigureAwait(false);
|
||||
await Bot.AcceptConfirmations(true, Confirmation.ConfirmationType.Trade).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user