From 95ef8bb4589dcf5d7136d5751b6629c78ffb5047 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Fri, 4 Feb 2022 08:26:42 +1100 Subject: [PATCH] add overload for using Uri object --- Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs | 19 +++++++++-- Flow.Launcher/PublicAPIInstance.cs | 33 ++++++++++++------- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs index 3bef9c136..69057820e 100644 --- a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs +++ b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs @@ -228,13 +228,26 @@ namespace Flow.Launcher.Plugin 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. - /// Also supports application URIs e.g. obsidian://search-query-example + /// 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, e.g. obsidian://search-query-example + /// 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 894709b06..81f7a2389 100644 --- a/Flow.Launcher/PublicAPIInstance.cs +++ b/Flow.Launcher/PublicAPIInstance.cs @@ -209,9 +209,8 @@ namespace Flow.Launcher explorer.Start(); } - private void OpenUri(string url, bool? inPrivate = null) + 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,33 +219,43 @@ namespace Flow.Launcher 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); } + } + else + { + Process.Start(new ProcessStartInfo() + { + FileName = uri.AbsoluteUri, + UseShellExecute = true + })?.Dispose(); return; } - - OpenAppUri(url); } 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) { - Process.Start(new ProcessStartInfo() - { - FileName = appUri, - UseShellExecute = true - })?.Dispose(); + OpenUri(new Uri(appUri)); + } - return; + public void OpenAppUri(Uri appUri) + { + OpenUri(appUri); } public event FlowLauncherGlobalKeyboardEventHandler GlobalKeyboardEvent;