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;
}
}
settingCommon.UserName = selectedAccount.Username;
settingCommon.Token = selectedAccount.Token;
settingCommon.TokenSecret = selectedAccount.TokenSecret;
+ settingCommon.SelectedAccountKey = selectedAccount.UniqueKey;
}
else
{
settingCommon.UserName = "";
settingCommon.Token = "";
settingCommon.TokenSecret = "";
+ settingCommon.SelectedAccountKey = null;
}
}
#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]
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;
public class UserAccount
{
+ public Guid UniqueKey { get; set; } = Guid.NewGuid();
+
public string Username = "";
public long UserId = 0;
public string Token = "";
/// <summary>ユーザによる設定が必要な項目が残っているか</summary>
public bool IsIncomplete
- => MyCommon.IsNullOrEmpty(this.Common.UserName);
+ => this.Common.SelectedAccount == null;
public bool IsFirstRun { get; private set; } = false;
};
settings.UserAccounts.Add(account);
+ settings.SelectedAccountKey = account.UniqueKey;
}
}
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;
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;