private void LoadGridState() { string filterPath = null; try { var filters = Directory.EnumerateFiles(_settingsPath).Select(p => Path.GetFileName(p)).ToArray(); var dialog = new SelectFilterDialog(filters); if (dialog.ShowDialog() == false) { return; } var manager = new PersistenceManager(); manager.AllowCrossVersion = true; filterPath = Path.Combine(_settingsPath, dialog.FilterName); using (var stream = File.OpenRead(filterPath)) { manager.Load(Grid as RadGridView, stream); } } catch (Exception e) { Sentry.CaptureException(e); MessageBox.Show("Failed to load filter!", "Jira Assistant", MessageBoxButton.OK, MessageBoxImage.Error); _logger.Error(e, "Error while loading Issue Browser filter from: " + filterPath); } }
private void CrashDialog_Closed(object sender, EventArgs e) { if (Config.Instance.GoogleAnalytics || _hasClickedSend) { Sentry.CaptureException(_exception); } }
private async void Login(PasswordBox passwordBox) { try { LoginErrorMessage = string.Empty; BusyMessage = "Trying to log into JIRA..."; IsBusy = true; await _jiraApi.Session.AttemptLogin(JiraAddress, Username, passwordBox.Password); _messenger.Send(new OpenAgileBoardPickupMessage()); } catch (ServerNotFoundException) { LoginErrorMessage = "Server did not respond. Please check address and/or connection."; } catch (LoginFailedException e) { LoginErrorMessage = e.Message; } catch (Exception e) { Sentry.CaptureException(e); LoginErrorMessage = "Failed to log in due to technical issues."; } finally { passwordBox.Password = string.Empty; IsBusy = false; } }
private void ButtonSend_Click(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(TextBoxDescription.Text)) { _exception.Data.Add("description", TextBoxDescription.Text); } Sentry.CaptureException(_exception); Close(); }
public static void Main() { var assemblies = new Dictionary <string, Assembly>(); var executingAssembly = Assembly.GetExecutingAssembly(); AppDomain.CurrentDomain.AssemblyResolve += (s, e) => { var assemblyName = new AssemblyName(e.Name); var path = string.Format("{0}.dll", assemblyName.Name); if (assemblies.ContainsKey(path)) { return(assemblies[path]); } using (var stream = executingAssembly.GetManifestResourceStream(path)) { if (stream == null) { return(null); } var bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); try { assemblies.Add(path, Assembly.Load(bytes)); return(assemblies[path]); } catch (Exception ex) { Sentry.CaptureException(ex); _logger.Error(ex, "Failed to load: {0}", path); } } return(null); }; AppDomain.CurrentDomain.UnhandledException += (sender, args) => { if (args.ExceptionObject == null) { return; } Sentry.CaptureException(args.ExceptionObject as Exception); _logger.Fatal(args.ExceptionObject as Exception, "Unexpected exception - shutting down."); }; App.Main(); }
private void SaveGridState() { try { var dialog = new FilterNameDialog(); if (dialog.ShowDialog() == false) { return; } var name = Regex.Replace(dialog.FilterName, @"[^\w\s]", "_"); if (File.Exists(Path.Combine(_settingsPath, name))) { var result = MessageBox.Show("Do you want to overwrite existing filter?", "Jira Assistant", MessageBoxButton.YesNo, MessageBoxImage.Warning); if (result == MessageBoxResult.No) { return; } } var manager = new PersistenceManager(); manager.AllowCrossVersion = true; var savedState = manager.Save(Grid); using (var reader = new StreamReader(savedState)) using (var writer = new StreamWriter(Path.Combine(_settingsPath, name))) { writer.Write(reader.ReadToEnd()); } } catch (Exception e) { Sentry.CaptureException(e); MessageBox.Show("Failed to save filter!", "Jira Assistant", MessageBoxButton.OK, MessageBoxImage.Error); _logger.Error(e, "Error while saving Issue Browser filter!"); } }
public async void OnNavigatedTo() { Boards.Clear(); RecentBoards.Clear(); try { BusyMessage = "Downloading available agile boards..."; IsBusy = true; var boards = await _jiraApi.Agile.GetAgileBoards(); var recentBoards = GetRecentBoardsIds(); foreach (var board in boards.OrderBy(b => b.Name)) { Boards.Add(board); if (recentBoards.Contains(board.Id)) { RecentBoards.Add(board); } } } catch (MissingJiraAgileSupportException) { MessageBox.Show("Please log into JIRA instance with JIRA Agile installed.", "JIRA Assistant", MessageBoxButton.OK, MessageBoxImage.Information); } catch (Exception e) { Sentry.CaptureException(e); MessageBox.Show("Failed to retrieve list of available JIRA boards. Can't go any further.\nReason: " + e.Message, "JIRA Assistant", MessageBoxButton.OK, MessageBoxImage.Warning); } finally { IsBusy = false; BusyMessage = ""; } }
private async void CheckForUpdates() { if (_inProgress) { return; } _inProgress = true; if (_settings.EnableUpdates == false) { return; } try { var client = new RestClient(EndpointUrl); var request = new RestRequest("/", Method.GET); var currentVersion = Assembly.GetEntryAssembly().GetName().Version; var response = await client.ExecuteGetTaskAsync(request); var releases = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <List <GithubApplicationRelease> >(response.Content)); var higherVersions = releases.Where(r => r.Draft == false && (_settings.OnlyStableVersions == false || r.Prerelease != _settings.OnlyStableVersions) && Version.Parse(r.TagName) > currentVersion) .OrderByDescending(r => r.TagName); if (higherVersions.Any() == false) { return; } _timer.Stop(); var higherVersion = higherVersions.First(); var closeApplicationAfterDownload = false; var installer = higherVersion.Assets.First(a => a.Name.EndsWith(".msi")); _installerPath = Path.Combine(Path.GetTempPath(), installer.Name); if (File.Exists(_installerPath) == false || new FileInfo(_installerPath).Length != installer.Size) { await DownloadToFile(installer.BrowserDownloadUrl, _installerPath); } if (_settings.InformAboutUpdate || higherVersion.Prerelease) { var dialog = new UpdateInstallPrompt(currentVersion, Version.Parse(higherVersion.TagName), higherVersion.Prerelease == false); var result = dialog.Prompt(); if (result == UpdatePromptResult.None) { return; } if (result == UpdatePromptResult.InstallManually) { var saveDialog = new SaveFileDialog { FileName = installer.Name }; if (saveDialog.ShowDialog() == true) { File.Copy(_installerPath, saveDialog.FileName); } return; } if (result == UpdatePromptResult.ExitAndInstall) { closeApplicationAfterDownload = true; } } _runInstaller = true; if (closeApplicationAfterDownload) { _showInstallerUi = true; Application.Current.Shutdown(); return; } _mainViewModel.UserMessage = string.Format("New version ({0}) will be installed once you close application.", higherVersion.TagName); } catch (Exception e) { Sentry.CaptureException(e); _logger.Warn(e, "Failed to check for updates."); } finally { _inProgress = false; } }