fix unexpected different token due to default

This commit is contained in:
Kevin Zhang 2021-07-08 01:38:57 +08:00
parent 199aa75c58
commit dea168924d

View file

@ -135,13 +135,17 @@ namespace Flow.Launcher.ViewModel
var plugin = (IResultUpdated)pair.Plugin; var plugin = (IResultUpdated)pair.Plugin;
plugin.ResultsUpdated += (s, e) => plugin.ResultsUpdated += (s, e) =>
{ {
if (e.Query.RawQuery == QueryText && !e.Token.IsCancellationRequested) if (e.Query.RawQuery != QueryText || e.Token.IsCancellationRequested)
{ {
PluginManager.UpdatePluginMetadata(e.Results, pair.Metadata, e.Query); return;
if (!_resultsUpdateChannelWriter.TryWrite(new ResultsForUpdate(e.Results, pair.Metadata, e.Query, e.Token))) }
{
Log.Error("MainViewModel", "Unable to add item to Result Update Queue"); var token = e.Token == default ? _updateToken : e.Token;
}
PluginManager.UpdatePluginMetadata(e.Results, pair.Metadata, e.Query);
if (!_resultsUpdateChannelWriter.TryWrite(new ResultsForUpdate(e.Results, pair.Metadata, e.Query, token)))
{
Log.Error("MainViewModel", "Unable to add item to Result Update Queue");
} }
}; };
} }
@ -459,7 +463,7 @@ namespace Flow.Launcher.ViewModel
} }
private readonly IReadOnlyList<Result> _emptyResult = new List<Result>(); private readonly IReadOnlyList<Result> _emptyResult = new List<Result>();
private async void QueryResults() private async void QueryResults()
{ {
_updateSource?.Cancel(); _updateSource?.Cancel();
@ -553,7 +557,7 @@ namespace Flow.Launcher.ViewModel
await Task.Yield(); await Task.Yield();
IReadOnlyList<Result> results = await PluginManager.QueryForPluginAsync(plugin, query, currentCancellationToken); IReadOnlyList<Result> results = await PluginManager.QueryForPluginAsync(plugin, query, currentCancellationToken);
currentCancellationToken.ThrowIfCancellationRequested(); currentCancellationToken.ThrowIfCancellationRequested();
results ??= _emptyResult; results ??= _emptyResult;