@@ -22,7 +22,6 @@ class UserSettingsView : Subview
22
22
[ SerializeField ] private string gitEmail ;
23
23
[ SerializeField ] private string newGitName ;
24
24
[ SerializeField ] private string newGitEmail ;
25
- [ SerializeField ] private User cachedUser ;
26
25
27
26
public override void InitializeView ( IView parent )
28
27
{
@@ -63,15 +62,11 @@ public override void OnGUI()
63
62
{
64
63
if ( Repository != null )
65
64
{
66
- Repository . User . Name = newGitName ;
65
+ Repository . User . Name = gitName = newGitName ;
67
66
}
68
67
else
69
68
{
70
- if ( cachedUser == null )
71
- {
72
- cachedUser = new User ( ) ;
73
- }
74
- cachedUser . Name = newGitName ;
69
+ gitName = newGitName ;
75
70
}
76
71
}
77
72
} )
@@ -83,11 +78,11 @@ public override void OnGUI()
83
78
{
84
79
if ( Repository != null )
85
80
{
86
- Repository . User . Email = newGitEmail ;
81
+ Repository . User . Email = gitEmail = newGitEmail ;
87
82
}
88
83
else
89
84
{
90
- cachedUser . Email = newGitEmail ;
85
+ gitEmail = newGitEmail ;
91
86
}
92
87
93
88
userDataHasChanged = true ;
@@ -107,43 +102,53 @@ public override void OnGUI()
107
102
EditorGUI . EndDisabledGroup ( ) ;
108
103
}
109
104
105
+ public override void OnEnable ( )
106
+ {
107
+ base . OnEnable ( ) ;
108
+ userDataHasChanged = true ;
109
+ }
110
+
110
111
private void MaybeUpdateData ( )
111
112
{
112
- if ( Repository == null )
113
+ if ( userDataHasChanged )
113
114
{
114
- if ( ! String . IsNullOrEmpty ( EntryPoint . Environment . GitExecutablePath ) )
115
+ userDataHasChanged = false ;
116
+
117
+ if ( Repository == null )
115
118
{
116
- if ( ( cachedUser == null || String . IsNullOrEmpty ( cachedUser . Name ) ) && GitClient != null )
117
- {
118
- GitClient . GetConfigUserAndEmail ( ) . FinallyInUI ( ( success , ex , user ) => {
119
- if ( success && ! String . IsNullOrEmpty ( user . Name ) && ! String . IsNullOrEmpty ( user . Email ) )
120
- {
121
- cachedUser = user ;
122
-
123
- userDataHasChanged = true ;
124
- Redraw ( ) ;
125
- }
126
- } ) . Start ( ) ;
127
- }
119
+ UpdateUserDataFromClient ( ) ;
128
120
}
129
-
130
- if ( userDataHasChanged )
121
+ else
131
122
{
132
- newGitName = gitName = cachedUser . Name ;
133
- newGitEmail = gitEmail = cachedUser . Email ;
134
- userDataHasChanged = false ;
123
+ newGitName = gitName = Repository . User . Name ;
124
+ newGitEmail = gitEmail = Repository . User . Email ;
135
125
}
136
- return ;
137
126
}
127
+ }
138
128
139
- userDataHasChanged = Repository . User . Name != gitName || Repository . User . Email != gitEmail ;
129
+ private void UpdateUserDataFromClient ( )
130
+ {
131
+ if ( String . IsNullOrEmpty ( EntryPoint . Environment . GitExecutablePath ) )
132
+ {
133
+ return ;
134
+ }
140
135
141
- if ( ! userDataHasChanged )
136
+ if ( GitClient == null )
137
+ {
142
138
return ;
139
+ }
140
+
141
+ Logger . Trace ( "Update user data from GitClient" ) ;
143
142
144
- userDataHasChanged = false ;
145
- newGitName = gitName = Repository . User . Name ;
146
- newGitEmail = gitEmail = Repository . User . Email ;
143
+ GitClient . GetConfigUserAndEmail ( )
144
+ . ThenInUI ( ( success , user ) => {
145
+ if ( success && ! String . IsNullOrEmpty ( user . Name ) && ! String . IsNullOrEmpty ( user . Email ) )
146
+ {
147
+ newGitName = gitName = user . Name ;
148
+ newGitEmail = gitEmail = user . Email ;
149
+ Redraw ( ) ;
150
+ }
151
+ } ) . Start ( ) ;
147
152
}
148
153
149
154
public override bool IsBusy
0 commit comments