From: Kimura Youichi Date: Sat, 4 May 2024 17:45:06 +0000 (+0900) Subject: タブの種類別に分かれていたCreatePostsFromJsonメソッドを統合 X-Git-Tag: OpenTween_v3.14.0^2~38^2~2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=524e8940e388121be2c89c44447dc5ed5804505d;p=opentween%2Fopen-tween.git タブの種類別に分かれていたCreatePostsFromJsonメソッドを統合 --- diff --git a/OpenTween/Twitter.cs b/OpenTween/Twitter.cs index 257a0d80..849f99da 100644 --- a/OpenTween/Twitter.cs +++ b/OpenTween/Twitter.cs @@ -691,7 +691,7 @@ namespace OpenTween } } - this.CreatePostsFromJson(statuses, MyCommon.WORKERTYPE.Timeline, tab, firstLoad); + this.CreatePostsFromJson(statuses, tab, firstLoad); } public async Task GetMentionsTimelineApi(MentionsTabModel tab, bool more, bool firstLoad) @@ -733,7 +733,7 @@ namespace OpenTween } } - this.CreatePostsFromJson(statuses, MyCommon.WORKERTYPE.Reply, tab, firstLoad); + this.CreatePostsFromJson(statuses, tab, firstLoad); } public async Task GetUserTimelineApi(UserTimelineTabModel tab, bool more, bool firstLoad) @@ -787,7 +787,7 @@ namespace OpenTween } } - this.CreatePostsFromJson(statuses, MyCommon.WORKERTYPE.UserTimeline, tab, firstLoad); + this.CreatePostsFromJson(statuses, tab, firstLoad); } public async Task GetStatusApi(TwitterStatusId id, bool firstLoad = false) @@ -828,76 +828,26 @@ namespace OpenTween return post; } - private void CreatePostsFromJson(TwitterStatus[] items, MyCommon.WORKERTYPE gType, TabModel? tab, bool firstLoad) + private void CreatePostsFromJson(TwitterStatus[] items, TabModel tab, bool firstLoad) { var posts = items.Select(x => this.CreatePostsFromStatusData(x, firstLoad)).ToArray(); TwitterPostFactory.AdjustSortKeyForPromotedPost(posts); - foreach (var post in posts) + if (tab is not UserTimelineTabModel) { - // 二重取得回避 - lock (this.lockObj) - { - var id = post.StatusId; - if (tab == null) - { - if (TabInformations.GetInstance().ContainsKey(id)) continue; - } - else - { - if (tab.Contains(id)) continue; - } - } - - // RT禁止ユーザーによるもの - if (gType != MyCommon.WORKERTYPE.UserTimeline && - post.RetweetedByUserId != null && this.noRTId.Contains(post.RetweetedByUserId.Value)) continue; - - if (tab != null && tab is InternalStorageTabModel) - tab.AddPostQueue(post); - else - TabInformations.GetInstance().AddPost(post); + // RT 禁止ユーザーによる RT を除外 + posts = posts.Where( + x => x.RetweetedByUserId == null || this.noRTId.Contains(x.RetweetedByUserId.Value) + ).ToArray(); } - } - - private void CreatePostsFromSearchJson(TwitterStatus[] statuses, PublicSearchTabModel tab, bool firstLoad) - { - var posts = statuses.Select(x => this.CreatePostsFromStatusData(x, firstLoad)).ToArray(); - - TwitterPostFactory.AdjustSortKeyForPromotedPost(posts); foreach (var post in posts) { - // 二重取得回避 - lock (this.lockObj) - { - if (tab.Contains(post.StatusId)) - continue; - } - - tab.AddPostQueue(post); - } - } - - private void CreateFavoritePostsFromJson(TwitterStatus[] items, bool firstLoad) - { - var favTab = TabInformations.GetInstance().FavoriteTab; - - foreach (var status in items) - { - var statusId = new TwitterStatusId(status.IdStr); - - // 二重取得回避 - lock (this.lockObj) - { - if (favTab.Contains(statusId)) - continue; - } - - var post = this.CreatePostsFromStatusData(status, firstLoad, favTweet: true); - - TabInformations.GetInstance().AddPost(post); + if (tab is InternalStorageTabModel) + tab.AddPostQueue(post); + else + TabInformations.GetInstance().AddPost(post); } } @@ -942,7 +892,7 @@ namespace OpenTween } } - this.CreatePostsFromJson(statuses, MyCommon.WORKERTYPE.List, tab, firstLoad); + this.CreatePostsFromJson(statuses, tab, firstLoad); } /// @@ -1179,7 +1129,7 @@ namespace OpenTween if (!TabInformations.GetInstance().ContainsTab(tab)) return; - this.CreatePostsFromSearchJson(statuses, tab, firstLoad); + this.CreatePostsFromJson(statuses, tab, firstLoad); } public async Task GetDirectMessageEvents(DirectMessagesTabModel dmTab, bool backward, bool firstLoad) @@ -1299,7 +1249,7 @@ namespace OpenTween } } - this.CreateFavoritePostsFromJson(statuses, firstLoad); + this.CreatePostsFromJson(statuses, tab, firstLoad); } ///