refactor: commit search

* no longer depends on the commits displayed in histories view
* limit the number of commits returned by all search methods to a maximum of 1000
This commit is contained in:
leo 2024-08-28 16:56:43 +08:00
parent 48e1de809b
commit c90abd0ca2
No known key found for this signature in database
3 changed files with 24 additions and 22 deletions

View file

@ -548,6 +548,7 @@ namespace SourceGit.ViewModels
return;
IsSearchLoadingVisible = true;
SearchResultSelectedCommit = null;
IsSearchCommitSuggestionOpen = false;
SearchCommitFilterSuggestion.Clear();
@ -558,29 +559,18 @@ namespace SourceGit.ViewModels
switch (_searchCommitFilterType)
{
case 0:
foreach (var c in _histories.Commits)
{
if (c.SHA.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase))
visible.Add(c);
}
var commit = new Commands.QuerySingleCommit(_fullpath, _searchCommitFilter).Result();
if (commit != null)
visible.Add(commit);
break;
case 1:
foreach (var c in _histories.Commits)
{
if (c.Author.Name.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
|| c.Committer.Name.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
|| c.Author.Email.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
|| c.Committer.Email.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase))
visible.Add(c);
}
visible = new Commands.QueryCommits(_fullpath, _searchCommitFilter, Models.CommitSearchMethod.ByUser).Result();
break;
case 2:
visible = new Commands.QueryCommits(_fullpath, 1000, _searchCommitFilter, false).Result();
visible = new Commands.QueryCommits(_fullpath, _searchCommitFilter, Models.CommitSearchMethod.ByMessage).Result();
break;
case 3:
visible = new Commands.QueryCommits(_fullpath, 1000, _searchCommitFilter, true).Result();
visible = new Commands.QueryCommits(_fullpath, _searchCommitFilter, Models.CommitSearchMethod.ByFile).Result();
break;
}