From cbdbb809ef2ec35f110a9f27b2c158f44e5c41cd Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Fri, 14 Jun 2024 01:52:45 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=20v3.15.1-dev=20=E9=96=8B=E7=99=BA=E9=96=8B=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.txt | 2 ++ OpenTween/Properties/AssemblyInfo.cs | 2 +- OpenTween/Properties/Resources.Designer.cs | 6 ++++-- appveyor.yml | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index c5ecdc3d6..9fdceda49 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,7 @@ 更新履歴 +==== Unreleased + ==== Ver 3.15.0(2024/06/14) * NEW: Misskeyでのノート投稿時のファイル添付に対応しました - 追加で必要な権限があるため、前バージョンから使用している Misskey アカウントは再度追加し直す必要があります diff --git a/OpenTween/Properties/AssemblyInfo.cs b/OpenTween/Properties/AssemblyInfo.cs index 180994501..10f3f7de1 100644 --- a/OpenTween/Properties/AssemblyInfo.cs +++ b/OpenTween/Properties/AssemblyInfo.cs @@ -22,7 +22,7 @@ // 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です [assembly: Guid("2d0ae0ba-adac-49a2-9b10-26fd69e695bf")] -[assembly: AssemblyVersion("3.15.0.0")] +[assembly: AssemblyVersion("3.15.0.1")] [assembly: InternalsVisibleTo("OpenTween.Tests")] [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] // for Moq diff --git a/OpenTween/Properties/Resources.Designer.cs b/OpenTween/Properties/Resources.Designer.cs index 1ad0d302d..1260dd1d5 100644 --- a/OpenTween/Properties/Resources.Designer.cs +++ b/OpenTween/Properties/Resources.Designer.cs @@ -625,12 +625,14 @@ internal static string ChangeIconToolStripMenuItem_Confirm { /// /// 更新履歴 /// + ///==== Unreleased + /// ///==== Ver 3.15.0(2024/06/14) /// * NEW: Misskeyでのノート投稿時のファイル添付に対応しました /// - 追加で必要な権限があるため、前バージョンから使用している Misskey アカウントは再度追加し直す必要があります /// * FIX: Favoritesタブが空のまま更新されない不具合を修正 /// * FIX: 検索タブのクエリ入力欄で日本語入力をオンにできない不具合を修正 - /// + /// ///==== Ver 3.14.0(2024/06/11) /// * NEW: メインアカウント以外のホームタイムライン表示に対応 /// - タブ単位で切り替わるマルチアカウント機能です @@ -638,7 +640,7 @@ internal static string ChangeIconToolStripMenuItem_Confirm { /// - 現時点ではメインアカウント以外のタブ設定は次回起動時に保持されません /// * NEW: Misskeyアカウントのホームタイムライン表示・投稿に対応しました /// - 現時点では Misskey アカウントをメインに設定することはできません - /// - MFMの表示には対応していません [残りの文字列は切り詰められました]"; に類似しているローカライズされた文字列を検索します。 + /// [残りの文字列は切り詰められました]"; に類似しているローカライズされた文字列を検索します。 /// internal static string ChangeLog { get { diff --git a/appveyor.yml b/appveyor.yml index c4aac59fd..37068386b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 3.14.0.{build} +version: 3.15.0.{build} os: Visual Studio 2022 From 5ae8c29099837eda00f0ff7c970082adb4612485 Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Fri, 14 Jun 2024 23:37:41 +0900 Subject: [PATCH 2/5] =?UTF-8?q?Cookie=E4=BD=BF=E7=94=A8=E6=99=82=E3=81=AB?= =?UTF-8?q?=E3=80=8CList=E3=81=AE=E7=99=BA=E8=A8=80=E5=8F=96=E5=BE=97?= =?UTF-8?q?=E3=81=AB=E5=85=AC=E5=BC=8FRT=E3=82=92=E5=90=AB=E3=82=81?= =?UTF-8?q?=E3=82=8B=E3=80=8D=E3=81=AE=E8=A8=AD=E5=AE=9A=E3=81=8C=E9=81=A9?= =?UTF-8?q?=E7=94=A8=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=E4=B8=8D=E5=85=B7?= =?UTF-8?q?=E5=90=88=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: 961e4ee8 ("ISocialProtocolClient.GetListTimelineメソッドを追加") --- CHANGELOG.txt | 1 + .../SocialProtocol/Twitter/TimelineResponseFilter.cs | 8 ++++++++ OpenTween/SocialProtocol/Twitter/TwitterGraphqlClient.cs | 6 +++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 9fdceda49..a2bf7fda0 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,6 +1,7 @@ 更新履歴 ==== Unreleased + * FIX: Cookie使用時に「Listの発言取得に公式RTを含める」の設定が適用されない不具合を修正 ==== Ver 3.15.0(2024/06/14) * NEW: Misskeyでのノート投稿時のファイル添付に対応しました diff --git a/OpenTween/SocialProtocol/Twitter/TimelineResponseFilter.cs b/OpenTween/SocialProtocol/Twitter/TimelineResponseFilter.cs index 016444752..287757c34 100644 --- a/OpenTween/SocialProtocol/Twitter/TimelineResponseFilter.cs +++ b/OpenTween/SocialProtocol/Twitter/TimelineResponseFilter.cs @@ -39,6 +39,8 @@ public class TimelineResponseFilter public bool IsHomeTimeline { get; set; } + public bool IncludeRts { get; set; } = true; + public TimelineResponseFilter(TwitterAccountState accountState) { this.accountState = accountState; @@ -56,6 +58,9 @@ public PostClass[] Run(PostClass[] posts) filteredPosts = this.FilterMutedUserPosts(filteredPosts); } + if (!this.IncludeRts) + filteredPosts = this.FilterRetweets(filteredPosts); + return filteredPosts.ToArray(); } @@ -85,5 +90,8 @@ private bool IsMutedPost(PostClass post) return false; } + + private IEnumerable FilterRetweets(IEnumerable posts) + => posts.Where(x => x.RetweetedId == null); } } diff --git a/OpenTween/SocialProtocol/Twitter/TwitterGraphqlClient.cs b/OpenTween/SocialProtocol/Twitter/TwitterGraphqlClient.cs index 84acb0f59..1c51788c1 100644 --- a/OpenTween/SocialProtocol/Twitter/TwitterGraphqlClient.cs +++ b/OpenTween/SocialProtocol/Twitter/TwitterGraphqlClient.cs @@ -33,6 +33,7 @@ using OpenTween.Api.GraphQL; using OpenTween.Api.TwitterV2; using OpenTween.Models; +using OpenTween.Setting; namespace OpenTween.SocialProtocol.Twitter { @@ -177,7 +178,10 @@ public async Task GetListTimeline(long listId, int count, IQue 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); From 8e0a8469c15689d6dc2120a418be0c374f0a3352 Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Sat, 15 Jun 2024 01:19:38 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=E7=94=BB=E5=83=8F=E6=8A=95=E7=A8=BF?= =?UTF-8?q?=E6=99=82=E3=81=ABTwitterMediaId=E3=81=8B=E3=82=89string?= =?UTF-8?q?=E3=81=B8=E3=81=AE=E5=A4=89=E6=8F=9B=E3=81=8C=E6=AD=A3=E3=81=97?= =?UTF-8?q?=E3=81=8F=E8=A1=8C=E3=81=88=E3=81=A6=E3=81=AA=E3=81=84=E4=B8=8D?= =?UTF-8?q?=E5=85=B7=E5=90=88=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: 2456ab12 ("TwitterMediaIdをレコード型として追加") --- CHANGELOG.txt | 1 + OpenTween.Tests/Api/GraphQL/CreateTweetRequestTest.cs | 3 ++- OpenTween/Api/GraphQL/CreateTweetRequest.cs | 5 +++-- OpenTween/Twitter.cs | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index a2bf7fda0..b5c6c21b9 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -2,6 +2,7 @@ ==== Unreleased * FIX: Cookie使用時に「Listの発言取得に公式RTを含める」の設定が適用されない不具合を修正 + * FIX: Twitterアカウントでの画像を添付したツイートの投稿がエラーになる不具合を修正 ==== Ver 3.15.0(2024/06/14) * NEW: Misskeyでのノート投稿時のファイル添付に対応しました diff --git a/OpenTween.Tests/Api/GraphQL/CreateTweetRequestTest.cs b/OpenTween.Tests/Api/GraphQL/CreateTweetRequestTest.cs index e6c843f49..87d48597a 100644 --- a/OpenTween.Tests/Api/GraphQL/CreateTweetRequestTest.cs +++ b/OpenTween.Tests/Api/GraphQL/CreateTweetRequestTest.cs @@ -23,6 +23,7 @@ using Moq; using OpenTween.Connection; using OpenTween.Models; +using OpenTween.SocialProtocol.Twitter; using Xunit; namespace OpenTween.Api.GraphQL @@ -104,7 +105,7 @@ public async Task Send_MediaTest() var request = new CreateTweetRequest { TweetText = "tetete", - MediaIds = new[] { "11111", "22222" }, + MediaIds = new TwitterMediaId[] { new("11111"), new("22222") }, }; await request.Send(mock.Object); mock.VerifyAll(); diff --git a/OpenTween/Api/GraphQL/CreateTweetRequest.cs b/OpenTween/Api/GraphQL/CreateTweetRequest.cs index b268cb83a..d91da2527 100644 --- a/OpenTween/Api/GraphQL/CreateTweetRequest.cs +++ b/OpenTween/Api/GraphQL/CreateTweetRequest.cs @@ -30,6 +30,7 @@ using OpenTween.Api.DataModel; using OpenTween.Connection; using OpenTween.Models; +using OpenTween.SocialProtocol.Twitter; namespace OpenTween.Api.GraphQL { @@ -43,7 +44,7 @@ public class CreateTweetRequest public TwitterUserId[] ExcludeReplyUserIds { get; set; } = Array.Empty(); - public string[] MediaIds { get; set; } = Array.Empty(); + public TwitterMediaId[] MediaIds { get; set; } = Array.Empty(); public string? AttachmentUrl { get; set; } @@ -112,7 +113,7 @@ public string CreateRequestBody() ? new( MediaEntities: this.MediaIds .Select(x => new VariableMediaEntity( - MediaId: x, + MediaId: x.Id, TaggedUsers: Array.Empty() )) .ToArray(), diff --git a/OpenTween/Twitter.cs b/OpenTween/Twitter.cs index b014d068b..0d1458bb2 100644 --- a/OpenTween/Twitter.cs +++ b/OpenTween/Twitter.cs @@ -228,7 +228,7 @@ await this.SendDirectMessage(param.Text, mediaId) TweetText = param.Text, InReplyToTweetId = param.InReplyTo?.StatusId.ToTwitterStatusId(), ExcludeReplyUserIds = param.ExcludeReplyUserIds.OfType().ToArray(), - MediaIds = param.MediaIds.Select(x => x.ToString()).ToArray(), + MediaIds = param.MediaIds.ToArray(), AttachmentUrl = param.AttachmentUrl, }; From 398afe4f10b1516abc09b1b17202cd103f3a848e Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Sat, 15 Jun 2024 02:18:07 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=E8=A8=AD=E5=AE=9A=E7=94=BB=E9=9D=A2?= =?UTF-8?q?=E3=82=92=E9=96=89=E3=81=98=E3=82=8B=E5=BA=A6=E3=81=ABFollowerI?= =?UTF-8?q?ds=E3=81=AA=E3=81=A9=E3=81=8C=E7=A9=BA=E3=81=AE=E7=8A=B6?= =?UTF-8?q?=E6=85=8B=E3=81=AB=E3=83=AA=E3=82=BB=E3=83=83=E3=83=88=E3=81=95?= =?UTF-8?q?=E3=82=8C=E3=82=8B=E4=B8=8D=E5=85=B7=E5=90=88=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: eb7dd7fd ("TwitterAccountStateに FollowerIds, NoRetweetUserIds を追加") --- CHANGELOG.txt | 1 + OpenTween/SocialProtocol/Misskey/MisskeyAccount.cs | 12 ++++-------- .../SocialProtocol/Misskey/MisskeyAccountState.cs | 8 ++++++++ OpenTween/SocialProtocol/Twitter/TwitterAccount.cs | 9 +++------ .../SocialProtocol/Twitter/TwitterAccountState.cs | 6 ++++++ 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index b5c6c21b9..01eff36a4 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ ==== Unreleased * FIX: Cookie使用時に「Listの発言取得に公式RTを含める」の設定が適用されない不具合を修正 * FIX: Twitterアカウントでの画像を添付したツイートの投稿がエラーになる不具合を修正 + * FIX: 設定画面を閉じた直後に取得されるツイートが全て両思い表示になる不具合を修正 ==== Ver 3.15.0(2024/06/14) * NEW: Misskeyでのノート投稿時のファイル添付に対応しました diff --git a/OpenTween/SocialProtocol/Misskey/MisskeyAccount.cs b/OpenTween/SocialProtocol/Misskey/MisskeyAccount.cs index 3aed2b624..c1fe6b12e 100644 --- a/OpenTween/SocialProtocol/Misskey/MisskeyAccount.cs +++ b/OpenTween/SocialProtocol/Misskey/MisskeyAccount.cs @@ -42,7 +42,7 @@ ISocialProtocolClient ISocialAccount.Client public bool IsDisposed { get; private set; } - public MisskeyAccountState AccountState { get; private set; } = new(); + public MisskeyAccountState AccountState { get; } = new(); ISocialAccountState ISocialAccount.AccountState => this.AccountState; @@ -71,14 +71,10 @@ public void Initialize(UserAccount accountSettings, SettingCommon settingCommon) { Debug.Assert(accountSettings.UniqueKey == this.UniqueKey.Id, "UniqueKey must be same as current value."); - var serverUri = new Uri($"https://{accountSettings.ServerHostname}/"); - this.AccountState = new(serverUri, new(accountSettings.UserId), accountSettings.Username) - { - AuthorizedScopes = accountSettings.Scopes, - HasUnrecoverableError = false, - }; + this.AccountState.UpdateFromSettings(accountSettings); + this.AccountState.HasUnrecoverableError = false; - var apiBaseUri = new Uri(serverUri, "/api/"); + var apiBaseUri = new Uri(this.AccountState.ServerUri, "/api/"); var newConnection = new MisskeyApiConnection(apiBaseUri, accountSettings.TokenSecret, this.AccountState); (this.connection, var oldConnection) = (newConnection, this.connection); diff --git a/OpenTween/SocialProtocol/Misskey/MisskeyAccountState.cs b/OpenTween/SocialProtocol/Misskey/MisskeyAccountState.cs index 972f54c2d..483e24d75 100644 --- a/OpenTween/SocialProtocol/Misskey/MisskeyAccountState.cs +++ b/OpenTween/SocialProtocol/Misskey/MisskeyAccountState.cs @@ -68,6 +68,14 @@ public MisskeyAccountState(Uri serverUri, MisskeyUserId userId, string userName) this.UserName = userName; } + public void UpdateFromSettings(UserAccount accountSettings) + { + this.ServerUri = new($"https://{accountSettings.ServerHostname}/"); + this.UserId = new(accountSettings.UserId); + this.UserName = accountSettings.Username; + this.AuthorizedScopes = accountSettings.Scopes; + } + /// ユーザー情報を更新します public void UpdateFromUser(MisskeyUser self) { diff --git a/OpenTween/SocialProtocol/Twitter/TwitterAccount.cs b/OpenTween/SocialProtocol/Twitter/TwitterAccount.cs index aac7607f8..03a17c8e3 100644 --- a/OpenTween/SocialProtocol/Twitter/TwitterAccount.cs +++ b/OpenTween/SocialProtocol/Twitter/TwitterAccount.cs @@ -41,7 +41,7 @@ public string AccountType public bool IsDisposed { get; private set; } - public TwitterAccountState AccountState { get; private set; } = new(); + public TwitterAccountState AccountState { get; } = new(); ISocialAccountState ISocialAccount.AccountState => this.AccountState; @@ -72,12 +72,9 @@ public void Initialize(UserAccount accountSettings, SettingCommon settingCommon) Debug.Assert(accountSettings.UniqueKey == this.UniqueKey.Id, "UniqueKey must be same as current value."); var credential = accountSettings.GetTwitterCredential(); - var userId = new TwitterUserId(accountSettings.UserId); - this.AccountState = new TwitterAccountState(userId, accountSettings.Username) - { - HasUnrecoverableError = credential is TwitterCredentialNone, - }; + this.AccountState.UpdateFromSettings(accountSettings); + this.AccountState.HasUnrecoverableError = credential is TwitterCredentialNone; var newConnection = new TwitterApiConnection(credential, this.AccountState); (this.apiConnection, var oldConnection) = (newConnection, this.apiConnection); diff --git a/OpenTween/SocialProtocol/Twitter/TwitterAccountState.cs b/OpenTween/SocialProtocol/Twitter/TwitterAccountState.cs index edda96541..63bd60802 100644 --- a/OpenTween/SocialProtocol/Twitter/TwitterAccountState.cs +++ b/OpenTween/SocialProtocol/Twitter/TwitterAccountState.cs @@ -73,6 +73,12 @@ public TwitterAccountState(TwitterUserId userId, string userName) this.UserName = userName; } + public void UpdateFromSettings(UserAccount accountSettings) + { + this.UserId = new(accountSettings.UserId); + this.UserName = accountSettings.Username; + } + /// ユーザー情報を更新します public void UpdateFromUser(TwitterUser self) { From a27c0caeb0f07206e712af5daac3c235a5eadfb1 Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Sat, 15 Jun 2024 02:38:39 +0900 Subject: [PATCH 5/5] =?UTF-8?q?OpenTween=20v3.15.1=20=E3=83=AA=E3=83=AA?= =?UTF-8?q?=E3=83=BC=E3=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.txt | 2 +- OpenTween/Properties/AssemblyInfo.cs | 2 +- OpenTween/Properties/Resources.Designer.cs | 11 +++++------ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 01eff36a4..25f08b59e 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,6 +1,6 @@ 更新履歴 -==== Unreleased +==== Ver 3.15.1(2024/06/15) * FIX: Cookie使用時に「Listの発言取得に公式RTを含める」の設定が適用されない不具合を修正 * FIX: Twitterアカウントでの画像を添付したツイートの投稿がエラーになる不具合を修正 * FIX: 設定画面を閉じた直後に取得されるツイートが全て両思い表示になる不具合を修正 diff --git a/OpenTween/Properties/AssemblyInfo.cs b/OpenTween/Properties/AssemblyInfo.cs index 10f3f7de1..ff5585dde 100644 --- a/OpenTween/Properties/AssemblyInfo.cs +++ b/OpenTween/Properties/AssemblyInfo.cs @@ -22,7 +22,7 @@ // 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です [assembly: Guid("2d0ae0ba-adac-49a2-9b10-26fd69e695bf")] -[assembly: AssemblyVersion("3.15.0.1")] +[assembly: AssemblyVersion("3.15.1.0")] [assembly: InternalsVisibleTo("OpenTween.Tests")] [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] // for Moq diff --git a/OpenTween/Properties/Resources.Designer.cs b/OpenTween/Properties/Resources.Designer.cs index 1260dd1d5..3e46ef6e2 100644 --- a/OpenTween/Properties/Resources.Designer.cs +++ b/OpenTween/Properties/Resources.Designer.cs @@ -625,7 +625,10 @@ internal static string ChangeIconToolStripMenuItem_Confirm { /// /// 更新履歴 /// - ///==== Unreleased + ///==== Ver 3.15.1(2024/06/15) + /// * FIX: Cookie使用時に「Listの発言取得に公式RTを含める」の設定が適用されない不具合を修正 + /// * FIX: Twitterアカウントでの画像を添付したツイートの投稿がエラーになる不具合を修正 + /// * FIX: 設定画面を閉じた直後に取得されるツイートが全て両思い表示になる不具合を修正 /// ///==== Ver 3.15.0(2024/06/14) /// * NEW: Misskeyでのノート投稿時のファイル添付に対応しました @@ -636,11 +639,7 @@ internal static string ChangeIconToolStripMenuItem_Confirm { ///==== Ver 3.14.0(2024/06/11) /// * NEW: メインアカウント以外のホームタイムライン表示に対応 /// - タブ単位で切り替わるマルチアカウント機能です - /// - 投稿欄やふぁぼ・RT等の機能も表示中のタブに連動して使用するアカウントが変わります - /// - 現時点ではメインアカウント以外のタブ設定は次回起動時に保持されません - /// * NEW: Misskeyアカウントのホームタイムライン表示・投稿に対応しました - /// - 現時点では Misskey アカウントをメインに設定することはできません - /// [残りの文字列は切り詰められました]"; に類似しているローカライズされた文字列を検索します。 + /// - 投稿欄やふぁぼ・ [残りの文字列は切り詰められました]"; に類似しているローカライズされた文字列を検索します。 /// internal static string ChangeLog { get {