From b98a8d5653dd045234730b753142e0b08c337317 Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Sun, 22 Jan 2023 19:44:17 +0900 Subject: [PATCH] =?utf8?q?=E9=81=B8=E6=8A=9E=E4=B8=AD=E3=81=AE=E3=82=A2?= =?utf8?q?=E3=82=AB=E3=82=A6=E3=83=B3=E3=83=88=E3=82=92=E8=AD=98=E5=88=A5?= =?utf8?q?=E3=81=99=E3=82=8B=E3=81=9F=E3=82=81=E3=81=AEUserAccount.UniqueK?= =?utf8?q?ey=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- OpenTween/Setting/Panel/BasedPanel.cs | 10 ++++++---- OpenTween/Setting/SettingCommon.cs | 26 +++++++++++++++++++++++--- OpenTween/Setting/SettingManager.cs | 3 ++- OpenTween/Tween.cs | 13 +++++++++++-- 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/OpenTween/Setting/Panel/BasedPanel.cs b/OpenTween/Setting/Panel/BasedPanel.cs index 95911f99..8824c943 100644 --- a/OpenTween/Setting/Panel/BasedPanel.cs +++ b/OpenTween/Setting/Panel/BasedPanel.cs @@ -49,10 +49,10 @@ namespace OpenTween.Setting.Panel this.AuthUserCombo.Items.Clear(); this.AuthUserCombo.Items.AddRange(settingCommon.UserAccounts.ToArray()); - var selectedUserId = settingCommon.UserId; - var selectedAccount = settingCommon.UserAccounts.FirstOrDefault(x => x.UserId == selectedUserId); - if (selectedAccount != null) - this.AuthUserCombo.SelectedItem = selectedAccount; + var selectedAccountKey = settingCommon.SelectedAccountKey; + var selectedAccountIndex = settingCommon.UserAccounts.FindIndex(x => x.UniqueKey == selectedAccountKey); + if (selectedAccountIndex != -1) + this.AuthUserCombo.SelectedIndex = selectedAccountIndex; } } @@ -69,6 +69,7 @@ namespace OpenTween.Setting.Panel settingCommon.UserName = selectedAccount.Username; settingCommon.Token = selectedAccount.Token; settingCommon.TokenSecret = selectedAccount.TokenSecret; + settingCommon.SelectedAccountKey = selectedAccount.UniqueKey; } else { @@ -76,6 +77,7 @@ namespace OpenTween.Setting.Panel settingCommon.UserName = ""; settingCommon.Token = ""; settingCommon.TokenSecret = ""; + settingCommon.SelectedAccountKey = null; } } diff --git a/OpenTween/Setting/SettingCommon.cs b/OpenTween/Setting/SettingCommon.cs index a3131e52..4195d6d6 100644 --- a/OpenTween/Setting/SettingCommon.cs +++ b/OpenTween/Setting/SettingCommon.cs @@ -46,6 +46,13 @@ namespace OpenTween #endregion public List UserAccounts = new(); + + public Guid? SelectedAccountKey { get; set; } = null; + + [XmlIgnore] + public UserAccount? SelectedAccount + => this.UserAccounts.Find(x => x.UniqueKey == this.SelectedAccountKey); + public string UserName = ""; [XmlIgnore] @@ -316,9 +323,20 @@ namespace OpenTween if (this.AutoShortUrlFirst < 0) this.AutoShortUrlFirst = MyCommon.UrlConverter.Uxnu; - var selectedAccount = this.UserAccounts.Find( - x => string.Equals(x.Username, this.UserName, StringComparison.InvariantCultureIgnoreCase) - ); + UserAccount? selectedAccount; + if (this.SelectedAccountKey != null) + { + selectedAccount = this.SelectedAccount; + } + else + { + selectedAccount = this.UserAccounts.Find( + x => string.Equals(x.Username, this.UserName, StringComparison.InvariantCultureIgnoreCase) + ); + } + + this.SelectedAccountKey = selectedAccount?.UniqueKey; + if (selectedAccount?.UserId == 0) selectedAccount.UserId = this.UserId; @@ -329,6 +347,8 @@ namespace OpenTween public class UserAccount { + public Guid UniqueKey { get; set; } = Guid.NewGuid(); + public string Username = ""; public long UserId = 0; public string Token = ""; diff --git a/OpenTween/Setting/SettingManager.cs b/OpenTween/Setting/SettingManager.cs index 44babc89..4c00f985 100644 --- a/OpenTween/Setting/SettingManager.cs +++ b/OpenTween/Setting/SettingManager.cs @@ -49,7 +49,7 @@ namespace OpenTween.Setting /// ユーザによる設定が必要な項目が残っているか public bool IsIncomplete - => MyCommon.IsNullOrEmpty(this.Common.UserName); + => this.Common.SelectedAccount == null; public bool IsFirstRun { get; private set; } = false; @@ -84,6 +84,7 @@ namespace OpenTween.Setting }; settings.UserAccounts.Add(account); + settings.SelectedAccountKey = account.UniqueKey; } } diff --git a/OpenTween/Tween.cs b/OpenTween/Tween.cs index ecad4173..e5706119 100644 --- a/OpenTween/Tween.cs +++ b/OpenTween/Tween.cs @@ -522,7 +522,11 @@ namespace OpenTween var configScaleFactor = this.settings.Local.GetConfigScaleFactor(this.CurrentAutoScaleDimensions); // 認証関連 - this.tw.Initialize(this.settings.Common.Token, this.settings.Common.TokenSecret, this.settings.Common.UserName, this.settings.Common.UserId); + var account = this.settings.Common.SelectedAccount; + if (account != null) + this.tw.Initialize(account.GetTwitterAppToken(), account.Token, account.TokenSecret, account.Username, account.UserId); + else + this.tw.Initialize(TwitterAppToken.GetDefault(), "", "", "", 0L); this.initial = true; @@ -2581,7 +2585,12 @@ namespace OpenTween if (MyCommon.IsNullOrEmpty(this.settings.Common.Token)) this.tw.ClearAuthInfo(); - this.tw.Initialize(this.settings.Common.Token, this.settings.Common.TokenSecret, this.settings.Common.UserName, this.settings.Common.UserId); + var account = this.settings.Common.SelectedAccount; + if (account != null) + this.tw.Initialize(account.GetTwitterAppToken(), account.Token, account.TokenSecret, account.Username, account.UserId); + else + this.tw.Initialize(TwitterAppToken.GetDefault(), "", "", "", 0L); + this.tw.RestrictFavCheck = this.settings.Common.RestrictFavCheck; this.tw.ReadOwnPost = this.settings.Common.ReadOwnPost; -- 2.11.0