Skip to content

Commit

Permalink
fix: avoid duplicated nodes being added into the repository tree
Browse files Browse the repository at this point in the history
  • Loading branch information
love-linger committed May 7, 2024
1 parent 207e82b commit eeb6abb
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 28 deletions.
13 changes: 2 additions & 11 deletions src/ViewModels/Clone.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Threading.Tasks;

Expand Down Expand Up @@ -114,15 +113,7 @@ public override Task<bool> Sure()
CallUIThread(() =>
{
var repo = Preference.AddRepository(path, Path.Combine(path, ".git"));
var node = new RepositoryNode()
{
Id = repo.FullPath,
Name = Path.GetFileName(repo.FullPath),
Bookmark = 0,
IsRepository = true,
};
Preference.AddNode(node);
var node = Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, null);
_launcher.OpenRepositoryInTab(node, _page);
});
Expand Down
10 changes: 1 addition & 9 deletions src/ViewModels/Init.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,10 @@ public override Task<bool> Sure()
return false;
var gitDir = Path.GetFullPath(Path.Combine(_targetPath, ".git"));
CallUIThread(() =>
{
var repo = Preference.AddRepository(_targetPath, gitDir);
var node = new RepositoryNode()
{
Id = repo.FullPath,
Name = Path.GetFileName(repo.FullPath),
Bookmark = 0,
IsRepository = true,
};
Preference.AddNode(node);
Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, null);
});
return true;
Expand Down
23 changes: 23 additions & 0 deletions src/ViewModels/Preference.cs
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,29 @@ public static RepositoryNode FindNode(string id)
return FindNodeRecursive(id, _instance.RepositoryNodes);
}

public static RepositoryNode FindOrAddNodeByRepositoryPath(string repo, RepositoryNode parent)
{
var node = FindNodeRecursive(repo, _instance.RepositoryNodes);
if (node == null)
{
node = new RepositoryNode()
{
Id = Guid.NewGuid().ToString(),
Name = Path.GetFileName(repo),
Bookmark = 0,
IsRepository = true,
};

AddNode(node, parent);
}
else
{
MoveNode(node, parent);
}

return node;
}

public static void MoveNode(RepositoryNode node, RepositoryNode to = null)
{
if (to == null && _instance._repositoryNodes.Contains(node))
Expand Down
9 changes: 1 addition & 8 deletions src/Views/Welcome.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -257,14 +257,7 @@ private Task OpenOrInitRepository(string path, ViewModels.RepositoryNode parent
Dispatcher.UIThread.Invoke(() =>
{
var repo = ViewModels.Preference.AddRepository(root, gitDir);
var node = new ViewModels.RepositoryNode()
{
Id = repo.FullPath,
Name = Path.GetFileName(repo.FullPath),
Bookmark = 0,
IsRepository = true,
};
ViewModels.Preference.AddNode(node, parent);
var node = ViewModels.Preference.FindOrAddNodeByRepositoryPath(repo.FullPath, parent);
launcher.OpenRepositoryInTab(node, page);
});
});
Expand Down

0 comments on commit eeb6abb

Please sign in to comment.