diff --git a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs index 986710ab8cb..69057820ef8 100644 --- a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs +++ b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs @@ -228,12 +228,26 @@ public interface IPublicAPI public void OpenDirectory(string DirectoryPath, string FileName = null); /// - /// Opens the url. The browser and mode used is based on what's configured in Flow's default browser settings. + /// Opens the URL with the given Uri object. + /// The browser and mode used is based on what's configured in Flow's default browser settings. + /// + public void OpenUrl(Uri url, bool? inPrivate = null); + + /// + /// Opens the URL with the given string. + /// The browser and mode used is based on what's configured in Flow's default browser settings. + /// Non-C# plugins should use this method. /// public void OpenUrl(string url, bool? inPrivate = null); /// - /// Opens the application URI. + /// Opens the application URI with the given Uri object, e.g. obsidian://search-query-example + /// + public void OpenAppUri(Uri appUri); + + /// + /// Opens the application URI with the given string, e.g. obsidian://search-query-example + /// Non-C# plugins should use this method /// public void OpenAppUri(string appUri); } diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs index e3b7de31d5a..81f7a238965 100644 --- a/Flow.Launcher/PublicAPIInstance.cs +++ b/Flow.Launcher/PublicAPIInstance.cs @@ -209,9 +209,8 @@ public void OpenDirectory(string DirectoryPath, string FileName = null) explorer.Start(); } - public void OpenUri(string url, bool? inPrivate = null, bool isAppUri = false) + private void OpenUri(Uri uri, bool? inPrivate = null) { - var uri = new Uri(url); if (uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps) { var browserInfo = _settingsVM.Settings.CustomBrowser; @@ -220,38 +219,43 @@ public void OpenUri(string url, bool? inPrivate = null, bool isAppUri = false) if (browserInfo.OpenInTab) { - url.OpenInBrowserTab(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg); + uri.AbsoluteUri.OpenInBrowserTab(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg); } else { - url.OpenInBrowserWindow(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg); + uri.AbsoluteUri.OpenInBrowserWindow(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg); } - - return; } - - if (isAppUri) + else { Process.Start(new ProcessStartInfo() { - FileName = url, + FileName = uri.AbsoluteUri, UseShellExecute = true })?.Dispose(); return; } - - throw new InvalidOperationException("URI scheme not specified or supported "); } public void OpenUrl(string url, bool? inPrivate = null) + { + OpenUri(new Uri(url), inPrivate); + } + + public void OpenUrl(Uri url, bool? inPrivate = null) { OpenUri(url, inPrivate); } public void OpenAppUri(string appUri) { - OpenUri(appUri, isAppUri: true); + OpenUri(new Uri(appUri)); + } + + public void OpenAppUri(Uri appUri) + { + OpenUri(appUri); } public event FlowLauncherGlobalKeyboardEventHandler GlobalKeyboardEvent; diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Main.cs b/Plugins/Flow.Launcher.Plugin.WebSearch/Main.cs index 2ed41213008..b136e3b8b46 100644 --- a/Plugins/Flow.Launcher.Plugin.WebSearch/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Main.cs @@ -49,9 +49,10 @@ public async Task> QueryAsync(Query query, CancellationToken token) var title = keyword; string subtitle = _context.API.GetTranslation("flowlauncher_plugin_websearch_search") + " " + searchSource.Title; - //Action Keyword match apear on top + // Action Keyword match apear on top var score = searchSource.ActionKeyword == SearchSourceGlobalPluginWildCardSign ? scoreStandard : scoreStandard + 1; + // This populates the associated action keyword search entry if (string.IsNullOrEmpty(keyword)) { var result = new Result @@ -61,6 +62,7 @@ public async Task> QueryAsync(Query query, CancellationToken token) IcoPath = searchSource.IconPath, Score = score }; + results.Add(result); } else @@ -93,7 +95,6 @@ public async Task> QueryAsync(Query query, CancellationToken token) if (token.IsCancellationRequested) return null; - } return results;