Skip to content

Commit 297cb5c

Browse files
committed
Return results to tell users that this plugin is still initializing
1 parent 9a20b0e commit 297cb5c

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

Flow.Launcher.Core/Plugin/PluginManager.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,28 @@ public static async Task<List<Result>> QueryForPluginAsync(PluginPair pair, Quer
383383
var results = new List<Result>();
384384
var metadata = pair.Metadata;
385385

386+
if (IsPluginInitializing(metadata))
387+
{
388+
Result r = new()
389+
{
390+
Title = Localize.pluginStillInitializing(metadata.Name),
391+
SubTitle = Localize.pluginStillInitializingSubtitle(),
392+
IcoPath = metadata.IcoPath,
393+
PluginDirectory = metadata.PluginDirectory,
394+
ActionKeywordAssigned = query.ActionKeyword,
395+
PluginID = metadata.ID,
396+
OriginQuery = query,
397+
Action = _ =>
398+
{
399+
PublicApi.Instance.ReQuery();
400+
return false;
401+
},
402+
Score = -100
403+
};
404+
results.Add(r);
405+
return results;
406+
}
407+
386408
try
387409
{
388410
var milliseconds = await PublicApi.Instance.StopwatchLogDebugAsync(ClassName, $"Cost for {metadata.Name}",
@@ -427,6 +449,28 @@ public static async Task<List<Result>> QueryHomeForPluginAsync(PluginPair pair,
427449
var results = new List<Result>();
428450
var metadata = pair.Metadata;
429451

452+
if (IsPluginInitializing(metadata))
453+
{
454+
Result r = new()
455+
{
456+
Title = Localize.pluginStillInitializing(metadata.Name),
457+
SubTitle = Localize.pluginStillInitializingSubtitle(),
458+
IcoPath = metadata.IcoPath,
459+
PluginDirectory = metadata.PluginDirectory,
460+
ActionKeywordAssigned = query.ActionKeyword,
461+
PluginID = metadata.ID,
462+
OriginQuery = query,
463+
Action = _ =>
464+
{
465+
PublicApi.Instance.ReQuery();
466+
return false;
467+
},
468+
Score = -100
469+
};
470+
results.Add(r);
471+
return results;
472+
}
473+
430474
try
431475
{
432476
var milliseconds = await PublicApi.Instance.StopwatchLogDebugAsync(ClassName, $"Cost for {metadata.Name}",
@@ -457,6 +501,12 @@ public static async Task<List<DialogJumpResult>> QueryDialogJumpForPluginAsync(P
457501
var results = new List<DialogJumpResult>();
458502
var metadata = pair.Metadata;
459503

504+
if (IsPluginInitializing(metadata))
505+
{
506+
// null will be fine since the results will only be added into queue if the token hasn't been cancelled
507+
return null;
508+
}
509+
460510
try
461511
{
462512
var milliseconds = await PublicApi.Instance.StopwatchLogDebugAsync(ClassName, $"Cost for {metadata.Name}",
@@ -482,6 +532,11 @@ public static async Task<List<DialogJumpResult>> QueryDialogJumpForPluginAsync(P
482532
return results;
483533
}
484534

535+
private static bool IsPluginInitializing(PluginMetadata metadata)
536+
{
537+
return !_allInitializedPlugins.ContainsKey(metadata.ID);
538+
}
539+
485540
#endregion
486541

487542
#region Get Plugin List

Flow.Launcher/Languages/en.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@
6666
<system:String x:Key="PositionReset">Position Reset</system:String>
6767
<system:String x:Key="PositionResetToolTip">Reset search window position</system:String>
6868
<system:String x:Key="queryTextBoxPlaceholder">Type here to search</system:String>
69+
<system:String x:Key="pluginStillInitializing">{0}: This plugin is still initializing!</system:String>
70+
<system:String x:Key="pluginStillInitializingSubtitle">Please wait for a while and select this result to requery</system:String>
6971

7072
<!-- Setting General -->
7173
<system:String x:Key="flowlauncher_settings">Settings</system:String>

0 commit comments

Comments
 (0)