From 25205040d797c1bbed825d78959b3de3615dfcc6 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 9 Nov 2017 11:18:53 -0500 Subject: [PATCH 1/5] Using a key for get operations --- src/GitHub.Api/Git/GitClient.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/GitHub.Api/Git/GitClient.cs b/src/GitHub.Api/Git/GitClient.cs index 21c898d6b..ca95df828 100644 --- a/src/GitHub.Api/Git/GitClient.cs +++ b/src/GitHub.Api/Git/GitClient.cs @@ -87,6 +87,8 @@ ITask Unlock(string file, bool force, class GitClient : IGitClient { + private const string UserNameConfigKey = "user.name"; + private const string UserEmailConfigKey = "user.email"; private readonly IEnvironment environment; private readonly IProcessManager processManager; private readonly ITaskManager taskManager; @@ -260,19 +262,19 @@ public ITask GetConfigUserAndEmail() string username = null; string email = null; - return GetConfig("user.name", GitConfigSource.User).Then((success, value) => { + return GetConfig(UserNameConfigKey, GitConfigSource.User).Then((success, value) => { if (success) { username = value; } - }).Then(GetConfig("user.email", GitConfigSource.User).Then((success, value) => { + }).Then(GetConfig(UserEmailConfigKey, GitConfigSource.User).Then((success, value) => { if (success) { email = value; } })).Then(success => { - Logger.Trace("user.name:{1} user.email:{2}", success, username, email); + Logger.Trace("{0}:{1} {2}:{3}", UserNameConfigKey, username, UserEmailConfigKey, email); return new User { Name= username, Email = email }; }); } From 9f817bfc33ace117b6a69a32e6713ef2bd2ee0ce Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 9 Nov 2017 11:45:48 -0500 Subject: [PATCH 2/5] Adding SetConfigUserAndEmail to GitClient and using it in UserSettingsView --- src/GitHub.Api/Git/GitClient.cs | 23 ++++++++---- .../GitHub.Unity/UI/UserSettingsView.cs | 35 +++++-------------- 2 files changed, 24 insertions(+), 34 deletions(-) diff --git a/src/GitHub.Api/Git/GitClient.cs b/src/GitHub.Api/Git/GitClient.cs index 609305f99..a21c4d6de 100644 --- a/src/GitHub.Api/Git/GitClient.cs +++ b/src/GitHub.Api/Git/GitClient.cs @@ -83,6 +83,8 @@ ITask Unlock(string file, bool force, ITask Version(IOutputProcessor processor = null); ITask LfsVersion(IOutputProcessor processor = null); + + ITask SetConfigUserAndEmail(string username, string email); } class GitClient : IGitClient @@ -270,17 +272,24 @@ public ITask GetConfigUserAndEmail() } }) .Then(GetConfig(UserEmailConfigKey, GitConfigSource.User) - .Then((success, value) => { - if (success) - { - email = value; - } - })).Then(success => { + .Then((success, value) => { + if (success) + { + email = value; + } + })).Then(success => { Logger.Trace("{0}:{1} {2}:{3}", UserNameConfigKey, username, UserEmailConfigKey, email); - return new User { Name= username, Email = email }; + return new User { Name = username, Email = email }; }); } + public ITask SetConfigUserAndEmail(string username, string email) + { + return SetConfig(UserNameConfigKey, username, GitConfigSource.User) + .Then(SetConfig(UserEmailConfigKey, email, GitConfigSource.User)) + .Then(b => new User { Name = username, Email = email }); + } + public ITask> ListLocks(bool local, BaseOutputListProcessor processor = null) { Logger.Trace("ListLocks"); diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs index 0e9695c05..d31d64d6e 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs @@ -56,14 +56,15 @@ public override void OnGUI() GUI.FocusControl(null); isBusy = true; - GitClient.SetConfig("user.name", newGitName, GitConfigSource.User) - .Then((success, value) => - { + GitClient.SetConfigUserAndEmail(newGitName, newGitEmail) + .FinallyInUI((success, exception, user) => { + isBusy = false; if (success) { if (Repository != null) { Repository.User.Name = newGitName; + Repository.User.Email = newGitEmail; } else { @@ -72,33 +73,13 @@ public override void OnGUI() cachedUser = new User(); } cachedUser.Name = newGitName; + cachedUser.Email = newGitEmail; } + + Redraw(); + Finish(true); } }) - .Then( - GitClient.SetConfig("user.email", newGitEmail, GitConfigSource.User) - .Then((success, value) => - { - if (success) - { - if (Repository != null) - { - Repository.User.Email = newGitEmail; - } - else - { - cachedUser.Email = newGitEmail; - } - - userDataHasChanged = true; - } - })) - .FinallyInUI((_, __) => - { - isBusy = false; - Redraw(); - Finish(true); - }) .Start(); } } From d86c1629897ff1c3e21f5b96ccfad2992b265700 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 9 Nov 2017 12:54:34 -0500 Subject: [PATCH 3/5] Fixes needed after merge --- .../Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs index f2abf90ec..715fe5e39 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs @@ -63,16 +63,12 @@ public override void OnGUI() if (Repository != null) { Repository.User.Name = gitName = newGitName; - Repository.User.Email = newGitEmail; + Repository.User.Email = gitEmail = newGitEmail; } else { - if (cachedUser == null) - { - cachedUser = new User(); - } - cachedUser.Name = newGitName; - cachedUser.Email = newGitEmail; + gitName = newGitName; + gitEmail = newGitEmail; } Redraw(); From 8b57bb98024782dc32706e9519d1845df77282a8 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Thu, 9 Nov 2017 12:44:22 -0500 Subject: [PATCH 4/5] Checking for changes to save in a timely fashion --- .../GitHub.Unity/UI/UserSettingsView.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs index 715fe5e39..6bf1945a0 100644 --- a/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs +++ b/src/UnityExtension/Assets/Editor/GitHub.Unity/UI/UserSettingsView.cs @@ -22,6 +22,7 @@ class UserSettingsView : Subview [SerializeField] private string gitEmail; [SerializeField] private string newGitName; [SerializeField] private string newGitEmail; + [SerializeField] private bool needsSaving; public override void InitializeView(IView parent) { @@ -42,11 +43,17 @@ public override void OnGUI() EditorGUI.BeginDisabledGroup(IsBusy || Parent.IsBusy); { - newGitName = EditorGUILayout.TextField(GitConfigNameLabel, newGitName); - newGitEmail = EditorGUILayout.TextField(GitConfigEmailLabel, newGitEmail); + EditorGUI.BeginChangeCheck(); + { + newGitName = EditorGUILayout.TextField(GitConfigNameLabel, newGitName); + newGitEmail = EditorGUILayout.TextField(GitConfigEmailLabel, newGitEmail); + } - var needsSaving = (newGitName != gitName || newGitEmail != gitEmail) - && !(string.IsNullOrEmpty(newGitName) || string.IsNullOrEmpty(newGitEmail)); + if (EditorGUI.EndChangeCheck()) + { + needsSaving = !(string.IsNullOrEmpty(newGitName) || string.IsNullOrEmpty(newGitEmail)) + && (newGitName != gitName || newGitEmail != gitEmail); + } EditorGUI.BeginDisabledGroup(!needsSaving); { @@ -71,6 +78,8 @@ public override void OnGUI() gitEmail = newGitEmail; } + needsSaving = false; + Redraw(); Finish(true); } @@ -103,6 +112,7 @@ private void MaybeUpdateData() { newGitName = gitName = Repository.User.Name; newGitEmail = gitEmail = Repository.User.Email; + needsSaving = false; } } } @@ -127,6 +137,7 @@ private void UpdateUserDataFromClient() { newGitName = gitName = user.Name; newGitEmail = gitEmail = user.Email; + needsSaving = false; Redraw(); } }).Start(); From f47d76f5422b201af295e991f309ac6903176366 Mon Sep 17 00:00:00 2001 From: Stanley Goldman Date: Mon, 13 Nov 2017 13:42:02 -0500 Subject: [PATCH 5/5] Fix formatting --- src/GitHub.Api/Git/GitClient.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/GitHub.Api/Git/GitClient.cs b/src/GitHub.Api/Git/GitClient.cs index a21c4d6de..a9f5c7e4c 100644 --- a/src/GitHub.Api/Git/GitClient.cs +++ b/src/GitHub.Api/Git/GitClient.cs @@ -272,15 +272,15 @@ public ITask GetConfigUserAndEmail() } }) .Then(GetConfig(UserEmailConfigKey, GitConfigSource.User) - .Then((success, value) => { - if (success) - { - email = value; - } - })).Then(success => { - Logger.Trace("{0}:{1} {2}:{3}", UserNameConfigKey, username, UserEmailConfigKey, email); - return new User { Name = username, Email = email }; - }); + .Then((success, value) => { + if (success) + { + email = value; + } + })).Then(success => { + Logger.Trace("{0}:{1} {2}:{3}", UserNameConfigKey, username, UserEmailConfigKey, email); + return new User { Name = username, Email = email }; + }); } public ITask SetConfigUserAndEmail(string username, string email)