diff --git a/PKVault.Backend/db/services/SessionService.cs b/PKVault.Backend/db/services/SessionService.cs index 261051b1..b160dec6 100644 --- a/PKVault.Backend/db/services/SessionService.cs +++ b/PKVault.Backend/db/services/SessionService.cs @@ -65,7 +65,7 @@ public async Task StartNewSession(bool checkInitialActions, DataUpdateFlags? fla { StartTime = timeProvider.GetUtcNow().DateTime; - using var _ = log.Time("Starting new session"); + using var _ = log.Time($"Starting new session, checkInitialActions={checkInitialActions}"); Actions.Clear(); @@ -87,6 +87,7 @@ await Task.WhenAll( .ContextId.InstanceId; var hadDataToNormalize = await CheckDataToNormalize(scope, flags); + log.LogDebug($"Session - hadDataToNormalize={hadDataToNormalize}"); await CheckSaveToSynchronize(scope, flags); @@ -110,6 +111,8 @@ private async Task CheckDataToNormalize(IServiceScope scope, DataUpdateFla var dataNormalizeAction = scope.ServiceProvider.GetRequiredService(); var updateExternalPkmAction = scope.ServiceProvider.GetRequiredService(); + var hadDataToNormalize = false; + var dataToNormalizeInput = await dataNormalizeAction.HasDataToNormalize(); if (dataToNormalizeInput.ShouldRun) @@ -117,6 +120,8 @@ private async Task CheckDataToNormalize(IServiceScope scope, DataUpdateFla await actionService.DataNormalize(dataToNormalizeInput, scope, flags); } + hadDataToNormalize |= dataToNormalizeInput.ShouldRun; + try { var externalPkmsToUpdateInput = await updateExternalPkmAction.HasExternalPkmsToUpdate(); @@ -126,13 +131,14 @@ private async Task CheckDataToNormalize(IServiceScope scope, DataUpdateFla await actionService.UpdateExternalPkm(externalPkmsToUpdateInput, scope, flags); } - return externalPkmsToUpdateInput.ShouldRun; + hadDataToNormalize |= externalPkmsToUpdateInput.ShouldRun; } catch (Exception ex) { log.LogError(ex, "Exception during external-pkms check/update"); } - return false; + + return hadDataToNormalize; } private async Task CheckSaveToSynchronize(IServiceScope scope, DataUpdateFlags flags) @@ -158,15 +164,12 @@ private async Task CheckSaveToSynchronize(IServiceScope scope, DataUpdateFlags f */ private async Task CheckFirstRunAutoSave(IServiceScope scope, DataUpdateFlags flags) { - var savesLoaders = scope.ServiceProvider.GetRequiredService(); - var pkmVariantLoader = scope.ServiceProvider.GetRequiredService(); - - var hasAnyData = savesLoaders.GetAllLoaders().Length > 0 - || await pkmVariantLoader.Any(); + var hasAnyData = HasMainDb(); + log.LogDebug($"Check fresh start auto-save, hasAnyData={hasAnyData}"); if (!hasAnyData) { - log.LogInformation($"Fresh start detected - Session persisting & retarting"); + log.LogInformation($"Fresh start detected - Session persisting & restart"); await PersistSession(scope); await StartNewSession(checkInitialActions: false, flags); } diff --git a/PKVault.Backend/settings/routes/SettingsRoute.cs b/PKVault.Backend/settings/routes/SettingsRoute.cs index c6feaf74..1bdf00c1 100644 --- a/PKVault.Backend/settings/routes/SettingsRoute.cs +++ b/PKVault.Backend/settings/routes/SettingsRoute.cs @@ -43,7 +43,7 @@ public async Task> Edit([BindRequired] SettingsMutableDTO DataUpdateFlags flags = new(); - var (RestartSession, PersistSession, ScanSaves) = settingsService.GetUpdateDiff(settingsMutable, flags); + var (RestartSession, ScanSaves) = settingsService.GetUpdateDiff(settingsMutable, flags); if ((RestartSession || ScanSaves) && !sessionService.HasEmptyActionList()) { @@ -55,7 +55,7 @@ public async Task> Edit([BindRequired] SettingsMutableDTO throw new ArgumentException($"Language value not allowed: {settingsMutable.LANGUAGE}"); } - await settingsService.UpdateSettings(settingsMutable, RestartSession, PersistSession, ScanSaves, flags); + await settingsService.UpdateSettings(settingsMutable, RestartSession, ScanSaves, flags); return await dataService.CreateDataFromUpdateFlags(flags); } diff --git a/PKVault.Backend/settings/services/SettingsService.cs b/PKVault.Backend/settings/services/SettingsService.cs index fe498525..d44382b6 100644 --- a/PKVault.Backend/settings/services/SettingsService.cs +++ b/PKVault.Backend/settings/services/SettingsService.cs @@ -6,11 +6,11 @@ public interface ISettingsService { - public Task UpdateSettings(SettingsMutableDTO settingsMutable, bool restartSession, bool persistSession, bool scanSaves, DataUpdateFlags flags); + public Task UpdateSettings(SettingsMutableDTO settingsMutable, bool restartSession, bool scanSaves, DataUpdateFlags flags); public Task GetSettingsWithUserId(); public SettingsDTO GetSettings(); public SettingsDTO RefreshSettings(DataUpdateFlags flags); - public (bool RestartSession, bool PersistSession, bool ScanSaves) GetUpdateDiff(SettingsMutableDTO updatedSettingsMutable, DataUpdateFlags flags); + public (bool RestartSession, bool ScanSaves) GetUpdateDiff(SettingsMutableDTO updatedSettingsMutable, DataUpdateFlags flags); } /** @@ -32,7 +32,7 @@ public class SettingsService(IServiceProvider sp) : ISettingsService private SettingsDTO? BaseSettings; - public async Task UpdateSettings(SettingsMutableDTO settingsMutable, bool restartSession, bool persistSession, bool scanSaves, DataUpdateFlags flags) + public async Task UpdateSettings(SettingsMutableDTO settingsMutable, bool restartSession, bool scanSaves, DataUpdateFlags flags) { await fileIOService.WriteJSONFile( FilePath, @@ -52,12 +52,6 @@ await fileIOService.WriteJSONFile( UserId = userId }; - if (persistSession && !sessionService.HasEmptyActionList()) - { - await sessionService.PersistSession(scope); - await sessionService.StartNewSession(checkInitialActions: false, flags); - } - if (restartSession) { await sessionService.StartNewSession(checkInitialActions: true, flags); @@ -80,7 +74,7 @@ await fileIOService.WriteJSONFile( * * Returns if session should be restarted or persisted. */ - public (bool RestartSession, bool PersistSession, bool ScanSaves) GetUpdateDiff(SettingsMutableDTO updatedSettingsMutable, DataUpdateFlags flags) + public (bool RestartSession, bool ScanSaves) GetUpdateDiff(SettingsMutableDTO updatedSettingsMutable, DataUpdateFlags flags) { var currentSettingsMutable = ReadBaseSettings().SettingsMutable; @@ -97,7 +91,6 @@ static string GetSavePathOverridesChecksum(IDictionary? savePathOv ]); bool restartSession = false; - bool persistSession = false; bool scanSaves = false; var hasPathChanges = currentSettingsMutable.DB_PATH != updatedSettingsMutable.DB_PATH @@ -106,12 +99,6 @@ static string GetSavePathOverridesChecksum(IDictionary? savePathOv || GetArrayChecksum(currentSettingsMutable.SAVE_GLOBS) != GetArrayChecksum(updatedSettingsMutable.SAVE_GLOBS) || GetArrayChecksum(currentSettingsMutable.PKM_EXTERNAL_GLOBS) != GetArrayChecksum(updatedSettingsMutable.PKM_EXTERNAL_GLOBS); - var hasFirstLanguageChange = currentSettingsMutable.LANGUAGE == null && updatedSettingsMutable.LANGUAGE != null; - if (hasFirstLanguageChange) - { - persistSession = true; - } - if (hasPathChanges) { restartSession = true; @@ -150,7 +137,7 @@ static string GetSavePathOverridesChecksum(IDictionary? savePathOv scanSaves = true; } - return (restartSession, persistSession, scanSaves); + return (restartSession, scanSaves); } public async Task GetSettingsWithUserId()