Example #1
0
        public UserViewModel(string username, IApplicationService applicationService = null)
        {
            applicationService = applicationService ?? Locator.Current.GetService <IApplicationService>();

            GoToFollowersCommand.Subscribe(_ => NavigateTo(new UserFollowersViewModel(username)));
            GoToFollowingCommand.Subscribe(_ => NavigateTo(new UserFollowingsViewModel(username)));
            GoToEventsCommand.Subscribe(_ => NavigateTo(new UserEventsViewModel(username)));
            GoToGroupsCommand.Subscribe(_ => NavigateTo(new GroupsViewModel(username)));
            GoToRepositoriesCommand.Subscribe(_ => NavigateTo(new UserRepositoriesViewModel(username)));

            this.WhenAnyValue(x => x.User.Website)
            .Select(x => !string.IsNullOrEmpty(x))
            .ToProperty(this, x => x.IsWebsiteAvailable, out _isWebsiteAvailable);

            this.WhenAnyValue(x => x.User.DisplayName)
            .Select(x => string.Equals(x, username) ? null : x)
            .ToProperty(this, x => x.DisplayName, out _displayName);

            GoToWebsiteCommand = ReactiveCommand.Create(
                () => NavigateTo(new WebBrowserViewModel(User.Website)),
                this.WhenAnyValue(x => x.IsWebsiteAvailable));

            ShouldShowGroups = string.Equals(username, applicationService.Account.Username, StringComparison.OrdinalIgnoreCase);

            Title = username;

            LoadCommand = ReactiveCommand.CreateFromTask(async t =>
            {
                if (!string.Equals(applicationService.Account.Username, username, StringComparison.OrdinalIgnoreCase))
                {
                    applicationService.Client.Groups.GetGroups(username)
                    .ToObservable()
                    .Select(_ => true)
                    .Catch(Observable.Return(false))
                    .ObserveOn(RxApp.MainThreadScheduler)
                    .Subscribe(x => ShouldShowGroups = x);
                }

                User = await applicationService.Client.Users.GetUser(username);
            });
        }
Example #2
0
        public TeamViewModel(
            string name,
            IApplicationService applicationService = null)
        {
            applicationService = applicationService ?? Locator.Current.GetService <IApplicationService>();

            Title = name;

            GoToFollowersCommand.Subscribe(_ => NavigateTo(new TeamFollowersViewModel(name)));
            GoToFollowingCommand.Subscribe(_ => NavigateTo(new TeamFollowingsViewModel(name)));
            GoToMembersCommand.Subscribe(_ => NavigateTo(new TeamMembersViewModel(name)));
            GoToGroupsCommand.Subscribe(_ => NavigateTo(new GroupsViewModel(name)));
            GoToEventsCommand.Subscribe(_ => NavigateTo(new UserEventsViewModel(name)));
            GoToRepositoriesCommand.Subscribe(_ => NavigateTo(new UserRepositoriesViewModel(name)));

            this.WhenAnyValue(x => x.Team.DisplayName)
            .Select(x => string.Equals(x, name) ? null : x)
            .ToProperty(this, x => x.DisplayName, out _displayName);

            LoadCommand = ReactiveCommand.CreateFromTask(async _ =>
            {
                Team = await applicationService.Client.Teams.Get(name);
            });
        }