mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-11-01 13:13:21 -07:00
49 lines
1.4 KiB
C#
49 lines
1.4 KiB
C#
|
using Avalonia.Threading;
|
|||
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
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 string _repo = string.Empty;
|
|||
|
private string _selectedSHA = string.Empty;
|
|||
|
private Models.BlameData _data = null;
|
|||
|
}
|
|||
|
}
|