Skip to content

Commit 1587010

Browse files
committed
add plugin search
1 parent cc1d049 commit 1587010

File tree

5 files changed

+83
-28
lines changed

5 files changed

+83
-28
lines changed

Plugins/Flow.Launcher.Plugin.PluginManager/Main.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@ public List<Result> LoadContextMenus(Result selectedResult)
3737

3838
public List<Result> Query(Query query)
3939
{
40-
return new List<Result>();
40+
var search = query.Search;
41+
42+
var pluginManager = new PluginsManager();
43+
44+
return pluginManager.PluginsSearch(search);
4145
}
4246

4347
public void Save()

Plugins/Flow.Launcher.Plugin.PluginManager/Models/Plugins.cs

Lines changed: 0 additions & 19 deletions
This file was deleted.

Plugins/Flow.Launcher.Plugin.PluginManager/Models/PluginsManifest.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88

99
namespace Flow.Launcher.Plugin.PluginsManager.Models
1010
{
11-
class PluginsManifest
11+
internal class PluginsManifest
1212
{
13-
public List<Plugin> Plugins { get; private set; }
14-
public PluginsManifest()
13+
internal List<UserPlugin> UserPlugins { get; private set; }
14+
internal PluginsManifest()
1515
{
1616
var json = string.Empty;
1717

@@ -25,11 +25,11 @@ public PluginsManifest()
2525
{
2626
Log.Exception("|PluginManagement.GetManifest|Encountered error trying to download plugins manifest", e);
2727

28-
Plugins = new List<Plugin>();
28+
UserPlugins = new List<UserPlugin>();
2929
}
3030
}
3131

32-
Plugins = !string.IsNullOrEmpty(json) ? JsonConvert.DeserializeObject<List<Plugin>>(json) : new List<Plugin>();
32+
UserPlugins = !string.IsNullOrEmpty(json) ? JsonConvert.DeserializeObject<List<UserPlugin>>(json) : new List<UserPlugin>();
3333
}
3434
}
3535
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace Flow.Launcher.Plugin.PluginsManager.Models
6+
{
7+
public class UserPlugin
8+
{
9+
public string ID { get; set; }
10+
public string Name { get; set; }
11+
public string Description { get; set; }
12+
public string Author { get; set; }
13+
public string Version { get; set; }
14+
public string Language { get; set; }
15+
public string Website { get; set; }
16+
public string UrlDownload { get; set; }
17+
public string UrlSourceCode { get; set; }
18+
}
19+
}

Plugins/Flow.Launcher.Plugin.PluginManager/PluginsManager.cs

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
1-
using Flow.Launcher.Infrastructure.Http;
1+
using Flow.Launcher.Infrastructure;
2+
using Flow.Launcher.Infrastructure.Http;
3+
using Flow.Launcher.Plugin.PluginsManager.Models;
24
using System;
35
using System.Collections.Generic;
6+
using System.Linq;
47
using System.Net;
58
using System.Text;
69

710
namespace Flow.Launcher.Plugin.PluginsManager
811
{
912
internal class PluginsManager
1013
{
11-
internal void PluginInstall(Plugin plugin)
14+
private PluginsManifest pluginsManifest;
15+
internal PluginsManager()
16+
{
17+
pluginsManifest = new PluginsManifest();
18+
}
19+
internal void PluginInstall(UserPlugin plugin)
1220
{
1321
if (PluginExists())
1422
{
@@ -17,7 +25,7 @@ internal void PluginInstall(Plugin plugin)
1725
return;
1826
}
1927

20-
PluginDowload(plugin.Url, "");
28+
PluginDowload(plugin.UrlDownload, "");
2129
}
2230

2331
private void PluginDowload(string downloadUrl, string toFilePath)
@@ -42,5 +50,48 @@ internal void PluginsManifestSiteOpen()
4250
{
4351

4452
}
53+
54+
internal List<Result> PluginsSearch(string searchName)
55+
{
56+
var results = new List<Result>();
57+
58+
if (string.IsNullOrEmpty(searchName))
59+
{
60+
pluginsManifest.UserPlugins
61+
.ForEach(x => results.Add(
62+
new Result
63+
{
64+
Title = $"{x.Name} by {x.Author}",
65+
SubTitle = x.Description,
66+
IcoPath = "Images\\plugin.png",
67+
Action = e =>
68+
{
69+
PluginInstall(x);
70+
return false;
71+
}
72+
}));
73+
74+
return results;
75+
}
76+
77+
pluginsManifest.UserPlugins
78+
.Where(x => StringMatcher.FuzzySearch(searchName, x.Name).IsSearchPrecisionScoreMet())
79+
.Select(x => x)
80+
.ToList()
81+
.ForEach(x => results.Add(
82+
new Result
83+
{
84+
Title = $"{x.Name} by {x.Author}",
85+
SubTitle = x.Description,
86+
IcoPath = "Images\\plugin.png",
87+
Action = e =>
88+
{
89+
PluginInstall(x);
90+
return false;
91+
}
92+
}));
93+
94+
return results;
95+
}
4596
}
4697
}

0 commit comments

Comments
 (0)