Exemple #1
0
        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;
        }
Exemple #3
0
        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;
        }