sourcegit/src/SourceGit/ViewModels/Blame.cs

62 lines
1.5 KiB
C#
Raw Normal View History

using System.Threading.Tasks;
using Avalonia.Threading;
using CommunityToolkit.Mvvm.ComponentModel;
namespace SourceGit.ViewModels
{
public class Blame : ObservableObject
{
public string Title
{
get;
private set;
}
public string SelectedSHA
{
get => _selectedSHA;
private set => SetProperty(ref _selectedSHA, value);
}
public bool IsBinary
{
get => _data != null && _data.IsBinary;
}
public Models.BlameData Data
{
get => _data;
private set => SetProperty(ref _data, value);
}
public Blame(string repo, string file, string revision)
{
_repo = repo;
Title = $"{file} @ {revision.Substring(0, 10)}";
Task.Run(() =>
{
var result = new Commands.Blame(repo, file, revision).Result();
Dispatcher.UIThread.Invoke(() =>
{
Data = result;
OnPropertyChanged(nameof(IsBinary));
});
});
}
public void NavigateToCommit(string commitSHA)
{
var repo = Preference.FindRepository(_repo);
if (repo != null)
repo.NavigateToCommit(commitSHA);
}
private readonly string _repo = string.Empty;
private string _selectedSHA = string.Empty;
private Models.BlameData _data = null;
}
}