Exemplo n.º 1
0
 public static IRepositoryPublishViewModel GetViewModel(
     IRepositoryHosts hosts               = null,
     IRepositoryPublishService service    = null,
     IVSServices vsServices               = null,
     IConnectionManager connectionManager = null)
 {
     hosts             = hosts ?? Substitutes.RepositoryHosts;
     service           = service ?? Substitute.For <IRepositoryPublishService>();
     vsServices        = vsServices ?? Substitute.For <IVSServices>();
     connectionManager = connectionManager ?? Substitutes.ConnectionManager;
     return(new RepositoryPublishViewModel(hosts, service, vsServices, connectionManager));
 }
 public static IRepositoryPublishViewModel GetViewModel(
     IRepositoryHosts hosts = null,
     IRepositoryPublishService service = null,
     INotificationService notificationService = null,
     IConnectionManager connectionManager = null)
 {
     hosts = hosts ?? Substitutes.RepositoryHosts;
     service = service ?? Substitute.For<IRepositoryPublishService>();
     notificationService = notificationService ?? Substitute.For<INotificationService>();
     connectionManager = connectionManager ?? Substitutes.ConnectionManager;
     return new RepositoryPublishViewModel(hosts, service, notificationService, connectionManager);
 }
 public static IRepositoryPublishViewModel GetViewModel(
     IRepositoryHosts hosts                   = null,
     IRepositoryPublishService service        = null,
     INotificationService notificationService = null,
     IConnectionManager connectionManager     = null)
 {
     hosts               = hosts ?? Substitutes.RepositoryHosts;
     service             = service ?? Substitute.For <IRepositoryPublishService>();
     notificationService = notificationService ?? Substitute.For <INotificationService>();
     connectionManager   = connectionManager ?? Substitutes.ConnectionManager;
     return(new RepositoryPublishViewModel(hosts, service, notificationService, connectionManager));
 }
 public static IRepositoryPublishViewModel GetViewModel(
     IRepositoryHosts hosts = null,
     IRepositoryPublishService service = null,
     IVSServices vsServices = null,
     IConnectionManager connectionManager = null)
 {
     hosts = hosts ?? Substitutes.RepositoryHosts;
     service = service ?? Substitute.For<IRepositoryPublishService>();
     vsServices = vsServices ?? Substitute.For<IVSServices>();
     connectionManager = connectionManager ?? Substitutes.ConnectionManager;
     return new RepositoryPublishViewModel(hosts, service, vsServices, connectionManager);
 }
Exemplo n.º 5
0
        public static IRepositoryPublishViewModel GetViewModel(
            IRepositoryPublishService service        = null,
            INotificationService notificationService = null,
            IConnectionManager connectionManager     = null,
            IModelServiceFactory factory             = null)
        {
            service             = service ?? Substitute.For <IRepositoryPublishService>();
            notificationService = notificationService ?? Substitute.For <INotificationService>();
            connectionManager   = connectionManager ?? Substitutes.ConnectionManager;
            factory             = factory ?? Substitute.For <IModelServiceFactory>();

            return(new RepositoryPublishViewModel(service, notificationService, connectionManager,
                                                  factory, Substitute.For <IDialogService>(), Substitute.For <IUsageTracker>()));
        }
Exemplo n.º 6
0
        public static IRepositoryPublishViewModel SetupConnectionsAndViewModel(
            IRepositoryPublishService service        = null,
            INotificationService notificationService = null,
            IConnectionManager cm = null,
            string uri            = GitHubUrls.GitHub)
        {
            cm = cm ?? Substitutes.ConnectionManager;
            var adds  = new List <HostAddress>();
            var conns = new List <IConnection>();

            SetupConnections(adds, conns, uri);
            //hsts[0].ModelService.GetAccounts().Returns(Observable.Return(new List<IAccount>()));
            cm.Connections.Returns(new ObservableCollectionEx <IConnection>(conns));
            return(GetViewModel(service, notificationService, cm));
        }
 public static IRepositoryPublishViewModel SetupConnectionsAndViewModel(
     IRepositoryHosts hosts = null,
     IRepositoryPublishService service = null,
     INotificationService notificationService = null,
     IConnectionManager cm = null,
     string uri = GitHubUrls.GitHub)
 {
     cm = cm ?? Substitutes.ConnectionManager;
     hosts = hosts ?? Substitute.For<IRepositoryHosts>();
     var adds = new List<HostAddress>();
     var hsts = new List<IRepositoryHost>();
     var conns = new List<IConnection>();
     SetupConnections(hosts, cm, adds, conns, hsts, uri);
     hsts[0].ModelService.GetAccounts().Returns(Observable.Return(new ReactiveList<IAccount>()));
     cm.Connections.Returns(new ObservableCollection<IConnection>(conns));
     return GetViewModel(hosts, service, notificationService, cm);
 }
Exemplo n.º 8
0
        public static IRepositoryPublishViewModel SetupConnectionsAndViewModel(
            IRepositoryHosts hosts            = null,
            IRepositoryPublishService service = null,
            IVSServices vs        = null,
            IConnectionManager cm = null,
            string uri            = GitHubUrls.GitHub)
        {
            cm    = cm ?? Substitutes.ConnectionManager;
            hosts = hosts ?? Substitute.For <IRepositoryHosts>();
            var adds  = new List <HostAddress>();
            var hsts  = new List <IRepositoryHost>();
            var conns = new List <IConnection>();

            SetupConnections(hosts, cm, adds, conns, hsts, uri);
            hsts[0].ModelService.GetAccounts().Returns(Observable.Return(new ReactiveList <IAccount>()));
            cm.Connections.Returns(new ObservableCollection <IConnection>(conns));
            return(GetViewModel(hosts, service, vs, cm));
        }
Exemplo n.º 9
0
 public static IRepositoryPublishViewModel GetViewModel(IRepositoryPublishService service = null)
 {
     return(GetViewModel(service));
 }
 public static IRepositoryPublishViewModel GetViewModel(IRepositoryPublishService service = null)
 {
     return GetViewModel(null, service, null);
 }
        public RepositoryPublishViewModel(
            IRepositoryHosts hosts,
            IRepositoryPublishService repositoryPublishService,
            INotificationService notificationService,
            IConnectionManager connectionManager,
            IUsageTracker usageTracker)
        {
            this.notificationService = notificationService;
            this.hosts        = hosts;
            this.usageTracker = usageTracker;

            title = this.WhenAny(
                x => x.SelectedHost,
                x => x.Value != null ?
                string.Format(CultureInfo.CurrentCulture, Resources.PublishToTitle, x.Value.Title) :
                Resources.PublishTitle
                )
                    .ToProperty(this, x => x.Title);

            Connections = connectionManager.Connections;
            this.repositoryPublishService = repositoryPublishService;

            if (Connections.Any())
            {
                SelectedConnection = Connections.FirstOrDefault(x => x.HostAddress.IsGitHubDotCom()) ?? Connections[0];
            }

            accounts = this.WhenAny(x => x.SelectedConnection, x => x.Value != null ? hosts.LookupHost(x.Value.HostAddress) : RepositoryHosts.DisconnectedRepositoryHost)
                       .Where(x => !(x is DisconnectedRepositoryHost))
                       .SelectMany(host => host.ModelService.GetAccounts())
                       .ObserveOn(RxApp.MainThreadScheduler)
                       .ToProperty(this, x => x.Accounts, initialValue: new ReadOnlyCollection <IAccount>(new IAccount[] {}));

            this.WhenAny(x => x.Accounts, x => x.Value)
            .WhereNotNull()
            .Where(accts => accts.Any())
            .Subscribe(accts => {
                var selectedAccount = accts.FirstOrDefault();
                if (selectedAccount != null)
                {
                    SelectedAccount = accts.FirstOrDefault();
                }
            });

            isHostComboBoxVisible = this.WhenAny(x => x.Connections, x => x.Value)
                                    .WhereNotNull()
                                    .Select(h => h.Count > 1)
                                    .ToProperty(this, x => x.IsHostComboBoxVisible);

            InitializeValidation();

            PublishRepository = InitializePublishRepositoryCommand();

            canKeepPrivate = CanKeepPrivateObservable.CombineLatest(PublishRepository.IsExecuting,
                                                                    (canKeep, publishing) => canKeep && !publishing)
                             .ToProperty(this, x => x.CanKeepPrivate);

            isPublishing = PublishRepository.IsExecuting
                           .ToProperty(this, x => x.IsPublishing);

            var defaultRepositoryName = repositoryPublishService.LocalRepositoryName;

            if (!string.IsNullOrEmpty(defaultRepositoryName))
            {
                RepositoryName = defaultRepositoryName;
            }

            this.WhenAny(x => x.SelectedConnection, x => x.SelectedAccount,
                         (a, b) => true)
            .Where(x => RepositoryNameValidator.ValidationResult != null && SafeRepositoryNameWarningValidator.ValidationResult != null)
            .Subscribe(async _ =>
            {
                var name       = RepositoryName;
                RepositoryName = null;
                await RepositoryNameValidator.ResetAsync();
                await SafeRepositoryNameWarningValidator.ResetAsync();
                RepositoryName = name;
            });
        }
Exemplo n.º 12
0
        public RepositoryPublishViewModel(
            IRepositoryPublishService repositoryPublishService,
            INotificationService notificationService,
            IConnectionManager connectionManager,
            IModelServiceFactory modelServiceFactory,
            IDialogService dialogService,
            IUsageTracker usageTracker)
        {
            Guard.ArgumentNotNull(repositoryPublishService, nameof(repositoryPublishService));
            Guard.ArgumentNotNull(notificationService, nameof(notificationService));
            Guard.ArgumentNotNull(connectionManager, nameof(connectionManager));
            Guard.ArgumentNotNull(usageTracker, nameof(usageTracker));
            Guard.ArgumentNotNull(modelServiceFactory, nameof(modelServiceFactory));
            Guard.ArgumentNotNull(dialogService, nameof(dialogService));

            this.notificationService = notificationService;
            this.usageTracker        = usageTracker;
            this.modelServiceFactory = modelServiceFactory;
            this.dialogService       = dialogService;

            Connections = connectionManager.Connections;
            this.repositoryPublishService = repositoryPublishService;

            if (Connections.Any())
            {
                SelectedConnection = Connections.FirstOrDefault(x => x.HostAddress.IsGitHubDotCom()) ?? Connections[0];
            }

            accounts = this.WhenAnyValue(x => x.SelectedConnection)
                       .Where(x => x != null)
                       .SelectMany(async c => (await modelServiceFactory.CreateAsync(c)).GetAccounts())
                       .Switch()
                       .ObserveOn(RxApp.MainThreadScheduler)
                       .ToProperty(this, x => x.Accounts, initialValue: new ReadOnlyCollection <IAccount>(Array.Empty <IAccount>()));

            this.WhenAny(x => x.Accounts, x => x.Value)
            .WhereNotNull()
            .Where(accts => accts.Any())
            .Subscribe(accts => {
                var selectedAccount = accts.FirstOrDefault();
                if (selectedAccount != null)
                {
                    SelectedAccount = accts.FirstOrDefault();
                }
            });

            isHostComboBoxVisible = this.WhenAny(x => x.Connections, x => x.Value)
                                    .WhereNotNull()
                                    .Select(h => h.Count > 1)
                                    .ToProperty(this, x => x.IsHostComboBoxVisible);

            InitializeValidation();

            PublishRepository = InitializePublishRepositoryCommand();
            PublishRepository.IsExecuting.Subscribe(x => IsBusy = x);

            LoginAsDifferentUser = ReactiveCommand.CreateFromTask(LoginAsDifferentUserAsync);

            var defaultRepositoryName = repositoryPublishService.LocalRepositoryName;

            if (!string.IsNullOrEmpty(defaultRepositoryName))
            {
                RepositoryName = defaultRepositoryName;
            }

            this.WhenAny(x => x.SelectedConnection, x => x.SelectedAccount,
                         (a, b) => true)
            .Where(x => RepositoryNameValidator.ValidationResult != null && SafeRepositoryNameWarningValidator.ValidationResult != null)
            .Subscribe(async _ =>
            {
                var name       = RepositoryName;
                RepositoryName = null;
                await RepositoryNameValidator.ResetAsync();
                await SafeRepositoryNameWarningValidator.ResetAsync();
                RepositoryName = name;
            });
        }
        public RepositoryPublishViewModel(
            IRepositoryHosts hosts,
            IRepositoryPublishService repositoryPublishService,
            INotificationService notificationService,
            IConnectionManager connectionManager,
            IUsageTracker usageTracker)
        {
            this.notificationService = notificationService;
            this.hosts = hosts;
            this.usageTracker = usageTracker;

            title = this.WhenAny(
                x => x.SelectedHost,
                x => x.Value != null ?
                    string.Format(CultureInfo.CurrentCulture, Resources.PublishToTitle, x.Value.Title) :
                    Resources.PublishTitle
            )
            .ToProperty(this, x => x.Title);

            Connections = connectionManager.Connections;
            this.repositoryPublishService = repositoryPublishService;

            if (Connections.Any())
                SelectedConnection = Connections.FirstOrDefault(x => x.HostAddress.IsGitHubDotCom()) ?? Connections[0];

            accounts = this.WhenAny(x => x.SelectedConnection, x => x.Value != null ? hosts.LookupHost(x.Value.HostAddress) : RepositoryHosts.DisconnectedRepositoryHost)
                .Where(x => !(x is DisconnectedRepositoryHost))
                .SelectMany(host => host.ModelService.GetAccounts())
                .ObserveOn(RxApp.MainThreadScheduler)
                .ToProperty(this, x => x.Accounts, initialValue: new ReadOnlyCollection<IAccount>(new IAccount[] {}));

            this.WhenAny(x => x.Accounts, x => x.Value)
                .WhereNotNull()
                .Where(accts => accts.Any())
                .Subscribe(accts => {
                    var selectedAccount = accts.FirstOrDefault();
                    if (selectedAccount != null)
                        SelectedAccount = accts.FirstOrDefault();
                });

            isHostComboBoxVisible = this.WhenAny(x => x.Connections, x => x.Value)
                .WhereNotNull()
                .Select(h => h.Count > 1)
                .ToProperty(this, x => x.IsHostComboBoxVisible);

            InitializeValidation();

            PublishRepository = InitializePublishRepositoryCommand();

            canKeepPrivate = CanKeepPrivateObservable.CombineLatest(PublishRepository.IsExecuting,
                (canKeep, publishing) => canKeep && !publishing)
                .ToProperty(this, x => x.CanKeepPrivate);

            isPublishing = PublishRepository.IsExecuting
                .ToProperty(this, x => x.IsPublishing);

            var defaultRepositoryName = repositoryPublishService.LocalRepositoryName;
            if (!string.IsNullOrEmpty(defaultRepositoryName))
                RepositoryName = defaultRepositoryName;

            this.WhenAny(x => x.SelectedConnection, x => x.SelectedAccount,
                (a,b) => true)
                .Where(x => RepositoryNameValidator.ValidationResult != null && SafeRepositoryNameWarningValidator.ValidationResult != null)
                .Subscribe(async _ =>
                {
                    var name = RepositoryName;
                    RepositoryName = null;
                    await RepositoryNameValidator.ResetAsync();
                    await SafeRepositoryNameWarningValidator.ResetAsync();
                    RepositoryName = name;
                });
        }