From 35dcc1a5089202e50f7103709140ff57278d6859 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 9 Nov 2017 10:28:03 -0500 Subject: [PATCH 1/2] A simpler data update method to avoid spamming GitClient --- .../GitHub.Unity/UI/UserSettingsView.cs | 70 +++++++++++-------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs index 3a984b488..7bee12706 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs @@ -107,49 +107,57 @@ 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, strings) => { - var username = strings[0]; - var email = strings[1]; - - if (success && !String.IsNullOrEmpty(username) && !String.IsNullOrEmpty(email)) - { - cachedUser = new User { - Name = username, - Email = email - }; - - 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; + } - userDataHasChanged = false; - newGitName = gitName = Repository.User.Name; - newGitEmail = gitEmail = Repository.User.Email; + Logger.Trace("Update user data from GitClient"); + + GitClient.GetConfigUserAndEmail() + .ThenInUI((success, strings) => { + var username = strings[0]; + var email = strings[1]; + + if (success && !String.IsNullOrEmpty(username) && !String.IsNullOrEmpty(email)) + { + cachedUser = new User { Name = username, Email = email }; + newGitName = gitName = cachedUser.Name; + newGitEmail = gitEmail = cachedUser.Email; + Redraw(); + } + }).Start(); } public override bool IsBusy From fca75da2585ad695d283e61adbacb93f0bd5d500 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 9 Nov 2017 11:09:39 -0500 Subject: [PATCH 2/2] Removing redundant cachedUser field --- .../Editor/GitHub.Unity/UI/UserSettingsView.cs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs index 3f7dd0067..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; @@ -149,9 +144,8 @@ private void UpdateUserDataFromClient() .ThenInUI((success, user) => { if (success && !String.IsNullOrEmpty(user.Name) && !String.IsNullOrEmpty(user.Email)) { - cachedUser = user; - newGitName = gitName = cachedUser.Name; - newGitEmail = gitEmail = cachedUser.Email; + newGitName = gitName = user.Name; + newGitEmail = gitEmail = user.Email; Redraw(); } }).Start();