Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit b06a737

Browse files
Moving UpdateLog functionality to Window
1 parent b3639d8 commit b06a737

File tree

3 files changed

+46
-38
lines changed

3 files changed

+46
-38
lines changed

src/GitHub.Api/Git/Repository.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,10 @@ private void RepositoryManager_OnCurrentRemoteUpdated(ConfigRemote? remote)
173173
if (!Nullable.Equals(currentRemote, remote))
174174
{
175175
currentRemote = remote;
176+
176177
Logger.Trace("OnCurrentRemoteChanged: {0}", currentRemote.HasValue ? currentRemote.Value.ToString() : "[NULL]");
177178
OnCurrentRemoteChanged?.Invoke(currentRemote.HasValue ? currentRemote.Value.Name : null);
179+
178180
UpdateRepositoryInfo();
179181
}
180182
}
@@ -184,6 +186,7 @@ private void RepositoryManager_OnCurrentBranchUpdated(ConfigBranch? branch)
184186
if (!Nullable.Equals(currentBranch, branch))
185187
{
186188
currentBranch = branch;
189+
187190
Logger.Trace("OnCurrentBranchChanged: {0}", currentBranch.HasValue ? currentBranch.ToString() : "[NULL]");
188191
OnCurrentBranchChanged?.Invoke(currentBranch.HasValue ? currentBranch.Value.Name : null);
189192
}
@@ -193,6 +196,7 @@ private void RepositoryManager_OnLocalBranchUpdated(string name)
193196
{
194197
if (name == currentBranch?.Name)
195198
{
199+
Logger.Trace("OnLocalBranchChanged: {0}", name);
196200
OnLocalBranchChanged?.Invoke();
197201
Refresh();
198202
}
@@ -241,6 +245,8 @@ private void RepositoryManager_OnLocalBranchRemoved(string name)
241245
if (localBranches.ContainsKey(name))
242246
{
243247
localBranches.Remove(name);
248+
249+
Logger.Trace("OnLocalBranchListChanged");
244250
OnLocalBranchListChanged?.Invoke();
245251
}
246252
else
@@ -259,6 +265,8 @@ private void RepositoryManager_OnLocalBranchAdded(string name)
259265
branch = new ConfigBranch { Name = name };
260266
}
261267
localBranches.Add(name, branch.Value);
268+
269+
Logger.Trace("OnLocalBranchListChanged");
262270
OnLocalBranchListChanged?.Invoke();
263271
}
264272
else
@@ -275,6 +283,8 @@ private void RepositoryManager_OnRemoteBranchAdded(string remote, string name)
275283
if (!branchList.ContainsKey(name))
276284
{
277285
branchList.Add(name, new ConfigBranch { Name = name, Remote = remotes[remote] });
286+
287+
Logger.Trace("OnRemoteBranchListChanged");
278288
OnRemoteBranchListChanged?.Invoke();
279289
}
280290
else
@@ -296,6 +306,8 @@ private void RepositoryManager_OnRemoteBranchRemoved(string remote, string name)
296306
if (localBranches.ContainsKey(name))
297307
{
298308
localBranches.Remove(name);
309+
310+
Logger.Trace("OnRemoteBranchListChanged");
299311
OnRemoteBranchListChanged?.Invoke();
300312
}
301313
else

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/HistoryView.cs

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ public override void OnEnable()
7474
{
7575
base.OnEnable();
7676
AttachHandlers(Repository);
77+
logHasChanged = true;
7778
}
7879

7980
public override void OnDisable()
@@ -109,40 +110,18 @@ public override void OnGUI()
109110
OnEmbeddedGUI();
110111
}
111112

112-
public override void Refresh()
113-
{
114-
base.Refresh();
115-
UpdateLog();
116-
}
117-
118113
private void AttachHandlers(IRepository repository)
119114
{
120115
if (repository == null)
121116
return;
122-
repository.OnLocalBranchChanged += Refresh;
123117
repository.OnStatusChanged += UpdateStatusOnMainThread;
124-
repository.OnCurrentBranchChanged += Repository_OnCurrentBranchChanged();
125-
repository.OnCurrentRemoteChanged += Repository_OnCurrentRemoteChanged();
126118
}
127119

128120
private void DetachHandlers(IRepository repository)
129121
{
130122
if (repository == null)
131123
return;
132-
repository.OnLocalBranchChanged -= Refresh;
133124
repository.OnStatusChanged -= UpdateStatusOnMainThread;
134-
repository.OnCurrentBranchChanged -= Repository_OnCurrentBranchChanged();
135-
repository.OnCurrentRemoteChanged -= Repository_OnCurrentRemoteChanged();
136-
}
137-
138-
private Action<string> Repository_OnCurrentRemoteChanged()
139-
{
140-
return s => Refresh();
141-
}
142-
143-
private Action<string> Repository_OnCurrentBranchChanged()
144-
{
145-
return s => Refresh();
146125
}
147126

148127
private void UpdateStatusOnMainThread(GitStatus status)
@@ -157,22 +136,6 @@ private void UpdateStatus(GitStatus status)
157136
statusBehind = status.Behind;
158137
}
159138

160-
private void UpdateLog()
161-
{
162-
if (Repository != null)
163-
{
164-
Repository.Log().ThenInUI((success, log) => {
165-
if (success)
166-
{
167-
Logger.Trace("OnLogUpdate");
168-
GitLogCache.Instance.Log = log;
169-
logHasChanged = true;
170-
Redraw();
171-
}
172-
}).Start();
173-
}
174-
}
175-
176139
private void MaybeUpdateData()
177140
{
178141
isPublished = Repository != null && Repository.CurrentRemote.HasValue;

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/Window.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ public override void OnRepositoryChanged(IRepository oldRepository)
144144
if (ActiveView != null)
145145
ActiveView.OnRepositoryChanged(oldRepository);
146146

147+
UpdateLog();
147148
}
148149

149150
public override void OnSelectionChange()
@@ -197,6 +198,16 @@ private void RefreshOnMainThread()
197198
new ActionTask(TaskManager.Token, Refresh) { Affinity = TaskAffinity.UI }.Start();
198199
}
199200

201+
private void Repository_OnCurrentRemoteChanged(string s)
202+
{
203+
UpdateLog();
204+
}
205+
206+
private void Repository_OnCurrentBranchChanged(string s)
207+
{
208+
UpdateLog();
209+
}
210+
200211
private bool MaybeUpdateData(out string repoRemote)
201212
{
202213
repoRemote = null;
@@ -243,6 +254,8 @@ private void AttachHandlers(IRepository repository)
243254
if (repository == null)
244255
return;
245256
repository.OnRepositoryInfoChanged += RefreshOnMainThread;
257+
repository.OnCurrentBranchChanged += Repository_OnCurrentBranchChanged;
258+
repository.OnCurrentRemoteChanged += Repository_OnCurrentRemoteChanged;
246259
}
247260

248261
private void DetachHandlers(IRepository repository)
@@ -251,6 +264,7 @@ private void DetachHandlers(IRepository repository)
251264
return;
252265
repository.OnRepositoryInfoChanged -= RefreshOnMainThread;
253266
}
267+
254268
private void DoHeaderGUI()
255269
{
256270
GUILayout.BeginHorizontal(Styles.HeaderBoxStyle);
@@ -393,6 +407,25 @@ private static SubTab TabButton(SubTab tab, string title, SubTab activeTab)
393407
return GUILayout.Toggle(activeTab == tab, title, EditorStyles.toolbarButton) ? tab : activeTab;
394408
}
395409

410+
private void UpdateLog()
411+
{
412+
Logger.Trace("Updating Log");
413+
414+
if (Repository != null)
415+
{
416+
Repository
417+
.Log()
418+
.ThenInUI((success, log) => {
419+
if (success)
420+
{
421+
Logger.Trace("Updated Log");
422+
GitLogCache.Instance.Log = log;
423+
Redraw();
424+
}
425+
}).Start();
426+
}
427+
}
428+
396429
private Subview ToView(SubTab tab)
397430
{
398431
switch (tab)

0 commit comments

Comments
 (0)