OSDN Git Service

Cookie使用時に「Listの発言取得に公式RTを含める」の設定が適用されない不具合を修正
authorKimura Youichi <kim.upsilon@bucyou.net>
Fri, 14 Jun 2024 14:37:41 +0000 (23:37 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Fri, 14 Jun 2024 14:41:35 +0000 (23:41 +0900)
Fixes: 961e4ee8 ("ISocialProtocolClient.GetListTimelineメソッドを追加")

CHANGELOG.txt
OpenTween/SocialProtocol/Twitter/TimelineResponseFilter.cs
OpenTween/SocialProtocol/Twitter/TwitterGraphqlClient.cs

index 9fdceda..a2bf7fd 100644 (file)
@@ -1,6 +1,7 @@
 更新履歴
 
 ==== Unreleased
+ * FIX: Cookie使用時に「Listの発言取得に公式RTを含める」の設定が適用されない不具合を修正
 
 ==== Ver 3.15.0(2024/06/14)
  * NEW: Misskeyでのノート投稿時のファイル添付に対応しました
index 0164447..287757c 100644 (file)
@@ -39,6 +39,8 @@ namespace OpenTween.SocialProtocol.Twitter
 
         public bool IsHomeTimeline { get; set; }
 
+        public bool IncludeRts { get; set; } = true;
+
         public TimelineResponseFilter(TwitterAccountState accountState)
         {
             this.accountState = accountState;
@@ -56,6 +58,9 @@ namespace OpenTween.SocialProtocol.Twitter
                 filteredPosts = this.FilterMutedUserPosts(filteredPosts);
             }
 
+            if (!this.IncludeRts)
+                filteredPosts = this.FilterRetweets(filteredPosts);
+
             return filteredPosts.ToArray();
         }
 
@@ -85,5 +90,8 @@ namespace OpenTween.SocialProtocol.Twitter
 
             return false;
         }
+
+        private IEnumerable<PostClass> FilterRetweets(IEnumerable<PostClass> posts)
+            => posts.Where(x => x.RetweetedId == null);
     }
 }
index 84acb0f..1c51788 100644 (file)
@@ -33,6 +33,7 @@ using System.Threading.Tasks;
 using OpenTween.Api.GraphQL;
 using OpenTween.Api.TwitterV2;
 using OpenTween.Models;
+using OpenTween.Setting;
 
 namespace OpenTween.SocialProtocol.Twitter
 {
@@ -177,7 +178,10 @@ namespace OpenTween.SocialProtocol.Twitter
 
             var posts = this.account.Legacy.CreatePostsFromJson(statuses, firstLoad);
 
-            var filter = new TimelineResponseFilter(this.account.AccountState);
+            var filter = new TimelineResponseFilter(this.account.AccountState)
+            {
+                IncludeRts = SettingManager.Instance.Common.IsListsIncludeRts,
+            };
             posts = filter.Run(posts);
 
             return new(posts, cursorTop, cursorBottom);