OSDN Git Service

選択中のアカウントを識別するためのUserAccount.UniqueKeyを追加
authorKimura Youichi <kim.upsilon@bucyou.net>
Sun, 22 Jan 2023 10:44:17 +0000 (19:44 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sun, 22 Jan 2023 11:10:12 +0000 (20:10 +0900)
OpenTween/Setting/Panel/BasedPanel.cs
OpenTween/Setting/SettingCommon.cs
OpenTween/Setting/SettingManager.cs
OpenTween/Tween.cs

index 95911f9..8824c94 100644 (file)
@@ -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;
             }
         }
 
index a3131e5..4195d6d 100644 (file)
@@ -46,6 +46,13 @@ namespace OpenTween
         #endregion
 
         public List<UserAccount> 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 = "";
index 44babc8..4c00f98 100644 (file)
@@ -49,7 +49,7 @@ namespace OpenTween.Setting
 
         /// <summary>ユーザによる設定が必要な項目が残っているか</summary>
         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;
                 }
             }
 
index ecad417..e570611 100644 (file)
@@ -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;