private async Task LoadJiraDashboards(IEditPreferencesView view, Preferences preferences)
        {
            if (!TryValidateJiraUri(view, preferences))
            {
                return;
            }

            IEnumerable <JiraDashboard> result;

            try {
                result = await _jira.GetDashboardsAsync(preferences.JiraUri, preferences.LoginCookies);
            } catch (Exception x) {
                _errors.ShowErrorMessage(view, x.Message, "Error Loading Dashboards");
                return;
            }

            view.DashboardItems = result.ToArray <IDashboardDisplayItem>();
        }
        private async void OnLoginButtonClicked(IJiraLoginView view, IJiraLoginParent parent)
        {
            if (string.IsNullOrEmpty(view.Username) || string.IsNullOrEmpty(view.Password))
            {
                _errors.ShowErrorMessage(view, "Please enter your username and password.", "Invalid Credentials");
                return;
            }

            view.Disabled = true;

            try {
                var credentials = await _jiraService.LoginAsync(
                    new Uri(parent.JiraUrl),
                    view.Username, view.Password);

                parent.UpdateJiraCredentials(credentials, view.Username);

                view.Close();
            } catch (Exception x) {
                _errors.ShowErrorMessage(view, x.Message, "Invalid Credentials");
            } finally {
                view.Disabled = false;
            }
        }