diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs index 0e9695c05..50c142657 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs @@ -22,7 +22,6 @@ class UserSettingsView : Subview [SerializeField] private string gitEmail; [SerializeField] private string newGitName; [SerializeField] private string newGitEmail; - [SerializeField] private User cachedUser; public override void InitializeView(IView parent) { @@ -63,15 +62,11 @@ public override void OnGUI() { if (Repository != null) { - Repository.User.Name = newGitName; + Repository.User.Name = gitName = newGitName; } else { - if (cachedUser == null) - { - cachedUser = new User(); - } - cachedUser.Name = newGitName; + gitName = newGitName; } } }) @@ -83,11 +78,11 @@ public override void OnGUI() { if (Repository != null) { - Repository.User.Email = newGitEmail; + Repository.User.Email = gitEmail = newGitEmail; } else { - cachedUser.Email = newGitEmail; + gitEmail = newGitEmail; } userDataHasChanged = true; @@ -107,43 +102,53 @@ public override void OnGUI() EditorGUI.EndDisabledGroup(); } + public override void OnEnable() + { + base.OnEnable(); + userDataHasChanged = true; + } + private void MaybeUpdateData() { - if (Repository == null) + if (userDataHasChanged) { - if (!String.IsNullOrEmpty(EntryPoint.Environment.GitExecutablePath)) + userDataHasChanged = false; + + if (Repository == null) { - if ((cachedUser == null || String.IsNullOrEmpty(cachedUser.Name)) && GitClient != null) - { - GitClient.GetConfigUserAndEmail().FinallyInUI((success, ex, user) => { - if (success && !String.IsNullOrEmpty(user.Name) && !String.IsNullOrEmpty(user.Email)) - { - cachedUser = user; - - userDataHasChanged = true; - Redraw(); - } - }).Start(); - } + UpdateUserDataFromClient(); } - - if (userDataHasChanged) + else { - newGitName = gitName = cachedUser.Name; - newGitEmail = gitEmail = cachedUser.Email; - userDataHasChanged = false; + newGitName = gitName = Repository.User.Name; + newGitEmail = gitEmail = Repository.User.Email; } - return; } + } - userDataHasChanged = Repository.User.Name != gitName || Repository.User.Email != gitEmail; + private void UpdateUserDataFromClient() + { + if (String.IsNullOrEmpty(EntryPoint.Environment.GitExecutablePath)) + { + return; + } - if (!userDataHasChanged) + if (GitClient == null) + { return; + } + + Logger.Trace("Update user data from GitClient"); - userDataHasChanged = false; - newGitName = gitName = Repository.User.Name; - newGitEmail = gitEmail = Repository.User.Email; + GitClient.GetConfigUserAndEmail() + .ThenInUI((success, user) => { + if (success && !String.IsNullOrEmpty(user.Name) && !String.IsNullOrEmpty(user.Email)) + { + newGitName = gitName = user.Name; + newGitEmail = gitEmail = user.Email; + Redraw(); + } + }).Start(); } public override bool IsBusy