diff --git a/ArchiSteamFarm/IPC.cs b/ArchiSteamFarm/IPC.cs index d6361a1ed..19e794e31 100644 --- a/ArchiSteamFarm/IPC.cs +++ b/ArchiSteamFarm/IPC.cs @@ -148,14 +148,31 @@ namespace ArchiSteamFarm { return false; } - string botName = WebUtility.UrlDecode(arguments[argumentsIndex]); + string botNames = WebUtility.UrlDecode(arguments[argumentsIndex]); - if (!Bot.Bots.TryGetValue(botName, out Bot bot)) { - await ResponseJsonObject(request, response, new GenericResponse(false, string.Format(Strings.BotNotFound, botName)), HttpStatusCode.BadRequest).ConfigureAwait(false); + HashSet bots = Bot.GetBots(botNames); + if ((bots == null) || (bots.Count == 0)) { + await ResponseJsonObject(request, response, new GenericResponse(false, string.Format(Strings.BotNotFound, botNames)), HttpStatusCode.BadRequest).ConfigureAwait(false); return true; } - if (!await bot.DeleteAllRelatedFiles().ConfigureAwait(false)) { + IEnumerable> tasks = bots.Select(bot => bot.DeleteAllRelatedFiles()); + ICollection results; + + switch (Program.GlobalConfig.OptimizationMode) { + case GlobalConfig.EOptimizationMode.MinMemoryUsage: + results = new List(bots.Count); + foreach (Task task in tasks) { + results.Add(await task.ConfigureAwait(false)); + } + + break; + default: + results = await Task.WhenAll(tasks).ConfigureAwait(false); + break; + } + + if (results.Any(result => !result)) { await ResponseJsonObject(request, response, new GenericResponse(false, "Removing one or more files failed, check ASF log for details"), HttpStatusCode.BadRequest).ConfigureAwait(false); return true; }