protected override async void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            var apiKey = ApiKeyStore.GetApiKey();

            if (string.IsNullOrEmpty(apiKey))
            {
                var needKeyMessage = "In order to use this app, you'll need to register an API Key. Do you want do do this now?";
                if (MessageBox.Show(needKeyMessage, "API Review List", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.No)
                {
                    Environment.Exit(1);
                }

                await SetApiKey();
            }
            else if (!await GitHubClientFactory.IsValidKeyAsync(apiKey))
            {
                var needKeyMessage = "The API key is no longer valid. In order to use this app, you'll need to register a new API Key. Do you want do do this now?";
                if (MessageBox.Show(needKeyMessage, "API Review List", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.No)
                {
                    Environment.Exit(1);
                }

                await SetApiKey();
            }

            var window = new MainWindow();

            window.Show();
        }
        private static async Task SetApiKey()
        {
            var registerKeyMessage = "Next, you'll need to go to GitHub and register a personal access token. It only needs public_repo access. Copy the token to the clipboard.";

            MessageBox.Show(registerKeyMessage, "API Review List", MessageBoxButton.OK, MessageBoxImage.Information);

            var url = "https://github.com/settings/tokens/new";

            Shell.Execute(url);

            while (true)
            {
                var valiateTokenMessage = "Once the token is in the clipboard, click OK.";
                MessageBox.Show(valiateTokenMessage, "API Review List", MessageBoxButton.OK, MessageBoxImage.Information);

                var key = Clipboard.GetText();
                if (await GitHubClientFactory.IsValidKeyAsync(key))
                {
                    ApiKeyStore.SetApiKey(key);
                    break;
                }

                var keyIsInvalid = "The key in the clipboard is not valid.";
                MessageBox.Show(keyIsInvalid, "API Review List", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }