Skip to content

Commit bbc840a

Browse files
committed
perf: set/update TimeToSort while creating branch nodes
Signed-off-by: leo <[email protected]>
1 parent c8e2167 commit bbc840a

File tree

1 file changed

+6
-34
lines changed

1 file changed

+6
-34
lines changed

src/ViewModels/BranchTreeNode.cs

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -120,28 +120,19 @@ public void Run(List<Models.Branch> branches, List<Models.Remote> remotes, bool
120120
folders.Clear();
121121

122122
if (_localSortMode == Models.BranchSortMode.Name)
123-
{
124123
SortNodesByName(_locals);
125-
}
126124
else
127-
{
128-
SetTimeToSortRecusive(_locals);
129125
SortNodesByTime(_locals);
130-
}
131126

132127
if (_remoteSortMode == Models.BranchSortMode.Name)
133-
{
134128
SortNodesByName(_remotes);
135-
}
136129
else
137-
{
138-
SetTimeToSortRecusive(_remotes);
139130
SortNodesByTime(_remotes);
140-
}
141131
}
142132

143133
private void MakeBranchNode(Models.Branch branch, List<BranchTreeNode> roots, Dictionary<string, BranchTreeNode> folders, string prefix, bool bForceExpanded)
144134
{
135+
var time = branch.CommitterDate;
145136
var fullpath = $"{prefix}/{branch.Name}";
146137
var sepIdx = branch.Name.IndexOf('/', StringComparison.Ordinal);
147138
if (sepIdx == -1 || branch.IsDetachedHead)
@@ -152,7 +143,7 @@ private void MakeBranchNode(Models.Branch branch, List<BranchTreeNode> roots, Di
152143
Path = fullpath,
153144
Backend = branch,
154145
IsExpanded = false,
155-
TimeToSort = branch.CommitterDate,
146+
TimeToSort = time,
156147
});
157148
return;
158149
}
@@ -167,6 +158,7 @@ private void MakeBranchNode(Models.Branch branch, List<BranchTreeNode> roots, Di
167158
if (folders.TryGetValue(folder, out var val))
168159
{
169160
lastFolder = val;
161+
lastFolder.TimeToSort = Math.Max(lastFolder.TimeToSort, time);
170162
if (!lastFolder.IsExpanded)
171163
lastFolder.IsExpanded |= (branch.IsCurrent || _expanded.Contains(folder));
172164
}
@@ -177,6 +169,7 @@ private void MakeBranchNode(Models.Branch branch, List<BranchTreeNode> roots, Di
177169
Name = name,
178170
Path = folder,
179171
IsExpanded = bForceExpanded || branch.IsCurrent || _expanded.Contains(folder),
172+
TimeToSort = time,
180173
};
181174
roots.Add(lastFolder);
182175
folders.Add(folder, lastFolder);
@@ -188,6 +181,7 @@ private void MakeBranchNode(Models.Branch branch, List<BranchTreeNode> roots, Di
188181
Name = name,
189182
Path = folder,
190183
IsExpanded = bForceExpanded || branch.IsCurrent || _expanded.Contains(folder),
184+
TimeToSort = time,
191185
};
192186
lastFolder.Children.Add(cur);
193187
folders.Add(folder, cur);
@@ -204,7 +198,7 @@ private void MakeBranchNode(Models.Branch branch, List<BranchTreeNode> roots, Di
204198
Path = fullpath,
205199
Backend = branch,
206200
IsExpanded = false,
207-
TimeToSort = branch.CommitterDate,
201+
TimeToSort = time,
208202
});
209203
}
210204

@@ -253,28 +247,6 @@ private void SortNodesByTime(List<BranchTreeNode> nodes)
253247
SortNodesByTime(node.Children);
254248
}
255249

256-
private ulong SetTimeToSortRecusive(List<BranchTreeNode> nodes)
257-
{
258-
var recent = (ulong)0;
259-
260-
foreach (var node in nodes)
261-
{
262-
if (node.Backend is Models.Branch)
263-
{
264-
recent = Math.Max(recent, node.TimeToSort);
265-
continue;
266-
}
267-
268-
var time = SetTimeToSortRecusive(node.Children);
269-
recent = Math.Max(recent, time);
270-
271-
if (node.Backend is not Models.Remote)
272-
node.TimeToSort = time;
273-
}
274-
275-
return recent;
276-
}
277-
278250
private readonly Models.BranchSortMode _localSortMode = Models.BranchSortMode.Name;
279251
private readonly Models.BranchSortMode _remoteSortMode = Models.BranchSortMode.Name;
280252
private readonly List<BranchTreeNode> _locals = new List<BranchTreeNode>();

0 commit comments

Comments
 (0)