The app gets into a fail state when the user cannot proceed if the navigation fails. Also the events should be unsubscribed.
Here's a quick addition I tested under Windows...
void LoginWebViewNavigated(object sender, WebNavigatedEventArgs e)
{
LoginWebView.Navigating -= LoginWebNavigating;
LoginWebView.Navigated -= LoginWebViewNavigated;
if (e.Result != WebNavigationResult.Success)
{
#if WINDOWS
if (_timer != null && _timer.IsEnabled)
return;
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromSeconds(5);
_timer.Tick += (_, _) =>
{
MainThread.BeginInvokeOnMainThread(async () =>
{
// Let the user try the login button again...
await LoginFrame.TranslateTo(LoginFrame.X, this.Height, easing: Easing.Linear);
LoginFrame.IsVisible = false;
});
};
_timer.Start();
#endif
}
}