private IObservable<Unit> OnPublishRepository(object arg) { var newRepository = GatherRepositoryInfo(); var account = SelectedAccount; return repositoryPublishService.PublishRepository(newRepository, account, SelectedHost.ApiClient) .SelectUnit() .Do(_ => vsServices.ShowMessage("Repository published successfully.")) .Catch<Unit, Exception>(ex => { if (!ex.IsCriticalException()) { log.Error(ex); var error = new PublishRepositoryUserError(ex.Message); vsServices.ShowError((error.ErrorMessage + Environment.NewLine + error.ErrorCauseOrResolution).TrimEnd()); } return Observable.Return(Unit.Default); }); }
IObservable<ProgressState> OnPublishRepository(object arg) { var newRepository = GatherRepositoryInfo(); var account = SelectedAccount; return repositoryPublishService.PublishRepository(newRepository, account, SelectedHost.ApiClient) .Do(_ => usageTracker.IncrementPublishCount().Forget()) .Select(_ => ProgressState.Success) .Catch<ProgressState, Exception>(ex => { if (!ex.IsCriticalException()) { log.Error(ex); var error = new PublishRepositoryUserError(ex.Message); notificationService.ShowError((error.ErrorMessage + Environment.NewLine + error.ErrorCauseOrResolution).TrimEnd()); } return Observable.Return(ProgressState.Fail); }); }
IObservable<ProgressState> OnPublishRepository(object arg) { var newRepository = GatherRepositoryInfo(); var account = SelectedAccount; return repositoryPublishService.PublishRepository(newRepository, account, SelectedHost.ApiClient) .Select(_ => { vsServices.ShowMessage("Repository published successfully."); return ProgressState.Success; }) .Catch<ProgressState, Exception>(ex => { if (!ex.IsCriticalException()) { log.Error(ex); var error = new PublishRepositoryUserError(ex.Message); vsServices.ShowError((error.ErrorMessage + Environment.NewLine + error.ErrorCauseOrResolution).TrimEnd()); } return Observable.Return(ProgressState.Fail); }); }