ArchiSteamFarm.MobileAuthenticator.HandleConfirmations C# (CSharp) Метод

HandleConfirmations() приватный Метод

private HandleConfirmations ( HashSet confirmations, bool accept ) : Task
confirmations HashSet
accept bool
Результат Task
		internal async Task<bool> HandleConfirmations(HashSet<Confirmation> confirmations, bool accept) {
			if ((confirmations == null) || (confirmations.Count == 0)) {
				Bot.ArchiLogger.LogNullError(nameof(confirmations));
				return false;
			}

			if (!HasCorrectDeviceID) {
				Bot.ArchiLogger.LogGenericWarning("Can't execute properly due to invalid DeviceID!");
				return false;
			}

			await ConfirmationsSemaphore.WaitAsync().ConfigureAwait(false);

			try {
				uint time = await GetSteamTime().ConfigureAwait(false);
				if (time == 0) {
					Bot.ArchiLogger.LogNullError(nameof(time));
					return false;
				}

				string confirmationHash = GenerateConfirmationKey(time, "conf");
				if (string.IsNullOrEmpty(confirmationHash)) {
					Bot.ArchiLogger.LogNullError(nameof(confirmationHash));
					return false;
				}

				bool? result = await Bot.ArchiWebHandler.HandleConfirmations(DeviceID, confirmationHash, time, confirmations, accept).ConfigureAwait(false);
				if (!result.HasValue) { // Request timed out
					return false;
				}

				if (result.Value) { // Request succeeded
					return true;
				}

				// Our multi request failed, this is almost always Steam fuckup that happens randomly
				// In this case, we'll accept all pending confirmations one-by-one, synchronously (as Steam can't handle them in parallel)
				// We totally ignore actual result returned by those calls, abort only if request timed out

				foreach (Confirmation confirmation in confirmations) {
					bool? confirmationResult = await Bot.ArchiWebHandler.HandleConfirmation(DeviceID, confirmationHash, time, confirmation.ID, confirmation.Key, accept).ConfigureAwait(false);
					if (!confirmationResult.HasValue) {
						return false;
					}
				}

				return true;
			} finally {
				ConfirmationsSemaphore.Release();
			}
		}