Making sure that server is terminated even though there are no accounts.
This commit is contained in:
@@ -114,67 +114,62 @@ namespace Wino
|
|||||||
var deferral = e.GetDeferral();
|
var deferral = e.GetDeferral();
|
||||||
|
|
||||||
// Wino should notify user on app close if:
|
// Wino should notify user on app close if:
|
||||||
// 1. User has at least 1 registered account.
|
// 1. Startup behavior is not Enabled.
|
||||||
// 2. Startup behavior is not Enabled.
|
// 2. Server terminate behavior is set to Terminate.
|
||||||
// 3. Server terminate behavior is set to Terminate.
|
|
||||||
|
|
||||||
var accountService = Services.GetService<IAccountService>();
|
// User has some accounts. Check if Wino Server runs on system startup.
|
||||||
|
|
||||||
var accounts = await accountService.GetAccountsAsync();
|
var dialogService = Services.GetService<IDialogService>();
|
||||||
|
var startupBehaviorService = Services.GetService<IStartupBehaviorService>();
|
||||||
|
var preferencesService = Services.GetService<IPreferencesService>();
|
||||||
|
|
||||||
if (accounts.Count > 0)
|
var currentStartupBehavior = await startupBehaviorService.GetCurrentStartupBehaviorAsync();
|
||||||
|
|
||||||
|
bool? isGoToAppPreferencesRequested = null;
|
||||||
|
|
||||||
|
if (preferencesService.ServerTerminationBehavior == ServerBackgroundMode.Terminate)
|
||||||
{
|
{
|
||||||
// User has some accounts. Check if Wino Server runs on system startup.
|
// Starting the server is fine, but check if server termination behavior is set to terminate.
|
||||||
|
// This state will kill the server once the app is terminated.
|
||||||
|
|
||||||
var dialogService = Services.GetService<IDialogService>();
|
isGoToAppPreferencesRequested = await _dialogService.ShowWinoCustomMessageDialogAsync(Translator.AppCloseBackgroundSynchronizationWarningTitle,
|
||||||
var startupBehaviorService = Services.GetService<IStartupBehaviorService>();
|
$"{Translator.AppCloseTerminateBehaviorWarningMessageFirstLine}\n{Translator.AppCloseTerminateBehaviorWarningMessageSecondLine}\n\n{Translator.AppCloseTerminateBehaviorWarningMessageThirdLine}",
|
||||||
var preferencesService = Services.GetService<IPreferencesService>();
|
Translator.Buttons_Yes,
|
||||||
|
WinoCustomMessageDialogIcon.Warning,
|
||||||
|
Translator.Buttons_No,
|
||||||
|
"DontAskTerminateServerBehavior");
|
||||||
|
}
|
||||||
|
|
||||||
var currentStartupBehavior = await startupBehaviorService.GetCurrentStartupBehaviorAsync();
|
if (isGoToAppPreferencesRequested == null && currentStartupBehavior != StartupBehaviorResult.Enabled)
|
||||||
|
{
|
||||||
|
// Startup behavior is not enabled.
|
||||||
|
|
||||||
bool? isGoToAppPreferencesRequested = null;
|
isGoToAppPreferencesRequested = await dialogService.ShowWinoCustomMessageDialogAsync(Translator.AppCloseBackgroundSynchronizationWarningTitle,
|
||||||
|
$"{Translator.AppCloseStartupLaunchDisabledWarningMessageFirstLine}\n{Translator.AppCloseStartupLaunchDisabledWarningMessageSecondLine}\n\n{Translator.AppCloseStartupLaunchDisabledWarningMessageThirdLine}",
|
||||||
|
Translator.Buttons_Yes,
|
||||||
|
WinoCustomMessageDialogIcon.Warning,
|
||||||
|
Translator.Buttons_No,
|
||||||
|
"DontAskDisabledStartup");
|
||||||
|
}
|
||||||
|
|
||||||
if (preferencesService.ServerTerminationBehavior == ServerBackgroundMode.Terminate)
|
if (isGoToAppPreferencesRequested == true)
|
||||||
|
{
|
||||||
|
WeakReferenceMessenger.Default.Send(new NavigateAppPreferencesRequested());
|
||||||
|
e.Handled = true;
|
||||||
|
}
|
||||||
|
else if (preferencesService.ServerTerminationBehavior == ServerBackgroundMode.Terminate)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
// Starting the server is fine, but check if server termination behavior is set to terminate.
|
var isServerKilled = await _appServiceConnectionManager.GetResponseAsync<bool, TerminateServerRequested>(new TerminateServerRequested());
|
||||||
// This state will kill the server once the app is terminated.
|
|
||||||
|
|
||||||
isGoToAppPreferencesRequested = await _dialogService.ShowWinoCustomMessageDialogAsync(Translator.AppCloseBackgroundSynchronizationWarningTitle,
|
isServerKilled.ThrowIfFailed();
|
||||||
$"{Translator.AppCloseTerminateBehaviorWarningMessageFirstLine}\n{Translator.AppCloseTerminateBehaviorWarningMessageSecondLine}\n\n{Translator.AppCloseTerminateBehaviorWarningMessageThirdLine}",
|
|
||||||
Translator.Buttons_Yes,
|
Log.Information("Server is killed.");
|
||||||
WinoCustomMessageDialogIcon.Warning,
|
|
||||||
Translator.Buttons_No,
|
|
||||||
"DontAskTerminateServerBehavior");
|
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
if (isGoToAppPreferencesRequested == null && currentStartupBehavior != StartupBehaviorResult.Enabled)
|
|
||||||
{
|
{
|
||||||
// Startup behavior is not enabled.
|
Log.Error(ex, "Failed to kill server.");
|
||||||
|
|
||||||
isGoToAppPreferencesRequested = await dialogService.ShowWinoCustomMessageDialogAsync(Translator.AppCloseBackgroundSynchronizationWarningTitle,
|
|
||||||
$"{Translator.AppCloseStartupLaunchDisabledWarningMessageFirstLine}\n{Translator.AppCloseStartupLaunchDisabledWarningMessageSecondLine}\n\n{Translator.AppCloseStartupLaunchDisabledWarningMessageThirdLine}",
|
|
||||||
Translator.Buttons_Yes,
|
|
||||||
WinoCustomMessageDialogIcon.Warning,
|
|
||||||
Translator.Buttons_No,
|
|
||||||
"DontAskDisabledStartup");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isGoToAppPreferencesRequested == true)
|
|
||||||
{
|
|
||||||
WeakReferenceMessenger.Default.Send(new NavigateAppPreferencesRequested());
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
else if (preferencesService.ServerTerminationBehavior == ServerBackgroundMode.Terminate)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var isServerKilled = await _appServiceConnectionManager.GetResponseAsync<bool, TerminateServerRequested>(new TerminateServerRequested());
|
|
||||||
Log.Information("Server is killed.");
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.Error(ex, "Failed to kill server.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user