add Query.IsForced property

When a plugin is processing a query, it can check the `IsForced` property
to decide if the results will be served from cache or not.
This commit is contained in:
Ioannis G 2023-06-06 12:57:44 +03:00
parent fa2c894ac0
commit 0b05e954e5
No known key found for this signature in database
GPG key ID: EAC0E4E5E36AC49E
2 changed files with 13 additions and 5 deletions

View file

@ -29,6 +29,12 @@ namespace Flow.Launcher.Plugin
/// </summary>
public string RawQuery { get; internal init; }
/// <summary>
/// Determines whether the query was forced to execute again.
/// When this property is true, plugins handling this query should avoid serving cached results.
/// </summary>
public bool IsForced { get; internal set; } = false;
/// <summary>
/// Search part of a query.
/// This will not include action keyword if exclusive plugin gets it, otherwise it should be same as RawQuery.

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
@ -512,7 +512,7 @@ namespace Flow.Launcher.ViewModel
}
else if (reQuery)
{
Query();
Query(reQuery: true);
}
QueryTextCursorMovedToEnd = true;
});
@ -612,11 +612,11 @@ namespace Flow.Launcher.ViewModel
#region Query
public void Query()
public void Query(bool reQuery = false)
{
if (SelectedIsFromQueryResults())
{
QueryResults();
QueryResults(reQuery);
}
else if (ContextMenuSelected())
{
@ -716,7 +716,7 @@ namespace Flow.Launcher.ViewModel
private readonly IReadOnlyList<Result> _emptyResult = new List<Result>();
private async void QueryResults()
private async void QueryResults(bool reQuery = false)
{
_updateSource?.Cancel();
@ -747,6 +747,8 @@ namespace Flow.Launcher.ViewModel
if (currentCancellationToken.IsCancellationRequested)
return;
// Update the query's IsForced property to true if this is a re-query
query.IsForced = reQuery;
// handle the exclusiveness of plugin using action keyword
RemoveOldQueryResults(query);