From 88dc452e538fee89c6c5580daed2a38f234249c9 Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Sat, 25 May 2024 05:13:54 +0900 Subject: [PATCH] =?utf8?q?MediaSelector.InitializeServices=E3=83=A1?= =?utf8?q?=E3=82=BD=E3=83=83=E3=83=89=E3=81=ABISocialAccount=E3=82=92?= =?utf8?q?=E4=BD=BF=E7=94=A8=E5=8F=AF=E8=83=BD=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- OpenTween.Tests/MediaSelectorTest.cs | 89 +++++++++++++----------------------- OpenTween/MediaSelector.cs | 27 ++++++++--- OpenTween/Tween.cs | 15 ++---- 3 files changed, 58 insertions(+), 73 deletions(-) diff --git a/OpenTween.Tests/MediaSelectorTest.cs b/OpenTween.Tests/MediaSelectorTest.cs index ffd65026..80155767 100644 --- a/OpenTween.Tests/MediaSelectorTest.cs +++ b/OpenTween.Tests/MediaSelectorTest.cs @@ -29,8 +29,7 @@ using System.Reflection; using System.Runtime.InteropServices; using System.Text; using Moq; -using OpenTween.Api; -using OpenTween.Api.DataModel; +using OpenTween.SocialProtocol.Twitter; using Xunit; namespace OpenTween @@ -51,10 +50,9 @@ namespace OpenTween [Fact] public void SelectedMediaServiceIndex_Test() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); Assert.Equal("Twitter", mediaSelector.MediaServices[0].Key); Assert.Equal("Imgur", mediaSelector.MediaServices[1].Key); @@ -69,10 +67,9 @@ namespace OpenTween [Fact] public void SelectMediaService_TwitterTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); Assert.Contains(mediaSelector.MediaServices, x => x.Key == "Twitter"); @@ -87,10 +84,9 @@ namespace OpenTween [Fact] public void SelectMediaService_ImgurTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Imgur"); // 投稿先に Imgur が選択されている @@ -103,10 +99,9 @@ namespace OpenTween [Fact] public void AddMediaItem_FilePath_SingleTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); var images = new[] { "Resources/re.gif" }; @@ -128,10 +123,9 @@ namespace OpenTween [Fact] public void AddMediaItem_MemoryImageTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); using (var bitmap = new Bitmap(width: 200, height: 200)) @@ -155,10 +149,9 @@ namespace OpenTween [Fact] public void AddMediaItem_FilePath_MultipleTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); var images = new[] { "Resources/re.gif", "Resources/re1.png" }; @@ -180,10 +173,9 @@ namespace OpenTween [Fact] public void ClearMediaItems_Test() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); mediaSelector.AddMediaItemFromFilePath(new[] { "Resources/re.gif" }); @@ -200,10 +192,9 @@ namespace OpenTween [Fact] public void DetachMediaItems_Test() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); mediaSelector.AddMediaItemFromFilePath(new[] { "Resources/re.gif" }); @@ -222,10 +213,9 @@ namespace OpenTween [Fact] public void SelectedMediaItemChange_Test() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); var images = new[] { "Resources/re.gif", "Resources/re1.png" }; @@ -259,10 +249,9 @@ namespace OpenTween [Fact] public void SelectedMediaItemChange_DisposeTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); var images = new[] { "Resources/re.gif", "Resources/re1.png" }; @@ -282,10 +271,9 @@ namespace OpenTween [Fact] public void SetSelectedMediaAltText_Test() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); var images = new[] { "Resources/re.gif", "Resources/re1.png" }; @@ -306,10 +294,9 @@ namespace OpenTween [Fact] public void Validate_PassTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); using var mediaItem = TestUtils.CreateDummyMediaItem(); @@ -321,10 +308,9 @@ namespace OpenTween [Fact] public void Validate_EmptyErrorTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); Assert.Equal( @@ -337,10 +323,9 @@ namespace OpenTween [Fact] public void Validate_ServiceNotSelectedErrorTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); using var mediaItem = TestUtils.CreateDummyMediaItem(); mediaSelector.AddMediaItem(mediaItem); @@ -354,10 +339,9 @@ namespace OpenTween [Fact] public void Validate_ExtensionErrorTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); var mock = new Mock(); @@ -376,10 +360,9 @@ namespace OpenTween [Fact] public void Validate_FileSizeErrorTest() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); + using var twAccount = new TwitterAccount(Guid.NewGuid()); using var mediaSelector = new MediaSelector(); - mediaSelector.InitializeServices(twitter, TwitterConfiguration.DefaultConfiguration()); + mediaSelector.InitializeServices(twAccount); mediaSelector.SelectMediaService("Twitter"); var mock = new Mock(); @@ -398,8 +381,6 @@ namespace OpenTween [Fact] public void MoveSelectedMediaItemToPrevious_Test() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); using var mediaSelector = new MediaSelector(); mediaSelector.AddMediaItemFromFilePath(new[] { "Resources/re.gif", "Resources/re1.png" }); @@ -414,8 +395,6 @@ namespace OpenTween [Fact] public void MoveSelectedMediaItemToNext_Test() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); using var mediaSelector = new MediaSelector(); mediaSelector.AddMediaItemFromFilePath(new[] { "Resources/re.gif", "Resources/re1.png" }); @@ -430,8 +409,6 @@ namespace OpenTween [Fact] public void RemoveSelectedMediaItem_Test() { - using var twitterApi = new TwitterApi(); - using var twitter = new Twitter(twitterApi); using var mediaSelector = new MediaSelector(); mediaSelector.AddMediaItemFromFilePath(new[] { "Resources/re.gif", "Resources/re1.png" }); diff --git a/OpenTween/MediaSelector.cs b/OpenTween/MediaSelector.cs index f2b2a720..7fceb534 100644 --- a/OpenTween/MediaSelector.cs +++ b/OpenTween/MediaSelector.cs @@ -32,6 +32,8 @@ using System.Text; using System.Threading.Tasks; using OpenTween.Api.DataModel; using OpenTween.MediaUploadServices; +using OpenTween.SocialProtocol; +using OpenTween.SocialProtocol.Twitter; namespace OpenTween { @@ -117,14 +119,27 @@ namespace OpenTween return index != -1 ? this.MediaServices[index].Value : null; } - public void InitializeServices(Twitter tw, TwitterConfiguration twitterConfig) + public void InitializeServices(ISocialAccount account) { - this.MediaServices = new KeyValuePair[] + if (account is TwitterAccount twAccount) { - new("Twitter", new TwitterPhoto(tw, twitterConfig)), - new("Imgur", new Imgur(twitterConfig)), - new("Mobypicture", new Mobypicture(tw, twitterConfig)), - }; + var twLegacy = twAccount.Legacy; + var twConfiguration = twAccount.AccountState.Configuration; + + this.MediaServices = new KeyValuePair[] + { + new("Twitter", new TwitterPhoto(twLegacy, twConfiguration)), + new("Imgur", new Imgur(twConfiguration)), + new("Mobypicture", new Mobypicture(twLegacy, twConfiguration)), + }; + } + else + { + this.MediaServices = new KeyValuePair[] + { + new("Imgur", new Imgur(TwitterConfiguration.DefaultConfiguration())), + }; + } } public void SelectMediaService(string serviceName, int? index = null) diff --git a/OpenTween/Tween.cs b/OpenTween/Tween.cs index 3d6f5f30..2e23d59c 100644 --- a/OpenTween/Tween.cs +++ b/OpenTween/Tween.cs @@ -321,7 +321,7 @@ namespace OpenTween Thumbnail.Services.TonTwitterCom.GetApiConnection = () => this.PrimaryAccount.Connection; // 画像投稿サービス - this.ImageSelector.Model.InitializeServices(this.tw, this.tw.Configuration); + this.ImageSelector.Model.InitializeServices(this.CurrentTabAccount); this.ImageSelector.Model.SelectMediaService(this.settings.Common.UseImageServiceName, this.settings.Common.UseImageService); this.tweetThumbnail1.Model.Initialize(this.thumbGenerator); @@ -1807,16 +1807,8 @@ namespace OpenTween var primaryAccount = this.accounts.Primary; this.statuses.RefreshOwl(primaryAccount.UniqueKey, primaryAccount.AccountState.FollowerIds, isPrimary: true); - if (primaryAccount is TwitterAccount twAccount) - { - foreach (var (_, service) in this.ImageSelector.Model.MediaServices) - { - service.UpdateTwitterConfiguration(twAccount.AccountState.Configuration); - } - } - foreach (var account in this.accounts.SecondaryAccounts) - this.statuses.RefreshOwl(account.UniqueKey, account.AccountState.FollowerIds, isPrimary: false); + this.statuses.RefreshOwl(account.UniqueKey, account.AccountState.FollowerIds, isPrimary: false); this.listCache?.PurgeCache(); this.CurrentListView.Refresh(); @@ -2428,7 +2420,7 @@ namespace OpenTween this.settings.ApplySettings(); this.accounts.LoadFromSettings(this.settings.Common); - this.ImageSelector.Model.InitializeServices(this.tw, this.tw.Configuration); + this.ImageSelector.Model.InitializeServices(this.CurrentTabAccount); try { @@ -3062,6 +3054,7 @@ namespace OpenTween this.TabMenuControl(this.CurrentTabName); this.PushSelectPostChain(); this.DispSelectedPost(); + this.ImageSelector.Model.InitializeServices(this.CurrentTabAccount); } private void SetListProperty() -- 2.11.0