From 668287a7e28d87dcf1e82dcdf2410665c5320a88 Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Mon, 10 Jun 2024 19:51:56 +0200 Subject: [PATCH] Fix issue where player names aren't saved --- RetainerTrack/Handlers/PersistenceContext.cs | 10 ++++++++-- RetainerTrack/RetainerTrack.csproj | 2 +- RetainerTrack/RetainerTrackPlugin.cs | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/RetainerTrack/Handlers/PersistenceContext.cs b/RetainerTrack/Handlers/PersistenceContext.cs index 848ea61..759e0b0 100644 --- a/RetainerTrack/Handlers/PersistenceContext.cs +++ b/RetainerTrack/Handlers/PersistenceContext.cs @@ -136,7 +136,7 @@ internal sealed class PersistenceContext { try { - var updates = mappings + var updates = mappings.DistinctBy(x => x.ContentId) .Where(mapping => mapping.ContentId != 0 && !string.IsNullOrEmpty(mapping.PlayerName)) .Where(mapping => { @@ -157,7 +157,13 @@ internal sealed class PersistenceContext using (var scope = _serviceProvider.CreateScope()) { using var dbContext = scope.ServiceProvider.GetRequiredService(); - dbContext.Players.AddRange(updates); + foreach (var update in updates) + { + if (!dbContext.Players.Any(x => x.LocalContentId == update.LocalContentId)) + dbContext.Players.AddRange(updates); + } + + dbContext.SaveChanges(); } foreach (var player in updates) diff --git a/RetainerTrack/RetainerTrack.csproj b/RetainerTrack/RetainerTrack.csproj index bff2685..6aa5fa9 100644 --- a/RetainerTrack/RetainerTrack.csproj +++ b/RetainerTrack/RetainerTrack.csproj @@ -2,7 +2,7 @@ net8.0-windows - 3.0 + 3.1 12.0 enable win-x64 diff --git a/RetainerTrack/RetainerTrackPlugin.cs b/RetainerTrack/RetainerTrackPlugin.cs index 0ea4687..0bc5ffe 100644 --- a/RetainerTrack/RetainerTrackPlugin.cs +++ b/RetainerTrack/RetainerTrackPlugin.cs @@ -37,7 +37,8 @@ internal sealed class RetainerTrackPlugin : IDalamudPlugin ServiceCollection serviceCollection = new(); serviceCollection.AddLogging(builder => builder.SetMinimumLevel(LogLevel.Trace) .ClearProviders() - .AddDalamudLogger(pluginLog)); + .AddDalamudLogger(pluginLog) + .AddFilter("Microsoft.EntityFrameworkCore", LogLevel.Warning)); serviceCollection.AddSingleton(this); serviceCollection.AddSingleton(pluginInterface); serviceCollection.AddSingleton(framework);