enhance: prevent requesting revision files more than once time

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-05-20 16:29:29 +08:00
parent d56c6a5030
commit eb183589f5
No known key found for this signature in database

View file

@ -149,6 +149,7 @@ namespace SourceGit.ViewModels
_diffContext = null; _diffContext = null;
_viewRevisionFileContent = null; _viewRevisionFileContent = null;
_cancellationSource = null; _cancellationSource = null;
_requestingRevisionFiles = false;
_revisionFiles = null; _revisionFiles = null;
_revisionFileSearchSuggestion = null; _revisionFileSearchSuggestion = null;
} }
@ -546,6 +547,7 @@ namespace SourceGit.ViewModels
private void Refresh() private void Refresh()
{ {
_changes = null; _changes = null;
_requestingRevisionFiles = false;
_revisionFiles = null; _revisionFiles = null;
SignInfo = null; SignInfo = null;
@ -812,16 +814,22 @@ namespace SourceGit.ViewModels
{ {
if (_revisionFiles == null) if (_revisionFiles == null)
{ {
if (_requestingRevisionFiles)
return;
var sha = Commit.SHA; var sha = Commit.SHA;
_requestingRevisionFiles = true;
Task.Run(() => Task.Run(() =>
{ {
var files = new Commands.QueryRevisionFileNames(_repo.FullPath, sha).Result(); var files = new Commands.QueryRevisionFileNames(_repo.FullPath, sha).Result();
Dispatcher.UIThread.Invoke(() => Dispatcher.UIThread.Invoke(() =>
{ {
if (sha == Commit.SHA) if (sha == Commit.SHA && _requestingRevisionFiles)
{ {
_revisionFiles = files; _revisionFiles = files;
_requestingRevisionFiles = false;
if (!string.IsNullOrEmpty(_revisionFileSearchFilter)) if (!string.IsNullOrEmpty(_revisionFileSearchFilter))
CalcRevisionFileSearchSuggestion(); CalcRevisionFileSearchSuggestion();
} }
@ -907,6 +915,7 @@ namespace SourceGit.ViewModels
private DiffContext _diffContext = null; private DiffContext _diffContext = null;
private object _viewRevisionFileContent = null; private object _viewRevisionFileContent = null;
private CancellationTokenSource _cancellationSource = null; private CancellationTokenSource _cancellationSource = null;
private bool _requestingRevisionFiles = false;
private List<string> _revisionFiles = null; private List<string> _revisionFiles = null;
private string _revisionFileSearchFilter = string.Empty; private string _revisionFileSearchFilter = string.Empty;
private List<string> _revisionFileSearchSuggestion = null; private List<string> _revisionFileSearchSuggestion = null;