Exemple #1
0
        public async void InitializeRelatedVideos()
        {
            using (var releaser = await _UpdateLock.LockAsync())
            {
                if (_IsInitializedRelatedVideos)
                {
                    return;
                }

                var items = await NiconicoSession.Context.Video.GetRelatedVideoAsync(VideoId, 0, 10, Sort.Relation);

                RelatedVideos = items.Video_info?.Select(x =>
                {
                    var video          = Database.NicoVideoDb.Get(x.Video.Id);
                    video.Title        = x.Video.Title;
                    video.ThumbnailUrl = x.Video.Thumbnail_url;

                    var vm = new VideoInfoControlViewModel(video);
                    return(vm);
                })
                                .ToList();

                RaisePropertyChanged(nameof(RelatedVideos));

                _IsInitializedRelatedVideos = true;
            }
        }
Exemple #2
0
        protected override async Task NavigatedToAsync(CancellationToken cancelToken, NavigatedToEventArgs e, Dictionary <string, object> viewModelState)
        {
            NowLoading = true;

            string userId = null;

            if (e.Parameter is string)
            {
                userId = e.Parameter as string;
            }
            else if (e.Parameter is uint)
            {
                userId = ((uint)e.Parameter).ToString();
            }
            else
            {
                userId = NiconicoSession.UserId.ToString();
            }

            if (userId == UserId)
            {
                NowLoading = false;
                return;
            }

            UserId = userId;


            // ログインユーザーと同じ場合、お気に入り表示をOFFに
            IsLoginUser = NiconicoSession.UserId.ToString() == userId;

            IsLoadFailed = false;

            MylistGroups.Clear();
            VideoInfoItems.Clear();

            try
            {
                var userInfo = await UserProvider.GetUserDetail(UserId);

                var user = userInfo;
                UserName    = user.Nickname;
                UserIconUri = user.ThumbnailUri;

                FollowerCount  = user.FollowerCount;
                StampCount     = user.StampCount;
                VideoCount     = user.TotalVideoCount;
                IsVideoPrivate = user.IsOwnerVideoPrivate;
            }
            catch
            {
                IsLoadFailed = true;
                NowLoading   = false;
            }


            if (UserId == null)
            {
                return;
            }


            // NGユーザーの設定

            if (!IsLoginUser)
            {
                var ngResult = NgSettings.IsNgVideoOwnerId(UserId);
                IsNGVideoOwner.Value = ngResult != null;
            }
            else
            {
                IsNGVideoOwner.Value = false;
            }

            try
            {
                await Task.Delay(500);

                var userVideos = await UserProvider.GetUserVideos(uint.Parse(UserId), 1);

                foreach (var item in userVideos.Items.Take(5))
                {
                    var vm = new VideoInfoControlViewModel(item.VideoId);
                    vm.SetTitle(item.Title);
                    vm.SetThumbnailImage(item.ThumbnailUrl.OriginalString);
                    VideoInfoItems.Add(vm);
                }
                RaisePropertyChanged(nameof(VideoInfoItems));
            }
            catch (Exception ex)
            {
                IsLoadFailed = true;
                NowLoading   = false;
                Debug.WriteLine(ex.Message);
            }

            HasOwnerVideo = VideoInfoItems.Count != 0;


            if (NiconicoSession.IsLoginUserId(UserId))
            {
                foreach (var item in UserMylistManager.Mylists)
                {
                    MylistGroups.Add(new MylistGroupListItem(item));
                }
            }
            else
            {
                try
                {
                    //					await Task.Delay(500);

                    var mylistGroups = await UserProvider.GetUserMylistGroups(UserId);

                    foreach (var item in mylistGroups)
                    {
                        MylistGroups.Add(new MylistGroupListItem(item));
                    }
                }
                catch (Exception ex)
                {
                    IsLoadFailed = true;
                    Debug.WriteLine(ex.Message);
                }
            }
            RaisePropertyChanged(nameof(MylistGroups));


            UserBookmark = Database.BookmarkDb.Get(Database.BookmarkType.User, UserId)
                           ?? new Database.Bookmark()
            {
                Content      = UserId,
                Label        = UserName,
                BookmarkType = Database.BookmarkType.User
            };

            RaisePropertyChanged(nameof(UserBookmark));


            FollowToggleButtonService.SetFollowTarget(this);


            NowLoading = false;
        }
Exemple #3
0
        public SearchSummaryPageViewModel(
            SearchProvider searchProvider,
            Services.PageManager pageManager
            )
            : base(pageManager)
        {
            RelatedVideoTags = new ObservableCollection <string>();

            KeywordSearchResultItems = this.ObserveProperty(x => x.Keyword)
                                       .Where(x => !string.IsNullOrWhiteSpace(x))
                                       .SelectMany(async(x, i, cancelToken) =>
            {
                RelatedVideoTags.Clear();
                var res = await SearchProvider.GetKeywordSearch(x, 0, 10);

                if (res.IsOK)
                {
                    KeywordSearchItemsTotalCount = (int)res.GetTotalCount();

                    if (res.Tags != null)
                    {
                        foreach (var tag in res.Tags.TagItems)
                        {
                            RelatedVideoTags.Add(tag.Name);
                        }
                    }

                    return(res.VideoInfoItems?.AsEnumerable() ?? Enumerable.Empty <Mntone.Nico2.Searches.Video.VideoInfo>());
                }
                else
                {
                    return(Enumerable.Empty <Mntone.Nico2.Searches.Video.VideoInfo>());
                }
            })
                                       .SelectMany(x => x)
                                       .Select(x =>
            {
                var vm = new VideoInfoControlViewModel(x.Video.Id);
                vm.SetTitle(x.Video.Title);
                vm.SetThumbnailImage(x.Video.ThumbnailUrl.OriginalString);
                return(vm);
            })
                                       .ToReadOnlyReactiveCollection(onReset: this.ObserveProperty(x => x.Keyword).ToUnit())
                                       .AddTo(_CompositeDisposable);
            HasKeywordSearchResultItems = KeywordSearchResultItems
                                          .ObserveProperty(x => x.Count)
                                          .Select(x => x > 0)
                                          .ToReadOnlyReactiveProperty()
                                          .AddTo(_CompositeDisposable);

            RelatedLiveTags       = new ObservableCollection <string>();
            LiveSearchResultItems = this.ObserveProperty(x => x.Keyword)
                                    .Where(x => !string.IsNullOrWhiteSpace(x))
                                    .SelectMany(async(x, i, cancelToken) =>
            {
                RelatedLiveTags.Clear();
                var res = await SearchProvider.LiveSearchAsync(x, false, length: 10);
                if (res.IsStatusOK)
                {
                    if (res.Tags != null)
                    {
                        foreach (var tag in res.Tags.Tag)
                        {
                            RelatedLiveTags.Add(tag.Name);
                        }
                    }

                    LiveSearchItemsTotalCount = res.TotalCount.FilteredCount;
                    return(res.VideoInfo?.AsEnumerable() ?? Enumerable.Empty <Mntone.Nico2.Searches.Live.VideoInfo>());
                }
                else
                {
                    return(Enumerable.Empty <Mntone.Nico2.Searches.Live.VideoInfo>());
                }
            })
                                    .SelectMany(x => x)
                                    .Select(x =>
            {
                var liveInfoVM = new LiveInfoListItemViewModel(x.Video.Id);
                liveInfoVM.Setup(x);
                return(liveInfoVM);
            })
                                    .ToReadOnlyReactiveCollection(onReset: this.ObserveProperty(x => x.Keyword).ToUnit());
            HasLiveSearchResultItems = LiveSearchResultItems
                                       .ObserveProperty(x => x.Count)
                                       .Select(x => x > 0)
                                       .ToReadOnlyReactiveProperty()
                                       .AddTo(_CompositeDisposable);
            SearchProvider = searchProvider;
        }
        protected override async Task NavigatedToAsync(CancellationToken cancelToken, NavigatedToEventArgs e, Dictionary <string, object> viewModelState)
        {
            NowLoading = true;

            string userId = null;

            if (e.Parameter is string)
            {
                userId = e.Parameter as string;
            }
            else if (e.Parameter is uint)
            {
                userId = ((uint)e.Parameter).ToString();
            }
            else
            {
                userId = HohoemaApp.LoginUserId.ToString();
            }

            if (userId == UserId)
            {
                return;
            }

            UserId = userId;


            // ログインユーザーと同じ場合、お気に入り表示をOFFに
            IsLoginUser = HohoemaApp.LoginUserId.ToString() == userId;

            IsLoadFailed = false;

            MylistGroups.Clear();
            VideoInfoItems.Clear();

            try
            {
                var userInfo = await HohoemaApp.ContentProvider.GetUserDetail(UserId);

                var user = userInfo;
                UserName    = user.Nickname;
                UserIconUri = user.ThumbnailUri;
                Description = user.Description;

                FollowerCount  = user.FollowerCount;
                StampCount     = user.StampCount;
                VideoCount     = user.TotalVideoCount;
                IsVideoPrivate = user.IsOwnerVideoPrivate;
            }
            catch
            {
                IsLoadFailed = true;
                NowLoading   = false;
            }


            if (UserId == null)
            {
                return;
            }


            // NGユーザーの設定

            if (!IsLoginUser)
            {
                var ngResult = HohoemaApp.UserSettings.NGSettings.IsNgVideoOwnerId(UserId);
                IsNGVideoOwner.Value = ngResult != null;
            }
            else
            {
                IsNGVideoOwner.Value = false;
            }


            // お気に入り状態の取得
            _NowProcessFavorite = true;

            if (HohoemaApp.IsLoggedIn)
            {
                var favManager = HohoemaApp.FollowManager;
                IsFavorite.Value = favManager.IsFollowItem(FollowItemType.User, UserId);

                CanChangeFavoriteState.Value =
                    IsFavorite.Value == true ||
                    favManager.CanMoreAddFollow(FollowItemType.User);
            }

            _NowProcessFavorite = false;

            try
            {
                await Task.Delay(500);

                var userVideos = await HohoemaApp.ContentProvider.GetUserVideos(uint.Parse(UserId), 1);

                foreach (var item in userVideos.Items.Take(5))
                {
                    var vm = new VideoInfoControlViewModel(item.VideoId, isNgEnabled: false);
                    vm.SetTitle(item.Title);
                    vm.SetThumbnailImage(item.ThumbnailUrl.OriginalString);
                    VideoInfoItems.Add(vm);
                }
                RaisePropertyChanged(nameof(VideoInfoItems));
            }
            catch (Exception ex)
            {
                IsLoadFailed = true;
                NowLoading   = false;
                Debug.WriteLine(ex.Message);
            }

            HasOwnerVideo = VideoInfoItems.Count != 0;


            if (HohoemaApp.LoginUserId.ToString() == UserId)
            {
                foreach (var item in HohoemaApp.UserMylistManager.UserMylists)
                {
                    MylistGroups.Add(new MylistGroupListItem(item, PageManager));
                }
            }
            else
            {
                try
                {
//					await Task.Delay(500);

                    var mylistGroups = await HohoemaApp.ContentProvider.GetUserMylistGroups(UserId);

                    foreach (var item in mylistGroups)
                    {
                        MylistGroups.Add(new MylistGroupListItem(item, PageManager));
                    }
                }
                catch (Exception ex)
                {
                    IsLoadFailed = true;
                    Debug.WriteLine(ex.Message);
                }
            }
            RaisePropertyChanged(nameof(MylistGroups));


            UserBookmark = Database.BookmarkDb.Get(Database.BookmarkType.User, UserId)
                           ?? new Database.Bookmark()
            {
                Content      = UserId,
                Label        = UserName,
                BookmarkType = Database.BookmarkType.User
            };

            RaisePropertyChanged(nameof(UserBookmark));

            NowLoading = false;
        }
Exemple #5
0
        public async Task OnNavigatedToAsync(INavigationParameters parameters)
        {
            string userId = null;

            if (parameters.TryGetValue <string>("id", out var id))
            {
                userId = id;
            }

            if (userId == UserId)
            {
                return;
            }

            UserId = userId;


            // ログインユーザーと同じ場合、お気に入り表示をOFFに
            IsLoginUser = NiconicoSession.UserId.ToString() == userId;

            IsLoadFailed = false;

            VideoInfoItems.Clear();

            try
            {
                var userInfo = await UserProvider.GetUserDetail(UserId);

                var user = userInfo;
                UserName    = user.Nickname;
                UserIconUri = user.ThumbnailUri;

                FollowerCount  = user.FollowerCount;
                StampCount     = user.StampCount;
                VideoCount     = user.TotalVideoCount;
                IsVideoPrivate = user.IsOwnerVideoPrivate;
            }
            catch
            {
                IsLoadFailed = true;
            }


            if (UserId == null)
            {
                return;
            }


            // NGユーザーの設定

            if (!IsLoginUser)
            {
                var ngResult = NgSettings.IsNgVideoOwnerId(UserId);
                IsNGVideoOwner.Value = ngResult != null;
            }
            else
            {
                IsNGVideoOwner.Value = false;
            }

            try
            {
                await Task.Delay(500);

                var userVideos = await UserProvider.GetUserVideos(uint.Parse(UserId), 1);

                foreach (var item in userVideos.Items.Take(5))
                {
                    var vm = new VideoInfoControlViewModel(item.VideoId);
                    vm.SetTitle(item.Title);
                    vm.SetThumbnailImage(item.ThumbnailUrl.OriginalString);
                    VideoInfoItems.Add(vm);
                }
                RaisePropertyChanged(nameof(VideoInfoItems));
            }
            catch (Exception ex)
            {
                IsLoadFailed = true;
                Debug.WriteLine(ex.Message);
            }

            HasOwnerVideo = VideoInfoItems.Count != 0;


            if (NiconicoSession.IsLoginUserId(UserId))
            {
                MylistGroups = UserMylistManager.Mylists;
            }
            else
            {
                try
                {
                    //					await Task.Delay(500);
                    MylistGroups = await _mylistRepository.GetUserMylistsAsync(UserId);
                }
                catch (Exception ex)
                {
                    IsLoadFailed = true;
                    Debug.WriteLine(ex.Message);
                }
            }
            RaisePropertyChanged(nameof(MylistGroups));


            UserBookmark = Database.BookmarkDb.Get(Database.BookmarkType.User, UserId)
                           ?? new Database.Bookmark()
            {
                Content      = UserId,
                Label        = UserName,
                BookmarkType = Database.BookmarkType.User
            };

            RaisePropertyChanged(nameof(UserBookmark));


            FollowToggleButtonService.SetFollowTarget(this);
        }