PluginsManager: simplify passing down of queries

This commit is contained in:
Ioannis G 2022-01-11 08:55:59 +02:00
parent 658ddb2cf6
commit d95010697d
No known key found for this signature in database
GPG key ID: EAC0E4E5E36AC49E
2 changed files with 16 additions and 70 deletions

View file

@ -47,23 +47,21 @@ namespace Flow.Launcher.Plugin.PluginsManager
public async Task<List<Result>> QueryAsync(Query query, CancellationToken token)
{
var search = query.Search;
if (string.IsNullOrWhiteSpace(search))
if (string.IsNullOrWhiteSpace(query.Search))
return pluginManager.GetDefaultHotKeys();
return search switch
return query.FirstSearch switch
{
//search could be url, no need ToLower() when passed in
var s when s.StartsWith(Settings.HotKeyInstall, StringComparison.OrdinalIgnoreCase)
=> await pluginManager.RequestInstallOrUpdate(search, token),
var s when s.StartsWith(Settings.HotkeyUninstall, StringComparison.OrdinalIgnoreCase)
=> pluginManager.RequestUninstall(search),
var s when s.StartsWith(Settings.HotkeyUpdate, StringComparison.OrdinalIgnoreCase)
=> await pluginManager.RequestUpdate(search, token),
var s when s.Equals(Settings.HotKeyInstall, StringComparison.OrdinalIgnoreCase)
=> await pluginManager.RequestInstallOrUpdate(query.SecondToEndSearch, token),
var s when s.Equals(Settings.HotkeyUninstall, StringComparison.OrdinalIgnoreCase)
=> pluginManager.RequestUninstall(query.SecondToEndSearch),
var s when s.Equals(Settings.HotkeyUpdate, StringComparison.OrdinalIgnoreCase)
=> await pluginManager.RequestUpdate(query.SecondToEndSearch, token),
_ => pluginManager.GetDefaultHotKeys().Where(hotkey =>
{
hotkey.Score = StringMatcher.FuzzySearch(search, hotkey.Title).Score;
hotkey.Score = StringMatcher.FuzzySearch(query.Search, hotkey.Title).Score;
return hotkey.Score > 0;
}).ToList()
};

View file

@ -186,16 +186,6 @@ namespace Flow.Launcher.Plugin.PluginsManager
{
await UpdateManifestAsync(token);
var autocompletedResults = AutoCompleteReturnAllResults(search,
Settings.HotkeyUpdate,
"Update",
"Select a plugin to update");
if (autocompletedResults.Any())
return autocompletedResults;
var uninstallSearch = search.Replace(Settings.HotkeyUpdate, string.Empty, StringComparison.OrdinalIgnoreCase).TrimStart();
var resultsForUpdate =
from existingPlugin in Context.API.GetAllPlugins()
join pluginFromManifest in PluginsManifest.UserPlugins
@ -283,7 +273,7 @@ namespace Flow.Launcher.Plugin.PluginsManager
}
});
return Search(results, uninstallSearch);
return Search(results, search);
}
internal bool PluginExists(string id)
@ -367,15 +357,13 @@ namespace Flow.Launcher.Plugin.PluginsManager
return url.StartsWith(acceptedSource) && Context.API.GetAllPlugins().Any(x => x.Metadata.Website.StartsWith(contructedUrlPart));
}
internal async ValueTask<List<Result>> RequestInstallOrUpdate(string searchName, CancellationToken token)
internal async ValueTask<List<Result>> RequestInstallOrUpdate(string search, CancellationToken token)
{
await UpdateManifestAsync(token);
var searchNameWithoutKeyword = searchName.Replace(Settings.HotKeyInstall, string.Empty, StringComparison.OrdinalIgnoreCase).Trim();
if (Uri.IsWellFormedUriString(searchNameWithoutKeyword, UriKind.Absolute)
&& searchNameWithoutKeyword.Split('.').Last() == zip)
return InstallFromWeb(searchNameWithoutKeyword);
if (Uri.IsWellFormedUriString(search, UriKind.Absolute)
&& search.Split('.').Last() == zip)
return InstallFromWeb(search);
var results =
PluginsManifest
@ -401,7 +389,7 @@ namespace Flow.Launcher.Plugin.PluginsManager
ContextData = x
});
return Search(results, searchNameWithoutKeyword);
return Search(results, search);
}
private void Install(UserPlugin plugin, string downloadedFilePath)
@ -461,16 +449,6 @@ namespace Flow.Launcher.Plugin.PluginsManager
internal List<Result> RequestUninstall(string search)
{
var autocompletedResults = AutoCompleteReturnAllResults(search,
Settings.HotkeyUninstall,
"Uninstall",
"Select a plugin to uninstall");
if (autocompletedResults.Any())
return autocompletedResults;
var uninstallSearch = search.Replace(Settings.HotkeyUninstall, string.Empty, StringComparison.OrdinalIgnoreCase).TrimStart();
var results = Context.API
.GetAllPlugins()
.Select(x =>
@ -501,7 +479,7 @@ namespace Flow.Launcher.Plugin.PluginsManager
}
});
return Search(results, uninstallSearch);
return Search(results, search);
}
private void Uninstall(PluginMetadata plugin, bool removedSetting = true)
@ -516,36 +494,6 @@ namespace Flow.Launcher.Plugin.PluginsManager
using var _ = File.CreateText(Path.Combine(plugin.PluginDirectory, "NeedDelete.txt"));
}
private List<Result> AutoCompleteReturnAllResults(string search, string hotkey, string title, string subtitle)
{
if (!string.IsNullOrEmpty(search)
&& hotkey.StartsWith(search)
&& (hotkey != search || !search.StartsWith(hotkey)))
{
return
new List<Result>
{
new Result
{
Title = title,
IcoPath = icoPath,
SubTitle = subtitle,
Action = e =>
{
Context
.API
.ChangeQuery(
$"{Context.CurrentPluginMetadata.ActionKeywords.FirstOrDefault()} {hotkey} ");
return false;
}
}
};
}
return new List<Result>();
}
private bool SameOrLesserPluginVersionExists(string metadataPath)
{
var newMetadata = JsonSerializer.Deserialize<PluginMetadata>(File.ReadAllText(metadataPath));