// runs only when not restored from state
public override async Task OnStartAsync(StartKind startKind, IActivatedEventArgs args)
{
var launch = args as LaunchActivatedEventArgs;
if (launch?.PreviousExecutionState == ApplicationExecutionState.NotRunning
|| launch?.PreviousExecutionState == ApplicationExecutionState.Terminated
|| launch?.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
{
if (Shell.Instance.ViewModel.CurrentUser == null)
{
var userAccountDatabase = new UserAccountDatabase(new SQLitePlatformWinRT(), DatabaseWinRTHelpers.GetWinRTDatabasePath(StringConstants.UserDatabase));
if (await userAccountDatabase.HasAccounts())
{
if (await userAccountDatabase.HasDefaultAccounts())
{
try
{
var result = await Shell.Instance.ViewModel.LoginDefaultUser();
NavigationService.Navigate(result ? typeof(Views.MainPage) : typeof(Views.AccountPage));
}
catch (Exception)
{
// error happened, send them to account page so we can check on it.
NavigationService.Navigate(typeof(Views.AccountPage));
}
}
else
{
NavigationService.Navigate(typeof(Views.AccountPage));
}
}
else
{
NavigationService.Navigate(typeof(Views.LoginPage));
}
}
else
{
NavigationService.Navigate(typeof(Views.MainPage));
}
}
await Task.CompletedTask;
}