public UserInfoPageViewModel( UserProvider userProvider, NGSettings ngSettings, Models.NiconicoSession niconicoSession, SubscriptionManager subscriptionManager, UserMylistManager userMylistManager, Services.HohoemaPlaylist hohoemaPlaylist, PageManager pageManager, ExternalAccessService externalAccessService, NiconicoFollowToggleButtonService followToggleButtonService, Commands.Subscriptions.CreateSubscriptionGroupCommand createSubscriptionGroupCommand ) : base(pageManager) { HasOwnerVideo = true; MylistGroups = new ObservableCollection <MylistGroupListItem>(); VideoInfoItems = new ObservableCollection <VideoInfoControlViewModel>(); OpenUserVideoPageCommand = VideoInfoItems.ObserveProperty(x => x.Count) .Select(x => x > 0) .ToReactiveCommand() .AddTo(_CompositeDisposable); OpenUserVideoPageCommand.Subscribe(x => { PageManager.OpenPage(HohoemaPageType.UserVideo, UserId); }) .AddTo(_CompositeDisposable); IsNGVideoOwner = new ReactiveProperty <bool>(false, ReactivePropertyMode.DistinctUntilChanged); IsNGVideoOwner.Subscribe(isNgVideoOwner => { if (isNgVideoOwner) { NgSettings.AddNGVideoOwnerId(UserId, UserName); IsNGVideoOwner.Value = true; Debug.WriteLine(UserName + "をNG動画投稿者として登録しました。"); } else { NgSettings.RemoveNGVideoOwnerId(UserId); IsNGVideoOwner.Value = false; Debug.WriteLine(UserName + "をNG動画投稿者の指定を解除しました。"); } }); NiconicoSession = niconicoSession; SubscriptionManager = subscriptionManager; UserMylistManager = userMylistManager; ExternalAccessService = externalAccessService; FollowToggleButtonService = followToggleButtonService; CreateSubscriptionGroupCommand = createSubscriptionGroupCommand; UserProvider = userProvider; NgSettings = ngSettings; }
public UserInfoPageViewModel( HohoemaApp hohoemaApp , PageManager pageManager ) : base(hohoemaApp, pageManager) { HasOwnerVideo = true; MylistGroups = new ObservableCollection <MylistGroupListItem>(); VideoInfoItems = new ObservableCollection <VideoInfoControlViewModel>(); IsFavorite = new ReactiveProperty <bool>() .AddTo(_CompositeDisposable); CanChangeFavoriteState = new ReactiveProperty <bool>() .AddTo(_CompositeDisposable); IsFavorite .Where(x => UserId != null) .Subscribe(async x => { if (_NowProcessFavorite) { return; } _NowProcessFavorite = true; CanChangeFavoriteState.Value = false; if (x) { if (await FavoriteUser()) { Debug.WriteLine(UserName + "をお気に入り登録しました."); } else { // お気に入り登録に失敗した場合は状態を差し戻し Debug.WriteLine(UserName + "をお気に入り登録に失敗"); IsFavorite.Value = false; } } else { if (await UnfavoriteUser()) { Debug.WriteLine(UserName + "をお気に入り解除しました."); } else { // お気に入り解除に失敗した場合は状態を差し戻し Debug.WriteLine(UserName + "お気に入り解除に失敗"); IsFavorite.Value = true; } } CanChangeFavoriteState.Value = IsFavorite.Value == true || HohoemaApp.FollowManager.CanMoreAddFollow(FollowItemType.User); _NowProcessFavorite = false; }) .AddTo(_CompositeDisposable); OpenUserVideoPageCommand = VideoInfoItems.ObserveProperty(x => x.Count) .Select(x => x > 0) .ToReactiveCommand() .AddTo(_CompositeDisposable); OpenUserVideoPageCommand.Subscribe(x => { PageManager.OpenPage(HohoemaPageType.UserVideo, UserId); }) .AddTo(_CompositeDisposable); IsNGVideoOwner = new ReactiveProperty <bool>(false); IsNGVideoOwner.Subscribe(isNgVideoOwner => { if (isNgVideoOwner) { HohoemaApp.UserSettings.NGSettings.AddNGVideoOwnerId(UserId, UserName); IsNGVideoOwner.Value = true; Debug.WriteLine(UserName + "をNG動画投稿者として登録しました。"); } else { HohoemaApp.UserSettings.NGSettings.RemoveNGVideoOwnerId(UserId); IsNGVideoOwner.Value = false; Debug.WriteLine(UserName + "をNG動画投稿者の指定を解除しました。"); } }); }
public UserInfoPageViewModel( ApplicationLayoutManager applicationLayoutManager, UserProvider userProvider, UserFollowProvider userFollowProvider, VideoFilteringSettings ngSettings, NiconicoSession niconicoSession, SubscriptionManager subscriptionManager, LoginUserOwnedMylistManager userMylistManager, PageManager pageManager, MylistResolver mylistRepository, VideoPlayWithQueueCommand videoPlayWithQueueCommand, AddSubscriptionCommand addSubscriptionCommand, OpenLinkCommand openLinkCommand ) { NiconicoSession = niconicoSession; SubscriptionManager = subscriptionManager; UserMylistManager = userMylistManager; PageManager = pageManager; _mylistRepository = mylistRepository; VideoPlayWithQueueCommand = videoPlayWithQueueCommand; AddSubscriptionCommand = addSubscriptionCommand; OpenLinkCommand = openLinkCommand; ApplicationLayoutManager = applicationLayoutManager; UserProvider = userProvider; _userFollowProvider = userFollowProvider; NgSettings = ngSettings; HasOwnerVideo = true; VideoInfoItems = new ObservableCollection <VideoListItemControlViewModel>(); OpenUserVideoPageCommand = VideoInfoItems.ObserveProperty(x => x.Count) .Select(x => x > 0) .ToReactiveCommand() .AddTo(_CompositeDisposable); OpenUserVideoPageCommand.Subscribe(x => { PageManager.OpenPageWithId(HohoemaPageType.UserVideo, UserId); }) .AddTo(_CompositeDisposable); IsNGVideoOwner = new ReactiveProperty <bool>(false, ReactivePropertyMode.DistinctUntilChanged); IsNGVideoOwner.Subscribe(isNgVideoOwner => { if (isNgVideoOwner) { NgSettings.AddHiddenVideoOwnerId(UserId, Nickname); IsNGVideoOwner.Value = true; Debug.WriteLine(Nickname + "をNG動画投稿者として登録しました。"); } else { NgSettings.RemoveHiddenVideoOwnerId(UserId); IsNGVideoOwner.Value = false; Debug.WriteLine(Nickname + "をNG動画投稿者の指定を解除しました。"); } }); }