public LoginToGitHubForEnterpriseViewModel( IConnectionManager connectionManager, IEnterpriseCapabilitiesService enterpriseCapabilities, IVisualStudioBrowser browser) : this(connectionManager, enterpriseCapabilities, browser, Scheduler.Default) { }
static LoginToGitHubForEnterpriseViewModel CreateTarget( IScheduler scheduler = null, IEnterpriseCapabilitiesService capabilitiesService = null) { return(new LoginToGitHubForEnterpriseViewModel( Substitute.For <IConnectionManager>(), capabilitiesService ?? Substitute.For <IEnterpriseCapabilitiesService>(), Substitute.For <IVisualStudioBrowser>(), scheduler ?? Scheduler.Immediate)); }
public LoginToGitHubForEnterpriseViewModel( IConnectionManager connectionManager, IEnterpriseCapabilitiesService enterpriseCapabilities, IVisualStudioBrowser browser, IScheduler scheduler) : base(connectionManager, browser) { Guard.ArgumentNotNull(connectionManager, nameof(connectionManager)); Guard.ArgumentNotNull(enterpriseCapabilities, nameof(enterpriseCapabilities)); Guard.ArgumentNotNull(browser, nameof(browser)); this.enterpriseCapabilities = enterpriseCapabilities; EnterpriseUrlValidator = ReactivePropertyValidator.For(this, x => x.EnterpriseUrl) .IfNullOrEmpty(Resources.EnterpriseUrlValidatorEmpty) .IfNotUri(Resources.EnterpriseUrlValidatorInvalid) .IfGitHubDotComHost(Resources.EnterpriseUrlValidatorNotAGitHubHost); canLogin = this.WhenAnyValue( x => x.UsernameOrEmailValidator.ValidationResult.IsValid, x => x.PasswordValidator.ValidationResult.IsValid, x => x.SupportedLoginMethods, (x, y, z) => (x || (z & EnterpriseLoginMethods.Token) != 0) && y) .ToProperty(this, x => x.CanLogin); canSsoLogin = this.WhenAnyValue( x => x.EnterpriseUrlValidator.ValidationResult.IsValid) .ToProperty(this, x => x.CanLogin); this.WhenAnyValue(x => x.EnterpriseUrl, x => x.EnterpriseUrlValidator.ValidationResult) .Throttle(TimeSpan.FromMilliseconds(500), scheduler) .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(x => EnterpriseUrlChanged(x.Item1, x.Item2?.IsValid ?? false)); NavigateLearnMore = ReactiveCommand.CreateAsyncObservable(_ => { browser.OpenUrl(GitHubUrls.LearnMore); return(Observable.Return(Unit.Default)); }); }