From 780668aec12da147e4efe7fd660e0525a4b19f8e Mon Sep 17 00:00:00 2001 From: qianlifeng Date: Thu, 14 Nov 2024 20:46:20 +0800 Subject: [PATCH] [App Plugin] Fix the issue that user directories is not being indexed --- Wox/plugin/system/app/app.go | 45 +++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/Wox/plugin/system/app/app.go b/Wox/plugin/system/app/app.go index a2657cd1f..bf77760cf 100644 --- a/Wox/plugin/system/app/app.go +++ b/Wox/plugin/system/app/app.go @@ -91,17 +91,6 @@ func (a *ApplicationPlugin) GetMetadata() plugin.Metadata { "Linux", }, SettingDefinitions: []definition.PluginSettingDefinitionItem{ - { - Type: definition.PluginSettingDefinitionTypeCheckBox, - Value: &definition.PluginSettingValueCheckBox{ - Key: "UsePinYin", - Label: "Use pinyin to search", - DefaultValue: "false", - }, - }, - { - Type: definition.PluginSettingDefinitionTypeNewLine, - }, { Type: definition.PluginSettingDefinitionTypeTable, Value: &definition.PluginSettingValueTable{ @@ -143,6 +132,12 @@ func (a *ApplicationPlugin) Init(ctx context.Context, initParams plugin.InitPara } } }) + + a.api.OnSettingChanged(ctx, func(key string, value string) { + if key == "AppDirectories" { + a.indexApps(ctx) + } + }) } func (a *ApplicationPlugin) Query(ctx context.Context, query plugin.Query) []plugin.QueryResult { @@ -263,7 +258,7 @@ func (a *ApplicationPlugin) getRetriever(ctx context.Context) Retriever { } func (a *ApplicationPlugin) watchAppChanges(ctx context.Context) { - var appDirectories = a.retriever.GetAppDirectories(ctx) + var appDirectories = a.getAppDirectories(ctx) var appExtensions = a.retriever.GetAppExtensions(ctx) for _, d := range appDirectories { var directory = d @@ -338,8 +333,32 @@ func (a *ApplicationPlugin) indexApps(ctx context.Context) { a.api.Log(ctx, plugin.LogLevelInfo, fmt.Sprintf("indexed %d apps, cost %d ms", len(a.apps), util.GetSystemTimestamp()-startTimestamp)) } +func (a *ApplicationPlugin) getUserAddedPaths(ctx context.Context) []appDirectory { + userAddedPaths := a.api.GetSetting(ctx, "AppDirectories") + if userAddedPaths == "" { + return []appDirectory{} + } + + var appDirectories []appDirectory + unmarshalErr := json.Unmarshal([]byte(userAddedPaths), &appDirectories) + if unmarshalErr != nil { + return []appDirectory{} + } + + for i := range appDirectories { + appDirectories[i].Recursive = true + appDirectories[i].RecursiveDepth = 3 + } + + return appDirectories +} + +func (a *ApplicationPlugin) getAppDirectories(ctx context.Context) []appDirectory { + return append(a.getUserAddedPaths(ctx), a.getRetriever(ctx).GetAppDirectories(ctx)...) +} + func (a *ApplicationPlugin) indexAppsByDirectory(ctx context.Context) []appInfo { - appDirectories := a.getRetriever(ctx).GetAppDirectories(ctx) + appDirectories := a.getAppDirectories(ctx) appPaths := a.getAppPaths(ctx, appDirectories) // split into groups, so we can index apps in parallel