Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions PKVault.Backend/db/services/SessionService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand All @@ -87,6 +87,7 @@ await Task.WhenAll(
.ContextId.InstanceId;

var hadDataToNormalize = await CheckDataToNormalize(scope, flags);
log.LogDebug($"Session - hadDataToNormalize={hadDataToNormalize}");

await CheckSaveToSynchronize(scope, flags);

Expand All @@ -110,13 +111,17 @@ private async Task<bool> CheckDataToNormalize(IServiceScope scope, DataUpdateFla
var dataNormalizeAction = scope.ServiceProvider.GetRequiredService<DataNormalizeAction>();
var updateExternalPkmAction = scope.ServiceProvider.GetRequiredService<UpdateExternalPkmAction>();

var hadDataToNormalize = false;

var dataToNormalizeInput = await dataNormalizeAction.HasDataToNormalize();

if (dataToNormalizeInput.ShouldRun)
{
await actionService.DataNormalize(dataToNormalizeInput, scope, flags);
}

hadDataToNormalize |= dataToNormalizeInput.ShouldRun;

try
{
var externalPkmsToUpdateInput = await updateExternalPkmAction.HasExternalPkmsToUpdate();
Expand All @@ -126,13 +131,14 @@ private async Task<bool> 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)
Expand All @@ -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<ISavesLoadersService>();
var pkmVariantLoader = scope.ServiceProvider.GetRequiredService<IPkmVariantLoader>();

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);
}
Expand Down
4 changes: 2 additions & 2 deletions PKVault.Backend/settings/routes/SettingsRoute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public async Task<ActionResult<DataDTO>> 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())
{
Expand All @@ -55,7 +55,7 @@ public async Task<ActionResult<DataDTO>> 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);
}
Expand Down
23 changes: 5 additions & 18 deletions PKVault.Backend/settings/services/SettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<SettingsDTO> 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);
}

/**
Expand All @@ -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,
Expand All @@ -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);
Expand All @@ -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;

Expand All @@ -97,7 +91,6 @@ static string GetSavePathOverridesChecksum(IDictionary<uint, string>? savePathOv
]);

bool restartSession = false;
bool persistSession = false;
bool scanSaves = false;

var hasPathChanges = currentSettingsMutable.DB_PATH != updatedSettingsMutable.DB_PATH
Expand All @@ -106,12 +99,6 @@ static string GetSavePathOverridesChecksum(IDictionary<uint, string>? 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;
Expand Down Expand Up @@ -150,7 +137,7 @@ static string GetSavePathOverridesChecksum(IDictionary<uint, string>? savePathOv
scanSaves = true;
}

return (restartSession, persistSession, scanSaves);
return (restartSession, scanSaves);
}

public async Task<SettingsDTO> GetSettingsWithUserId()
Expand Down
Loading