Skip to content

Commit

Permalink
Adjusting startup behaviour
Browse files Browse the repository at this point in the history
  • Loading branch information
nickrandolph committed Jul 2, 2018
1 parent 16a9d64 commit e055026
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions MvvmCross/ViewModels/MvxAppStart.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,25 +29,25 @@ public void Start(object hint = null)
if (Interlocked.CompareExchange(ref startHasCommenced, 1, 0) == 1)
return;

Startup(hint).GetAwaiter().GetResult();
StartAsync(hint).GetAwaiter().GetResult();
}

public async Task StartAsync(object hint = null)
{
var applicationHint = ApplicationStartup(hint);
var applicationHint = await ApplicationStartup(hint);
if (applicationHint != null)
{
MvxLog.Instance.Trace("Hint ignored in default MvxAppStart");
}

NavigateToFirstViewModel(applicationHint);
await NavigateToFirstViewModel(applicationHint);
}

protected abstract void NavigateToFirstViewModel(object hint = null);
protected abstract Task NavigateToFirstViewModel(object hint = null);

protected virtual object ApplicationStartup(object hint = null)
protected virtual async Task<object> ApplicationStartup(object hint = null)
{
Application.Startup();
await Application.Startup();
return hint;
}

Expand All @@ -72,11 +72,11 @@ public MvxAppStart(IMvxApplication application, IMvxNavigationService navigation
{
}

protected override void NavigateToFirstViewModel(object hint = null)
protected override async Task NavigateToFirstViewModel(object hint = null)
{
try
{
NavigationService.Navigate<TViewModel>().GetAwaiter().GetResult();
await NavigationService.Navigate<TViewModel>();
}
catch (System.Exception exception)
{
Expand All @@ -91,16 +91,16 @@ public MvxAppStart(IMvxApplication application, IMvxNavigationService navigation
{
}

protected override object ApplicationStartup(object hint = null)
protected override async Task<object> ApplicationStartup(object hint = null)
{
var applicationHint = base.ApplicationStartup(hint);
var applicationHint = await base.ApplicationStartup(hint);
if (applicationHint is TParameter parameter && Application is IMvxApplication<TParameter> typedApplication)
return typedApplication.Startup(parameter);
else
return applicationHint;
}

protected override void NavigateToFirstViewModel(object hint = null)
protected override async Task NavigateToFirstViewModel(object hint = null)
{
try
{
Expand All @@ -109,7 +109,7 @@ protected override void NavigateToFirstViewModel(object hint = null)
else
{
MvxLog.Instance.Trace($"Hint is not matching type of {nameof(TParameter)}. Doing navigation without typed parameter instead.");
base.NavigateToFirstViewModel(hint);
await base.NavigateToFirstViewModel(hint);
}
}
catch (System.Exception exception)
Expand Down

0 comments on commit e055026

Please sign in to comment.