From e17e4b9a5349a313c42a66511e23ddb929bd66a3 Mon Sep 17 00:00:00 2001 From: leo Date: Wed, 19 Jun 2024 12:06:34 +0800 Subject: [PATCH] enhance: only show tracking options when file is not tracked by GIT LFS --- src/ViewModels/WorkingCopy.cs | 49 +++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/src/ViewModels/WorkingCopy.cs b/src/ViewModels/WorkingCopy.cs index 434923f2..b0f91dea 100644 --- a/src/ViewModels/WorkingCopy.cs +++ b/src/ViewModels/WorkingCopy.cs @@ -618,33 +618,39 @@ namespace SourceGit.ViewModels lfs.Header = App.Text("GitLFS"); lfs.Icon = App.CreateMenuIcon("Icons.LFS"); - var filename = Path.GetFileName(change.Path); - var lfsTrackThisFile = new MenuItem(); - lfsTrackThisFile.Header = App.Text("GitLFS.Track", filename); - lfsTrackThisFile.Click += async (_, e) => + var isLFSFiltered = new Commands.IsLFSFiltered(_repo.FullPath, change.Path).Result(); + if (!isLFSFiltered) { - var succ = await Task.Run(() => new Commands.LFS(_repo.FullPath).Track(filename, true)); - if (succ) - App.SendNotification(_repo.FullPath, $"Tracking file named {filename} successfully!"); - - e.Handled = true; - }; - lfs.Items.Add(lfsTrackThisFile); - - if (!string.IsNullOrEmpty(extension)) - { - var lfsTrackByExtension = new MenuItem(); - lfsTrackByExtension.Header = App.Text("GitLFS.TrackByExtension", extension); - lfsTrackByExtension.Click += async (_, e) => + var filename = Path.GetFileName(change.Path); + var lfsTrackThisFile = new MenuItem(); + lfsTrackThisFile.Header = App.Text("GitLFS.Track", filename); + lfsTrackThisFile.Click += async (_, e) => { - var succ = await Task.Run(() => new Commands.LFS(_repo.FullPath).Track("*" + extension, false)); + var succ = await Task.Run(() => new Commands.LFS(_repo.FullPath).Track(filename, true)); if (succ) - App.SendNotification(_repo.FullPath, $"Tracking all *{extension} files successfully!"); + App.SendNotification(_repo.FullPath, $"Tracking file named {filename} successfully!"); e.Handled = true; }; - lfs.Items.Add(lfsTrackByExtension); - } + lfs.Items.Add(lfsTrackThisFile); + + if (!string.IsNullOrEmpty(extension)) + { + var lfsTrackByExtension = new MenuItem(); + lfsTrackByExtension.Header = App.Text("GitLFS.TrackByExtension", extension); + lfsTrackByExtension.Click += async (_, e) => + { + var succ = await Task.Run(() => new Commands.LFS(_repo.FullPath).Track("*" + extension, false)); + if (succ) + App.SendNotification(_repo.FullPath, $"Tracking all *{extension} files successfully!"); + + e.Handled = true; + }; + lfs.Items.Add(lfsTrackByExtension); + } + + lfs.Items.Add(new MenuItem() { Header = "-" }); + } var lfsLock = new MenuItem(); lfsLock.Header = App.Text("GitLFS.Locks.Lock"); @@ -657,7 +663,6 @@ namespace SourceGit.ViewModels e.Handled = true; }; - lfs.Items.Add(new MenuItem() { Header = "-" }); lfs.Items.Add(lfsLock); var lfsUnlock = new MenuItem();