This commit is contained in:
Archi
2023-06-10 20:22:46 +02:00
13 changed files with 45 additions and 52 deletions

View File

@@ -19,7 +19,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.5.2
uses: actions/checkout@v3.5.3
with:
submodules: recursive

View File

@@ -12,7 +12,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.5.2
uses: actions/checkout@v3.5.3
- name: Run Qodana scan
uses: JetBrains/qodana-action@v2023.1.0

View File

@@ -17,15 +17,15 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.5.2
uses: actions/checkout@v3.5.3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.5.0
uses: docker/setup-buildx-action@v2.6.0
- name: Build ${{ matrix.configuration }} Docker image from ${{ matrix.file }}
uses: docker/build-push-action@v4.0.0
uses: docker/build-push-action@v4.1.0
with:
context: .
file: ${{ matrix.file }}

View File

@@ -15,22 +15,22 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.5.2
uses: actions/checkout@v3.5.3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.5.0
uses: docker/setup-buildx-action@v2.6.0
- name: Login to ghcr.io
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -55,7 +55,7 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile.Service
uses: docker/build-push-action@v4.0.0
uses: docker/build-push-action@v4.1.0
with:
context: .
file: Dockerfile.Service

View File

@@ -16,22 +16,22 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.5.2
uses: actions/checkout@v3.5.3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.5.0
uses: docker/setup-buildx-action@v2.6.0
- name: Login to ghcr.io
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -55,7 +55,7 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile
uses: docker/build-push-action@v4.0.0
uses: docker/build-push-action@v4.1.0
with:
context: .
platforms: ${{ env.PLATFORMS }}

View File

@@ -16,22 +16,22 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.5.2
uses: actions/checkout@v3.5.3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.5.0
uses: docker/setup-buildx-action@v2.6.0
- name: Login to ghcr.io
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -56,7 +56,7 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile
uses: docker/build-push-action@v4.0.0
uses: docker/build-push-action@v4.1.0
with:
context: .
platforms: ${{ env.PLATFORMS }}

View File

@@ -16,7 +16,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.5.2
uses: actions/checkout@v3.5.3
with:
submodules: recursive
@@ -78,7 +78,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.5.2
uses: actions/checkout@v3.5.3
- name: Setup .NET Core
uses: actions/setup-dotnet@v3.2.0
@@ -417,7 +417,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.5.2
uses: actions/checkout@v3.5.3
- name: Download ASF-generic artifact from ubuntu-latest
uses: actions/download-artifact@v3.0.2

View File

@@ -10,7 +10,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.5.2
uses: actions/checkout@v3.5.3
with:
submodules: recursive
token: ${{ secrets.ARCHIBOT_GITHUB_TOKEN }}

2
ASF-ui

Submodule ASF-ui updated: 899f7630aa...2087d1701d

View File

@@ -408,13 +408,11 @@ public sealed class Trading : IDisposable {
HandledTradeOfferIDs.IntersectWith(tradeOffers.Select(static tradeOffer => tradeOffer.TradeOfferID));
}
IEnumerable<Task<ParseTradeResult?>> tasks = tradeOffers.Where(tradeOffer => !HandledTradeOfferIDs.Contains(tradeOffer.TradeOfferID)).Select(ParseTrade);
IList<ParseTradeResult?> results = await Utilities.InParallel(tasks).ConfigureAwait(false);
HashSet<ParseTradeResult> validTradeResults = results.Where(static result => result != null).Select(static result => result!).ToHashSet();
IEnumerable<Task<ParseTradeResult>> tasks = tradeOffers.Where(tradeOffer => (tradeOffer.State == ETradeOfferState.Active) && HandledTradeOfferIDs.Add(tradeOffer.TradeOfferID)).Select(ParseTrade);
IList<ParseTradeResult> results = await Utilities.InParallel(tasks).ConfigureAwait(false);
if (Bot.HasMobileAuthenticator) {
HashSet<ParseTradeResult> mobileTradeResults = validTradeResults.Where(static result => result is { Result: ParseTradeResult.EResult.Accepted, Confirmed: false }).ToHashSet();
HashSet<ParseTradeResult> mobileTradeResults = results.Where(static result => result is { Result: ParseTradeResult.EResult.Accepted, Confirmed: false }).ToHashSet();
if (mobileTradeResults.Count > 0) {
HashSet<ulong> mobileTradeOfferIDs = mobileTradeResults.Select(static tradeOffer => tradeOffer.TradeOfferID).ToHashSet();
@@ -431,29 +429,16 @@ public sealed class Trading : IDisposable {
}
}
if (validTradeResults.Count > 0) {
await PluginsCore.OnBotTradeOfferResults(Bot, validTradeResults).ConfigureAwait(false);
if (results.Count > 0) {
await PluginsCore.OnBotTradeOfferResults(Bot, results as IReadOnlyCollection<ParseTradeResult> ?? results.ToHashSet()).ConfigureAwait(false);
}
return validTradeResults.Any(result => result is { Result: ParseTradeResult.EResult.Accepted, Confirmed: true } && (result.ItemsToReceive?.Any(receivedItem => Bot.BotConfig.LootableTypes.Contains(receivedItem.Type)) == true));
return results.Any(result => result is { Result: ParseTradeResult.EResult.Accepted, Confirmed: true } && (result.ItemsToReceive?.Any(receivedItem => Bot.BotConfig.LootableTypes.Contains(receivedItem.Type)) == true));
}
private async Task<ParseTradeResult?> ParseTrade(TradeOffer tradeOffer) {
private async Task<ParseTradeResult> ParseTrade(TradeOffer tradeOffer) {
ArgumentNullException.ThrowIfNull(tradeOffer);
if (tradeOffer.State != ETradeOfferState.Active) {
Bot.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsInvalid, tradeOffer.State));
return null;
}
if (!HandledTradeOfferIDs.Add(tradeOffer.TradeOfferID)) {
// We've already seen this trade, this should not happen
Bot.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.IgnoringTrade, tradeOffer.TradeOfferID));
return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.Ignored, false, tradeOffer.ItemsToGive, tradeOffer.ItemsToReceive);
}
ParseTradeResult.EResult result = await ShouldAcceptTrade(tradeOffer).ConfigureAwait(false);
bool tradeRequiresMobileConfirmation = false;
@@ -481,6 +466,9 @@ public sealed class Trading : IDisposable {
goto case ParseTradeResult.EResult.TryAgain;
}
// We do not expect to see this trade offer again, so retry it if needed
HandledTradeOfferIDs.Remove(tradeOffer.TradeOfferID);
if (tradeOffer.ItemsToReceive.Sum(static item => item.Amount) > tradeOffer.ItemsToGive.Sum(static item => item.Amount)) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.BotAcceptedDonationTrade, tradeOffer.TradeOfferID));
}
@@ -498,20 +486,25 @@ public sealed class Trading : IDisposable {
goto case ParseTradeResult.EResult.TryAgain;
}
// We do not expect to see this trade offer again, so retry it if needed
HandledTradeOfferIDs.Remove(tradeOffer.TradeOfferID);
break;
case ParseTradeResult.EResult.Ignored:
case ParseTradeResult.EResult.Rejected:
// We expect to see this trade offer in the future, so we keep it in HandledTradeOfferIDs if it wasn't removed as part of other result
Bot.ArchiLogger.LogGenericInfo(string.Format(CultureInfo.CurrentCulture, Strings.IgnoringTrade, tradeOffer.TradeOfferID));
break;
case ParseTradeResult.EResult.TryAgain:
// We expect to see this trade offer again and we intend to retry it
HandledTradeOfferIDs.Remove(tradeOffer.TradeOfferID);
goto case ParseTradeResult.EResult.Ignored;
default:
Bot.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.WarningUnknownValuePleaseReport, nameof(result), result));
return null;
return new ParseTradeResult(tradeOffer.TradeOfferID, ParseTradeResult.EResult.Ignored, false, tradeOffer.ItemsToGive, tradeOffer.ItemsToReceive);
}
return new ParseTradeResult(tradeOffer.TradeOfferID, result, tradeRequiresMobileConfirmation, tradeOffer.ItemsToGive, tradeOffer.ItemsToReceive);

View File

@@ -1,6 +1,6 @@
<Project>
<PropertyGroup>
<Version>5.4.7.1</Version>
<Version>5.4.7.2</Version>
</PropertyGroup>
<PropertyGroup>

View File

@@ -1,12 +1,12 @@
<Project>
<ItemGroup>
<PackageVersion Include="AngleSharp.XPath" Version="2.0.2" />
<PackageVersion Include="AngleSharp.XPath" Version="2.0.3" />
<PackageVersion Include="ConfigureAwaitChecker.Analyzer" Version="5.0.0.1" />
<PackageVersion Include="CryptSharpStandard" Version="1.0.0" />
<PackageVersion Include="Humanizer" Version="2.14.1" />
<PackageVersion Include="JetBrains.Annotations" Version="2022.3.1" />
<PackageVersion Include="Markdig.Signed" Version="0.31.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.6.1" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.6.2" />
<PackageVersion Include="MSTest.TestAdapter" Version="3.0.4" />
<PackageVersion Include="MSTest.TestFramework" Version="3.0.4" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />

2
wiki

Submodule wiki updated: 1906cebbef...6683f64884