Resolve all 46 low-severity architecture review findings

This commit is contained in:
Joseph Doherty
2026-09-09 22:56:36 -04:00
parent fef3e7675f
commit 9ee402bbcd
139 changed files with 2621 additions and 1082 deletions
@@ -96,12 +96,47 @@
private HashSet<string>? _filterRevealed;
private Func<TemplateTreeNode, bool>? _initiallyExpanded;
// Compare immutable value snapshots, rather than entity/list reference identity:
// callers may rename, move, or edit composition children in place.
private sealed record TreeInput(string Kind, int Id, int? ParentId, string Name, bool Derived = false, bool Inherited = false, string? KeyOverride = null);
private List<TreeInput>? _treeInputs;
private Dictionary<int, IReadOnlyList<TemplateTreeNode>> _extraChildren = new();
protected override void OnParametersSet()
{
BuildTree();
var inputs = new List<TreeInput>();
foreach (var folder in Folders)
inputs.Add(new("folder", folder.Id, folder.ParentFolderId, folder.Name));
_extraChildren = new();
foreach (var template in Templates)
{
inputs.Add(new("template", template.Id, template.FolderId, template.Name, template.IsDerived));
if (!template.IsDerived && ExtraTemplateChildren is not null)
{
var children = ExtraTemplateChildren(template);
_extraChildren[template.Id] = children;
CaptureChildren(children, inputs);
}
}
if (_treeInputs is null || !inputs.SequenceEqual(_treeInputs))
{
_treeInputs = inputs;
BuildTree();
}
// Filter and RevealKeys are independent and may also be changed in place.
ApplyFilter();
}
private static void CaptureChildren(IReadOnlyList<TemplateTreeNode> children, List<TreeInput> inputs)
{
foreach (var child in children)
{
inputs.Add(new(child.Kind.ToString(), child.Id, null, child.Name, Inherited: child.IsInherited, KeyOverride: child.KeyOverride));
CaptureChildren(child.Children, inputs);
inputs.Add(new("end", 0, null, ""));
}
}
private void BuildTree()
{
var folderNodes = Folders.ToDictionary(
@@ -136,7 +171,7 @@
if (ExtraTemplateChildren != null)
{
foreach (var extra in ExtraTemplateChildren(t))
foreach (var extra in _extraChildren[t.Id])
{
tNode.Children.Add(extra);
}
@@ -231,6 +266,8 @@
Kind = node.Kind,
Id = node.Id,
Name = node.Name,
IsInherited = node.IsInherited,
KeyOverride = node.KeyOverride,
};
foreach (var k in keptChildren) clone.Children.Add(k);
if (keptChildren.Count > 0)