private async void OnLoaded(object sender, RoutedEventArgs e) { var multipleInstances = false; var showSettings = false; try { modelHelpers.Gallifrey.Initialise(); } catch (MissingJiraConfigException) { showSettings = true; } catch (JiraConnectionException) { showSettings = true; } catch (MultipleGallifreyRunningException) { multipleInstances = true; } if (multipleInstances) { modelHelpers.Gallifrey.TrackEvent(TrackingType.MultipleInstancesRunning); await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Multiple Instances", "You Can Only Have One Instance Of Gallifrey Running At A Time\nPlease Close The Other Instance"); modelHelpers.CloseApp(); } else if (showSettings) { modelHelpers.Gallifrey.TrackEvent(TrackingType.SettingsMissing); await modelHelpers.OpenFlyout(new Flyouts.Settings(modelHelpers)); if (!modelHelpers.Gallifrey.JiraConnection.IsConnected) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Connection Required", "You Must Have A Working Jira Connection To Use Gallifrey"); modelHelpers.CloseApp(); } modelHelpers.RefreshModel(); } if (modelHelpers.Gallifrey.VersionControl.IsAutomatedDeploy && modelHelpers.Gallifrey.VersionControl.IsFirstRun) { var changeLog = modelHelpers.Gallifrey.GetChangeLog(XDocument.Parse(Properties.Resources.ChangeLog)).Where(x => x.NewVersion).ToList(); if (changeLog.Any()) { await modelHelpers.OpenFlyout(new Flyouts.ChangeLog(changeLog)); } } exceptionlessHelper.RegisterExceptionless(); }
private async Task MainWindow_OnLoaded() { var result = await progressDialogHelper.Do(Initialise, "Initialising Gallifrey", true, true); if (result.Status == ProgressResult.JiraHelperStatus.Cancelled) { await modelHelpers.ShowMessageAsync("Gallifrey Not Initialised", "Gallifrey Initialisation Was Cancelled", MessageDialogStyle.Affirmative, new MetroDialogSettings { AffirmativeButtonText = "Close Gallifrey" }); forceClosed = true; modelHelpers.CloseApp(); } var checkedUpdate = false; if (result.RetVal != InitialiseResult.DebuggerNotAttached && result.RetVal != InitialiseResult.MultipleGallifreyRunning && result.RetVal != InitialiseResult.NoInternetConnection) { await PerformUpdate(UpdateType.StartUp); checkedUpdate = true; } if (result.RetVal == InitialiseResult.DebuggerNotAttached) { await modelHelpers.ShowMessageAsync("Debugger Not Running", "It Looks Like Your Running Without Auto-Update\nPlease Use The Installed Shortcut To Start Gallifrey Or Download Again From gallifrey.blyth.me.uk", MessageDialogStyle.Affirmative, new MetroDialogSettings { AffirmativeButtonText = "Close Gallifrey" }); forceClosed = true; modelHelpers.CloseApp(); } else if (result.RetVal == InitialiseResult.MultipleGallifreyRunning) { modelHelpers.Gallifrey.TrackEvent(TrackingType.MultipleInstancesRunning); await modelHelpers.ShowMessageAsync("Multiple Instances", "You Can Only Have One Instance Of Gallifrey Running At A Time", MessageDialogStyle.Affirmative, new MetroDialogSettings { AffirmativeButtonText = "Close Gallifrey" }); forceClosed = true; modelHelpers.CloseApp(); } else if (result.RetVal == InitialiseResult.NoInternetConnection) { modelHelpers.Gallifrey.TrackEvent(TrackingType.NoInternet); var userChoice = await modelHelpers.ShowMessageAsync("No Internet Connection", "Gallifrey Requires An Active Internet Connection To Work.", MessageDialogStyle.AffirmativeAndNegative, new MetroDialogSettings { AffirmativeButtonText = "Check Again", NegativeButtonText = "Close Now" }); if (userChoice == MessageDialogResult.Affirmative) { await MainWindow_OnLoaded(); return; } forceClosed = true; modelHelpers.CloseApp(); } else if (result.RetVal == InitialiseResult.NewUser) { modelHelpers.Gallifrey.TrackEvent(TrackingType.SettingsMissing); await modelHelpers.ShowMessageAsync("Welcome To Gallifrey", "You Have No Settings In Gallifrey\n\nTo Get Started, We Need Your Jira Details"); await NewUserOnBoarding(); modelHelpers.Gallifrey.Settings.InternalSettings.SetNewUser(false); modelHelpers.Gallifrey.SaveSettings(false, false); await MainWindow_OnLoaded(); return; } else if (result.RetVal == InitialiseResult.JiraConnectionError || result.RetVal == InitialiseResult.TempoConnectionError || result.RetVal == InitialiseResult.MissingConfig) { modelHelpers.Gallifrey.TrackEvent(TrackingType.ConnectionError); var message = string.Empty; switch (result.RetVal) { case InitialiseResult.JiraConnectionError: message = "We Were Unable To Authenticate To Jira, Please Confirm Login Details"; break; case InitialiseResult.TempoConnectionError: message = "We Were Unable To Authenticate To Tempo, Please Confirm Login Details"; break; case InitialiseResult.MissingConfig: message = "There Are Missing Configuration Items For Jira/Tempo, Please Confirm Login Details"; break; } var userUpdate = await modelHelpers.ShowMessageAsync("Login Failure", message, MessageDialogStyle.AffirmativeAndNegativeAndSingleAuxiliary, new MetroDialogSettings { AffirmativeButtonText = "Update Details", NegativeButtonText = "Cancel", FirstAuxiliaryButtonText = "Retry" }); switch (userUpdate) { case MessageDialogResult.Negative: await modelHelpers.ShowMessageAsync("Come Back Soon", "Without A Correctly Configured Jira Connection Gallifrey Will Close, Please Come Back Soon!"); modelHelpers.CloseApp(); break; case MessageDialogResult.FirstAuxiliary: await MainWindow_OnLoaded(); return; default: await UserLoginFailure(result.RetVal == InitialiseResult.TempoConnectionError); await MainWindow_OnLoaded(); return; } } if (!checkedUpdate) { await PerformUpdate(UpdateType.StartUp); } if (modelHelpers.Gallifrey.VersionControl.IsAutomatedDeploy && modelHelpers.Gallifrey.VersionControl.IsFirstRun) { var changeLog = modelHelpers.Gallifrey.GetChangeLog(XDocument.Parse(Properties.Resources.ChangeLog)).Where(x => x.NewVersion).ToList(); if (changeLog.Any()) { await modelHelpers.OpenFlyout(new Flyouts.ChangeLog(changeLog)); } } exceptionlessHelper.RegisterExceptionless(); exceptionlessHelper.TrackFeature("Initialised"); updateHeartbeat.Enabled = true; idleDetectionHeartbeat.Enabled = true; flyoutOpenCheck.Enabled = true; modelHelpers.Gallifrey.NoActivityEvent += GallifreyOnNoActivityEvent; modelHelpers.Gallifrey.ExportPromptEvent += GallifreyOnExportPromptEvent; modelHelpers.Gallifrey.SettingsChanged += GallifreyOnSettingsChanged; SystemEvents.SessionSwitch += SessionSwitchHandler; }
private async void MainWindow_OnLoaded(object sender, RoutedEventArgs e) { await PerformUpdate(UpdateType.StartUp); var debuggerMissing = false; var multipleInstances = false; var missingConfig = false; var connectionError = false; var noInternet = false; try { var progressDialogHelper = new ProgressDialogHelper(modelHelpers.DialogContext); var result = await progressDialogHelper.Do(modelHelpers.Gallifrey.Initialise, "Initialising Gallifrey", true, true); if (result.Status == ProgressResult.JiraHelperStatus.Cancelled) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Gallifrey Not Initialised", "Gallifrey Initialisation Was Cancelled, The App Will Now Close"); modelHelpers.CloseApp(); } } catch (NoInternetConnectionException) { noInternet = true; } catch (MissingJiraConfigException) { missingConfig = true; } catch (JiraConnectionException) { connectionError = true; } catch (MultipleGallifreyRunningException) { multipleInstances = true; } catch (DebuggerException) { debuggerMissing = true; } if (debuggerMissing) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Debugger Not Running", "It Looks Like Your Running Without Auto-Update\nPlease Use The Installed Shortcut To Start Gallifrey Or Download Again From GallifreyApp.co.uk"); modelHelpers.CloseApp(); } else if (multipleInstances) { modelHelpers.Gallifrey.TrackEvent(TrackingType.MultipleInstancesRunning); await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Multiple Instances", "You Can Only Have One Instance Of Gallifrey Running At A Time\nPlease Close The Other Instance"); modelHelpers.CloseApp(); } else if (noInternet) { modelHelpers.Gallifrey.TrackEvent(TrackingType.NoInternet); await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "No Internet Connection ", "Gallifrey Requires An Active Internet Connection To Work.\nPlease Try Again When You Have Internet"); modelHelpers.CloseApp(); } else if (missingConfig) { modelHelpers.Gallifrey.TrackEvent(TrackingType.SettingsMissing); await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Welcome To Gallifrey", "You Current Have No Jira Settings In Gallifrey\nWe Therefore Think Your A New User, So Welcome!\n\nTo Get Started, We Need Your Jira Details"); await NewUserOnBoarding(); modelHelpers.RefreshModel(); } else if (connectionError) { modelHelpers.Gallifrey.TrackEvent(TrackingType.ConnectionError); var userUpdate = await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Login Failure", "We Were Unable To Authenticate To Jira, Please Confirm Login Details\nWould You Like To Update Your Details?", MessageDialogStyle.AffirmativeAndNegative, new MetroDialogSettings { AffirmativeButtonText = "Yes", NegativeButtonText = "No" }); if (userUpdate == MessageDialogResult.Negative) { await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Come Back Soon", "Without A Correctly Configured Jira Connection Gallifrey Will Close, Please Come Back Soon!"); modelHelpers.CloseApp(); } await UserLoginFailure(); } if (modelHelpers.Gallifrey.VersionControl.IsAutomatedDeploy && modelHelpers.Gallifrey.VersionControl.IsFirstRun) { var changeLog = modelHelpers.Gallifrey.GetChangeLog(XDocument.Parse(Properties.Resources.ChangeLog)).Where(x => x.NewVersion).ToList(); if (changeLog.Any()) { await modelHelpers.OpenFlyout(new Flyouts.ChangeLog(changeLog)); } } exceptionlessHelper.RegisterExceptionless(); updateHeartbeat.Enabled = true; idleDetectionHeartbeat.Enabled = true; flyoutOpenCheck.Enabled = true; }