public LoginControlViewModel(
            IRepositoryHosts hosts,
            ILoginToGitHubViewModel loginToGitHubViewModel,
            ILoginToGitHubForEnterpriseViewModel loginToGitHubEnterpriseViewModel)
        {
            Title           = Resources.LoginTitle;
            RepositoryHosts = hosts;
            GitHubLogin     = loginToGitHubViewModel;
            EnterpriseLogin = loginToGitHubEnterpriseViewModel;

            isLoginInProgress = this.WhenAny(
                x => x.GitHubLogin.IsLoggingIn,
                x => x.EnterpriseLogin.IsLoggingIn,
                (x, y) => x.Value || y.Value
                ).ToProperty(this, vm => vm.IsLoginInProgress);

            loginMode = this.WhenAny(
                x => x.RepositoryHosts.GitHubHost.IsLoggedIn,
                x => x.RepositoryHosts.EnterpriseHost.IsLoggedIn,
                (x, y) =>
            {
                var canLogInToGitHub     = x.Value == false;
                var canLogInToEnterprise = y.Value == false;

                return(canLogInToGitHub && canLogInToEnterprise ? LoginMode.DotComOrEnterprise
                        : canLogInToGitHub?LoginMode.DotComOnly
                       : canLogInToEnterprise ? LoginMode.EnterpriseOnly
                        : LoginMode.None);
            }).ToProperty(this, x => x.LoginMode);

            AuthenticationResults = Observable.Amb(
                loginToGitHubViewModel.Login,
                EnterpriseLogin.Login);
            CancelCommand = ReactiveCommand.Create();
        }
Exemplo n.º 2
0
        public LoginCredentialsViewModel(
            IConnectionManager connectionManager,
            ILoginToGitHubViewModel loginToGitHubViewModel,
            ILoginToGitHubForEnterpriseViewModel loginToGitHubEnterpriseViewModel)
        {
            ConnectionManager = connectionManager;
            GitHubLogin       = loginToGitHubViewModel;
            EnterpriseLogin   = loginToGitHubEnterpriseViewModel;

            isLoginInProgress = this.WhenAny(
                x => x.GitHubLogin.IsLoggingIn,
                x => x.EnterpriseLogin.IsLoggingIn,
                (x, y) => x.Value || y.Value
                ).ToProperty(this, vm => vm.IsLoginInProgress);

            UpdateLoginMode();
            connectionManager.Connections.CollectionChanged += (_, __) => UpdateLoginMode();

            Done = Observable.Merge(
                loginToGitHubViewModel.Login,
                loginToGitHubViewModel.LoginViaOAuth,
                loginToGitHubEnterpriseViewModel.Login,
                loginToGitHubEnterpriseViewModel.LoginViaOAuth)
                   .Where(x => x != null);
        }
Exemplo n.º 3
0
        public LoginControlViewModel(
            IRepositoryHosts hosts,
            ILoginToGitHubViewModel loginToGitHubViewModel,
            ILoginToGitHubForEnterpriseViewModel loginToGitHubEnterpriseViewModel)
        {
            Title = Resources.LoginTitle;
            RepositoryHosts = hosts;
            GitHubLogin = loginToGitHubViewModel;
            EnterpriseLogin = loginToGitHubEnterpriseViewModel;

            isLoginInProgress = this.WhenAny(
                x => x.GitHubLogin.IsLoggingIn,
                x => x.EnterpriseLogin.IsLoggingIn,
                (x, y) => x.Value || y.Value
            ).ToProperty(this, vm => vm.IsLoginInProgress);

            loginMode = this.WhenAny(
                x => x.RepositoryHosts.GitHubHost.IsLoggedIn,
                x => x.RepositoryHosts.EnterpriseHost.IsLoggedIn,
                (x, y) =>
                {
                    var canLogInToGitHub = x.Value == false;
                    var canLogInToEnterprise = y.Value == false;

                    return canLogInToGitHub && canLogInToEnterprise ? LoginMode.DotComOrEnterprise
                        : canLogInToGitHub ? LoginMode.DotComOnly
                        : canLogInToEnterprise ? LoginMode.EnterpriseOnly
                        : LoginMode.None;

                }).ToProperty(this, x => x.LoginMode);

            AuthenticationResults = Observable.Merge(
                loginToGitHubViewModel.Login,
                EnterpriseLogin.Login);
        }
        public LoginControlViewModel(
            IConnectionManager connectionManager,
            ILoginToGitHubViewModel loginToGitHubViewModel,
            ILoginToGitHubForEnterpriseViewModel loginToGitHubEnterpriseViewModel)
        {
            Title             = Resources.LoginTitle;
            ConnectionManager = connectionManager;
            GitHubLogin       = loginToGitHubViewModel;
            EnterpriseLogin   = loginToGitHubEnterpriseViewModel;

            isLoginInProgress = this.WhenAny(
                x => x.GitHubLogin.IsLoggingIn,
                x => x.EnterpriseLogin.IsLoggingIn,
                (x, y) => x.Value || y.Value
                ).ToProperty(this, vm => vm.IsLoginInProgress);

            UpdateLoginMode();
            connectionManager.Connections.CollectionChanged += (_, __) => UpdateLoginMode();

            AuthenticationResults = Observable.Merge(
                loginToGitHubViewModel.Login,
                EnterpriseLogin.Login);
        }