sourcegit/src/ViewModels/StashChanges.cs
leo 96d4150d26 project: reorganize the structure of the project.
* remove dotnet-tool.json because the project does not rely on any dotnet tools.
* remove Directory.Build.props because the solution has only one project.
* move src/SourceGit to src. It's not needed to put all sources into a subfolder of src since there's only one project.
2024-04-02 20:00:33 +08:00

69 lines
1.7 KiB
C#

using System.Collections.Generic;
using System.Threading.Tasks;
namespace SourceGit.ViewModels
{
public class StashChanges : Popup
{
public string Message
{
get;
set;
}
public bool CanIgnoreUntracked
{
get;
private set;
}
public bool IncludeUntracked
{
get;
set;
}
public StashChanges(Repository repo, List<Models.Change> changes, bool canIgnoreUntracked)
{
_repo = repo;
_changes = changes;
CanIgnoreUntracked = canIgnoreUntracked;
IncludeUntracked = true;
View = new Views.StashChanges() { DataContext = this };
}
public override Task<bool> Sure()
{
var jobs = _changes;
if (CanIgnoreUntracked && !IncludeUntracked)
{
jobs = new List<Models.Change>();
foreach (var job in _changes)
{
if (job.WorkTree != Models.ChangeState.Untracked && job.WorkTree != Models.ChangeState.Added)
{
jobs.Add(job);
}
}
}
if (jobs.Count == 0)
return null;
_repo.SetWatcherEnabled(false);
ProgressDescription = $"Stash changes ...";
return Task.Run(() =>
{
new Commands.Stash(_repo.FullPath).Push(jobs, Message);
CallUIThread(() => _repo.SetWatcherEnabled(true));
return true;
});
}
private readonly Repository _repo = null;
private readonly List<Models.Change> _changes = null;
}
}