From 931831431b7be331f7e0ac1a4b942ffa1a209deb Mon Sep 17 00:00:00 2001 From: leo Date: Mon, 2 Sep 2024 14:14:52 +0800 Subject: [PATCH] enhance: reduce the times calling `Save()` (#436) --- src/ViewModels/CreateGroup.cs | 2 +- src/ViewModels/DeleteRepositoryNode.cs | 2 +- src/ViewModels/Preference.cs | 25 +++++++++++++++---------- src/ViewModels/Welcome.cs | 2 +- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/ViewModels/CreateGroup.cs b/src/ViewModels/CreateGroup.cs index 865ca4ac..cb94a0f6 100644 --- a/src/ViewModels/CreateGroup.cs +++ b/src/ViewModels/CreateGroup.cs @@ -27,7 +27,7 @@ namespace SourceGit.ViewModels Name = _name, IsRepository = false, IsExpanded = false, - }, _parent); + }, _parent, true); Welcome.Instance.Refresh(); return null; diff --git a/src/ViewModels/DeleteRepositoryNode.cs b/src/ViewModels/DeleteRepositoryNode.cs index 3354d41e..7cd0df5c 100644 --- a/src/ViewModels/DeleteRepositoryNode.cs +++ b/src/ViewModels/DeleteRepositoryNode.cs @@ -18,7 +18,7 @@ namespace SourceGit.ViewModels public override Task Sure() { - Preference.Instance.RemoveNode(_node); + Preference.Instance.RemoveNode(_node, true); Welcome.Instance.Refresh(); return null; } diff --git a/src/ViewModels/Preference.cs b/src/ViewModels/Preference.cs index 3badb359..44ae9c1a 100644 --- a/src/ViewModels/Preference.cs +++ b/src/ViewModels/Preference.cs @@ -343,7 +343,7 @@ namespace SourceGit.ViewModels return true; } - public void AddNode(RepositoryNode node, RepositoryNode to = null) + public void AddNode(RepositoryNode node, RepositoryNode to, bool save) { var collection = to == null ? RepositoryNodes : to.SubNodes; collection.Add(node); @@ -355,7 +355,8 @@ namespace SourceGit.ViewModels return string.Compare(l.Name, r.Name, StringComparison.Ordinal); }); - Save(); + if (save) + Save(); } public RepositoryNode FindNode(string id) @@ -376,32 +377,36 @@ namespace SourceGit.ViewModels IsRepository = true, }; - AddNode(node, parent); + AddNode(node, parent, true); } else if (shouldMoveNode) { - MoveNode(node, parent); + MoveNode(node, parent, true); } return node; } - public void MoveNode(RepositoryNode node, RepositoryNode to = null) + public void MoveNode(RepositoryNode node, RepositoryNode to, bool save) { if (to == null && RepositoryNodes.Contains(node)) return; if (to != null && to.SubNodes.Contains(node)) return; - RemoveNode(node); - AddNode(node, to); - Save(); + RemoveNode(node, false); + AddNode(node, to, false); + + if (save) + Save(); } - public void RemoveNode(RepositoryNode node) + public void RemoveNode(RepositoryNode node, bool save) { RemoveNodeRecursive(node, RepositoryNodes); - Save(); + + if (save) + Save(); } public void SortByRenamedNode(RepositoryNode node) diff --git a/src/ViewModels/Welcome.cs b/src/ViewModels/Welcome.cs index b193d5a4..420e9b03 100644 --- a/src/ViewModels/Welcome.cs +++ b/src/ViewModels/Welcome.cs @@ -139,7 +139,7 @@ namespace SourceGit.ViewModels public void MoveNode(RepositoryNode from, RepositoryNode to) { - Preference.Instance.MoveNode(from, to); + Preference.Instance.MoveNode(from, to, true); Refresh(); }