Skip to content

Commit 2d6b476

Browse files
committed
use Ctrl+R to fetch primary manifest source
from a `pm install` or `pm update` query should help with #2048
1 parent f03ac76 commit 2d6b476

File tree

4 files changed

+16
-16
lines changed

4 files changed

+16
-16
lines changed

Flow.Launcher.Core/ExternalPlugins/CommunityPluginStore.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@ public record CommunityPluginStore(string primaryUrl, params string[] secondaryU
2020
.Select(url => new CommunityPluginSource(url))
2121
.ToList();
2222

23-
public async Task<List<UserPlugin>> FetchAsync(CancellationToken token)
23+
public async Task<List<UserPlugin>> FetchAsync(CancellationToken token, bool onlyFromPrimaryUrl = false)
2424
{
2525
// we create a new cancellation token source linked to the given token.
2626
// Once any of the http requests completes successfully, we call cancel
2727
// to stop the rest of the running http requests.
2828
var cts = CancellationTokenSource.CreateLinkedTokenSource(token);
2929

30-
var tasks = pluginSources
31-
.Select(pluginSource => pluginSource.FetchAsync(cts.Token))
32-
.ToList();
30+
var tasks = onlyFromPrimaryUrl
31+
? new() { pluginSources.Last().FetchAsync(cts.Token) }
32+
: pluginSources.Select(pluginSource => pluginSource.FetchAsync(cts.Token)).ToList();
3333

3434
var pluginResults = new List<UserPlugin>();
3535

Flow.Launcher.Core/ExternalPlugins/PluginsManifest.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Flow.Launcher.Infrastructure.Logger;
1+
using Flow.Launcher.Infrastructure.Logger;
22
using System;
33
using System.Collections.Generic;
44
using System.Threading;
@@ -21,15 +21,15 @@ public static class PluginsManifest
2121

2222
public static List<UserPlugin> UserPlugins { get; private set; }
2323

24-
public static async Task UpdateManifestAsync(CancellationToken token = default)
24+
public static async Task UpdateManifestAsync(CancellationToken token = default, bool usePrimaryUrlOnly = false)
2525
{
2626
try
2727
{
2828
await manifestUpdateLock.WaitAsync(token).ConfigureAwait(false);
2929

30-
if (UserPlugins == null || DateTime.Now.Subtract(lastFetchedAt) >= fetchTimeout)
30+
if (UserPlugins == null || usePrimaryUrlOnly || DateTime.Now.Subtract(lastFetchedAt) >= fetchTimeout)
3131
{
32-
var results = await mainPluginStore.FetchAsync(token).ConfigureAwait(false);
32+
var results = await mainPluginStore.FetchAsync(token, usePrimaryUrlOnly).ConfigureAwait(false);
3333

3434
UserPlugins = results;
3535
lastFetchedAt = DateTime.Now;

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Flow.Launcher.Core.ExternalPlugins;
1+
using Flow.Launcher.Core.ExternalPlugins;
22
using Flow.Launcher.Plugin.PluginsManager.ViewModels;
33
using Flow.Launcher.Plugin.PluginsManager.Views;
44
using System.Collections.Generic;
@@ -51,9 +51,9 @@ public async Task<List<Result>> QueryAsync(Query query, CancellationToken token)
5151
return query.FirstSearch.ToLower() switch
5252
{
5353
//search could be url, no need ToLower() when passed in
54-
Settings.InstallCommand => await pluginManager.RequestInstallOrUpdate(query.SecondToEndSearch, token),
54+
Settings.InstallCommand => await pluginManager.RequestInstallOrUpdate(query.SecondToEndSearch, token, query.IsReQuery),
5555
Settings.UninstallCommand => pluginManager.RequestUninstall(query.SecondToEndSearch),
56-
Settings.UpdateCommand => await pluginManager.RequestUpdateAsync(query.SecondToEndSearch, token),
56+
Settings.UpdateCommand => await pluginManager.RequestUpdateAsync(query.SecondToEndSearch, token, query.IsReQuery),
5757
_ => pluginManager.GetDefaultHotKeys().Where(hotkey =>
5858
{
5959
hotkey.Score = StringMatcher.FuzzySearch(query.Search, hotkey.Title).Score;

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Flow.Launcher.Core.ExternalPlugins;
1+
using Flow.Launcher.Core.ExternalPlugins;
22
using Flow.Launcher.Core.Plugin;
33
using Flow.Launcher.Infrastructure;
44
using Flow.Launcher.Infrastructure.Http;
@@ -162,9 +162,9 @@ internal async Task InstallOrUpdateAsync(UserPlugin plugin)
162162
Context.API.RestartApp();
163163
}
164164

165-
internal async ValueTask<List<Result>> RequestUpdateAsync(string search, CancellationToken token)
165+
internal async ValueTask<List<Result>> RequestUpdateAsync(string search, CancellationToken token, bool usePrimaryUrlOnly = false)
166166
{
167-
await PluginsManifest.UpdateManifestAsync(token);
167+
await PluginsManifest.UpdateManifestAsync(token, usePrimaryUrlOnly);
168168

169169
var resultsForUpdate =
170170
from existingPlugin in Context.API.GetAllPlugins()
@@ -337,9 +337,9 @@ private bool InstallSourceKnown(string url)
337337
return url.StartsWith(acceptedSource) && Context.API.GetAllPlugins().Any(x => x.Metadata.Website.StartsWith(contructedUrlPart));
338338
}
339339

340-
internal async ValueTask<List<Result>> RequestInstallOrUpdate(string search, CancellationToken token)
340+
internal async ValueTask<List<Result>> RequestInstallOrUpdate(string search, CancellationToken token, bool usePrimaryUrlOnly = false)
341341
{
342-
await PluginsManifest.UpdateManifestAsync(token);
342+
await PluginsManifest.UpdateManifestAsync(token, usePrimaryUrlOnly);
343343

344344
if (Uri.IsWellFormedUriString(search, UriKind.Absolute)
345345
&& search.Split('.').Last() == zip)

0 commit comments

Comments
 (0)