public bool RemoveFeedSource(Database.Feed target, Database.Bookmark feedSource) { var ensureFeed = GetFeedGroup(target.Id); if (ensureFeed != null) { var targetFeedSource = ensureFeed.Sources.FirstOrDefault(x => x.Id == feedSource.Id); if (ensureFeed.Sources.Remove(targetFeedSource)) { UpdateFeedGroup(ensureFeed); FeedSourceRemoved?.Invoke(this, new FeedSourceRemovedEventArgs() { Feed = ensureFeed, Bookmark = feedSource, }); return(true); } } return(false); }
private async Task <IEnumerable <Database.NicoVideo> > GetItems(Database.Bookmark source) { var contentProvider = HohoemaApp.ContentProvider; switch (source.BookmarkType) { case Database.BookmarkType.User: { var items = await contentProvider.GetUserVideos(uint.Parse(source.Content), 1); return(items.Items.Select(x => { var nicoVideo = Database.NicoVideoDb.Get(x.VideoId); nicoVideo.Title = x.Title; nicoVideo.ThumbnailUrl = x.ThumbnailUrl.OriginalString; nicoVideo.PostedAt = x.SubmitTime; nicoVideo.Length = x.Length; return nicoVideo; } )); } case Database.BookmarkType.Mylist: { var items = await contentProvider.GetMylistGroupVideo(source.Content, 0, 30); return(items.MylistVideoInfoItems.Select(x => { var nicoVideo = Database.NicoVideoDb.Get(x.Video.Id); nicoVideo.Title = x.Video.Title; nicoVideo.ThumbnailUrl = x.Video.ThumbnailUrl.OriginalString; nicoVideo.PostedAt = x.Video.FirstRetrieve; nicoVideo.Length = x.Video.Length; nicoVideo.IsDeleted = x.Video.IsDeleted; nicoVideo.DescriptionWithHtml = x.Video.Description; nicoVideo.MylistCount = (int)x.Video.MylistCount; nicoVideo.CommentCount = (int)x.Thread.GetCommentCount(); nicoVideo.ViewCount = (int)x.Video.ViewCount; return nicoVideo; })); } case Database.BookmarkType.SearchWithTag: { var items = await contentProvider.GetTagSearch(source.Content, 0, 30); return(items.VideoInfoItems.Select(x => { var nicoVideo = Database.NicoVideoDb.Get(x.Video.Id); nicoVideo.Title = x.Video.Title; nicoVideo.ThumbnailUrl = x.Video.ThumbnailUrl.OriginalString; nicoVideo.PostedAt = x.Video.FirstRetrieve; nicoVideo.Length = x.Video.Length; nicoVideo.IsDeleted = x.Video.IsDeleted; nicoVideo.DescriptionWithHtml = x.Video.Description; nicoVideo.MylistCount = (int)x.Video.MylistCount; nicoVideo.CommentCount = (int)x.Thread.GetCommentCount(); nicoVideo.ViewCount = (int)x.Video.ViewCount; return nicoVideo; })); } case Database.BookmarkType.SearchWithKeyword: { var items = await contentProvider.GetKeywordSearch(source.Content, 0, 30); return(items.VideoInfoItems.Select(x => { var nicoVideo = Database.NicoVideoDb.Get(x.Video.Id); nicoVideo.Title = x.Video.Title; nicoVideo.ThumbnailUrl = x.Video.ThumbnailUrl.OriginalString; nicoVideo.PostedAt = x.Video.FirstRetrieve; nicoVideo.Length = x.Video.Length; nicoVideo.IsDeleted = x.Video.IsDeleted; nicoVideo.DescriptionWithHtml = x.Video.Description; nicoVideo.MylistCount = (int)x.Video.MylistCount; nicoVideo.CommentCount = (int)x.Thread.GetCommentCount(); nicoVideo.ViewCount = (int)x.Video.ViewCount; return nicoVideo; })); } default: return(null); } }
public FeedVideoInfoControlViewModel(Database.NicoVideo nicoVideo, Database.Bookmark sourceBookmark) : base(nicoVideo) { SourceBookmark = sourceBookmark; }
protected override async void Execute(object parameter) { Database.Bookmark bookmark = null; if (parameter is Database.Bookmark) { bookmark = parameter as Database.Bookmark; } else if (parameter is Models.FollowItemInfo) { var followInfo = parameter as Models.FollowItemInfo; bookmark = new Database.Bookmark() { Label = followInfo.Name, BookmarkType = Models.FeedManager.FollowItemTypeConvertToFeedSourceType(followInfo.FollowItemType), Content = followInfo.Id }; } else if (parameter is Interfaces.IVideoContent) { var videoInfo = parameter as Interfaces.IVideoContent; if (videoInfo.OwnerUserId == null) { System.Diagnostics.Debug.WriteLine("フィード登録失敗、動画投稿者の情報がありません。"); return; } var hohoemaApp = App.Current.Container.Resolve <Models.HohoemaApp>(); var userInfo = await hohoemaApp.ContentProvider.GetUserInfo(videoInfo.OwnerUserId); if (userInfo != null) { bookmark = new Database.Bookmark() { Label = userInfo.Nickname, BookmarkType = Database.BookmarkType.User, Content = videoInfo.OwnerUserId }; } } if (bookmark != null) { var hohoemaApp = App.Current.Container.Resolve <Models.HohoemaApp>(); if (hohoemaApp.FeedManager.GetAllFeedGroup() .Where(x => x.Sources.Any()) .Select(x => x.Sources.First()) .Any(x => x.BookmarkType == bookmark.BookmarkType && x.Content == bookmark.Content)) { return; } var feedGroup = hohoemaApp.FeedManager.AddFeedGroup(bookmark.Label, bookmark); if (feedGroup != null) { // 通知 (App.Current as App).PublishInAppNotification( Models.InAppNotificationPayload.CreateReadOnlyNotification( $"{feedGroup.Label} を新着チェック対象として追加しました" ) ); } } }