From 8880e040f73ad9b99b0b79bbf9df6e60c0cc7082 Mon Sep 17 00:00:00 2001 From: rafael-aero Date: Mon, 12 Jul 2021 18:16:07 +0200 Subject: [PATCH] remove remaining .Result calls --- ElectronNET.API/App.cs | 58 ++----- ElectronNET.API/AutoUpdater.cs | 289 +++++++++++++++------------------ ElectronNET.API/BrowserView.cs | 31 ++-- ElectronNET.CLI/Program.cs | 5 +- 4 files changed, 164 insertions(+), 219 deletions(-) diff --git a/ElectronNET.API/App.cs b/ElectronNET.API/App.cs index bf08b75..6baab53 100644 --- a/ElectronNET.API/App.cs +++ b/ElectronNET.API/App.cs @@ -473,11 +473,6 @@ namespace ElectronNET.API /// public string Name { - [Obsolete("Use the asynchronous version NameAsync instead")] - get - { - return NameAsync.Result; - } set { BridgeConnector.Socket.Emit("appSetName", value); @@ -492,25 +487,19 @@ namespace ElectronNET.API /// should usually also specify a productName field, which is your application's full capitalized name, and /// which will be preferred over name by Electron. /// - public Task NameAsync + public Task GetNameAsync() { - get + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("appGetNameCompleted", (result) => { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource(); + BridgeConnector.Socket.Off("appGetNameCompleted"); + taskCompletionSource.SetResult((string)result); + }); - BridgeConnector.Socket.On("appGetNameCompleted", (result) => - { - BridgeConnector.Socket.Off("appGetNameCompleted"); - taskCompletionSource.SetResult((string)result); - }); + BridgeConnector.Socket.Emit("appGetName"); - BridgeConnector.Socket.Emit("appGetName"); - - return taskCompletionSource.Task; - }); - } + return taskCompletionSource.Task; } @@ -1571,11 +1560,6 @@ namespace ElectronNET.API /// public string UserAgentFallback { - [Obsolete("Use the asynchronous version UserAgentFallbackAsync instead")] - get - { - return UserAgentFallbackAsync.Result; - } set { BridgeConnector.Socket.Emit("appSetUserAgentFallback", value); @@ -1590,25 +1574,19 @@ namespace ElectronNET.API /// custom value as early as possible in your app's initialization to ensure that your overridden value /// is used. /// - public Task UserAgentFallbackAsync + public Task GetUserAgentFallbackAsync() { - get + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("appGetUserAgentFallbackCompleted", (result) => { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource(); + BridgeConnector.Socket.Off("appGetUserAgentFallbackCompleted"); + taskCompletionSource.SetResult((string)result); + }); - BridgeConnector.Socket.On("appGetUserAgentFallbackCompleted", (result) => - { - BridgeConnector.Socket.Off("appGetUserAgentFallbackCompleted"); - taskCompletionSource.SetResult((string)result); - }); + BridgeConnector.Socket.Emit("appGetUserAgentFallback"); - BridgeConnector.Socket.Emit("appGetUserAgentFallback"); - - return taskCompletionSource.Task; - }); - } + return taskCompletionSource.Task; } internal void PreventQuit() diff --git a/ElectronNET.API/AutoUpdater.cs b/ElectronNET.API/AutoUpdater.cs index da1001f..2d8f656 100644 --- a/ElectronNET.API/AutoUpdater.cs +++ b/ElectronNET.API/AutoUpdater.cs @@ -13,28 +13,104 @@ namespace ElectronNET.API /// public sealed class AutoUpdater { + /// + /// Whether to automatically download an update when it is found. (Default is true) + /// + public Task IsAutoDownloadEnabledAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("autoUpdater-autoDownload-get-reply", (result) => + { + BridgeConnector.Socket.Off("autoUpdater-autoDownload-get-reply"); + taskCompletionSource.SetResult((bool)result); + }); + + BridgeConnector.Socket.Emit("autoUpdater-autoDownload-get"); + + return taskCompletionSource.Task; + } + + /// + /// Whether to automatically install a downloaded update on app quit (if `QuitAndInstall` was not called before). + /// + /// Applicable only on Windows and Linux. + /// + public Task IsAutoInstallOnAppQuitEnabledAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("autoUpdater-autoInstallOnAppQuit-get-reply", (result) => + { + BridgeConnector.Socket.Off("autoUpdater-autoInstallOnAppQuit-get-reply"); + taskCompletionSource.SetResult((bool)result); + }); + + BridgeConnector.Socket.Emit("autoUpdater-autoInstallOnAppQuit-get"); + + return taskCompletionSource.Task; + } + + /// + /// *GitHub provider only.* Whether to allow update to pre-release versions. + /// Defaults to "true" if application version contains prerelease components (e.g. "0.12.1-alpha.1", here "alpha" is a prerelease component), otherwise "false". + /// + /// If "true", downgrade will be allowed("allowDowngrade" will be set to "true"). + /// + public Task IsAllowPrereleaseEnabledAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("autoUpdater-allowPrerelease-get-reply", (result) => + { + BridgeConnector.Socket.Off("autoUpdater-allowPrerelease-get-reply"); + taskCompletionSource.SetResult((bool)result); + }); + + BridgeConnector.Socket.Emit("autoUpdater-allowPrerelease-get"); + + return taskCompletionSource.Task; + } + + /// + /// *GitHub provider only.* + /// Get all release notes (from current version to latest), not just the latest (Default is false). + /// + public Task IsFullChangeLogEnabledAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("autoUpdater-fullChangelog-get-reply", (result) => + { + BridgeConnector.Socket.Off("autoUpdater-fullChangelog-get-reply"); + taskCompletionSource.SetResult((bool)result); + }); + + BridgeConnector.Socket.Emit("autoUpdater-fullChangelog-get"); + + return taskCompletionSource.Task; + } + + public Task IsAllowDowngradeEnabledAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("autoUpdater-allowDowngrade-get-reply", (result) => + { + BridgeConnector.Socket.Off("autoUpdater-allowDowngrade-get-reply"); + taskCompletionSource.SetResult((bool)result); + }); + + BridgeConnector.Socket.Emit("autoUpdater-allowDowngrade-get"); + + return taskCompletionSource.Task; + } + /// /// Whether to automatically download an update when it is found. (Default is true) /// public bool AutoDownload { - get - { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource(); - - BridgeConnector.Socket.On("autoUpdater-autoDownload-get-reply", (result) => - { - BridgeConnector.Socket.Off("autoUpdater-autoDownload-get-reply"); - taskCompletionSource.SetResult((bool)result); - }); - - BridgeConnector.Socket.Emit("autoUpdater-autoDownload-get"); - - return taskCompletionSource.Task; - }).Result; - } set { BridgeConnector.Socket.Emit("autoUpdater-autoDownload-set", value); @@ -48,23 +124,6 @@ namespace ElectronNET.API /// public bool AutoInstallOnAppQuit { - get - { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource(); - - BridgeConnector.Socket.On("autoUpdater-autoInstallOnAppQuit-get-reply", (result) => - { - BridgeConnector.Socket.Off("autoUpdater-autoInstallOnAppQuit-get-reply"); - taskCompletionSource.SetResult((bool)result); - }); - - BridgeConnector.Socket.Emit("autoUpdater-autoInstallOnAppQuit-get"); - - return taskCompletionSource.Task; - }).Result; - } set { BridgeConnector.Socket.Emit("autoUpdater-autoInstallOnAppQuit-set", value); @@ -79,23 +138,6 @@ namespace ElectronNET.API /// public bool AllowPrerelease { - get - { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource(); - - BridgeConnector.Socket.On("autoUpdater-allowPrerelease-get-reply", (result) => - { - BridgeConnector.Socket.Off("autoUpdater-allowPrerelease-get-reply"); - taskCompletionSource.SetResult((bool)result); - }); - - BridgeConnector.Socket.Emit("autoUpdater-allowPrerelease-get"); - - return taskCompletionSource.Task; - }).Result; - } set { BridgeConnector.Socket.Emit("autoUpdater-allowPrerelease-set", value); @@ -108,23 +150,6 @@ namespace ElectronNET.API /// public bool FullChangelog { - get - { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource(); - - BridgeConnector.Socket.On("autoUpdater-fullChangelog-get-reply", (result) => - { - BridgeConnector.Socket.Off("autoUpdater-fullChangelog-get-reply"); - taskCompletionSource.SetResult((bool)result); - }); - - BridgeConnector.Socket.Emit("autoUpdater-fullChangelog-get"); - - return taskCompletionSource.Task; - }).Result; - } set { BridgeConnector.Socket.Emit("autoUpdater-fullChangelog-set", value); @@ -138,23 +163,6 @@ namespace ElectronNET.API /// public bool AllowDowngrade { - get - { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource(); - - BridgeConnector.Socket.On("autoUpdater-allowDowngrade-get-reply", (result) => - { - BridgeConnector.Socket.Off("autoUpdater-allowDowngrade-get-reply"); - taskCompletionSource.SetResult((bool)result); - }); - - BridgeConnector.Socket.Emit("autoUpdater-allowDowngrade-get"); - - return taskCompletionSource.Task; - }).Result; - } set { BridgeConnector.Socket.Emit("autoUpdater-allowDowngrade-set", value); @@ -164,86 +172,55 @@ namespace ElectronNET.API /// /// For test only. /// - public string UpdateConfigPath + public Task GetUpdateConfigPathAsync() { - get + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("autoUpdater-updateConfigPath-get-reply", (result) => { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource(); + BridgeConnector.Socket.Off("autoUpdater-updateConfigPath-get-reply"); + taskCompletionSource.SetResult(result.ToString()); + }); - BridgeConnector.Socket.On("autoUpdater-updateConfigPath-get-reply", (result) => - { - BridgeConnector.Socket.Off("autoUpdater-updateConfigPath-get-reply"); - taskCompletionSource.SetResult(result.ToString()); - }); + BridgeConnector.Socket.Emit("autoUpdater-updateConfigPath-get"); - BridgeConnector.Socket.Emit("autoUpdater-updateConfigPath-get"); - - return taskCompletionSource.Task; - }).Result; - } + return taskCompletionSource.Task; } /// /// The current application version /// - public Task CurrentVersionAsync + public Task GetCurrentVersionAsync() { - get + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("autoUpdater-currentVersion-get-reply", (result) => { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource(); + BridgeConnector.Socket.Off("autoUpdater-currentVersion-get-reply"); + SemVer version = ((JObject)result).ToObject(); + taskCompletionSource.SetResult(version); + }); + BridgeConnector.Socket.Emit("autoUpdater-currentVersion-get"); - BridgeConnector.Socket.On("autoUpdater-currentVersion-get-reply", (result) => - { - BridgeConnector.Socket.Off("autoUpdater-currentVersion-get-reply"); - SemVer version = ((JObject)result).ToObject(); - taskCompletionSource.SetResult(version); - }); - BridgeConnector.Socket.Emit("autoUpdater-currentVersion-get"); - - return taskCompletionSource.Task; - }); - } + return taskCompletionSource.Task; } /// /// Get the update channel. Not applicable for GitHub. /// Doesn’t return channel from the update configuration, only if was previously set. /// - [Obsolete("Use the asynchronous version ChannelAsync instead")] - public string Channel + public Task GetChannelAsync() { - get + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("autoUpdater-channel-get-reply", (result) => { - return ChannelAsync.Result; - } - } + BridgeConnector.Socket.Off("autoUpdater-channel-get-reply"); + taskCompletionSource.SetResult(result.ToString()); + }); + BridgeConnector.Socket.Emit("autoUpdater-channel-get"); - /// - /// Get the update channel. Not applicable for GitHub. - /// Doesn’t return channel from the update configuration, only if was previously set. - /// - public Task ChannelAsync - { - get - { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource(); - - BridgeConnector.Socket.On("autoUpdater-channel-get-reply", (result) => - { - BridgeConnector.Socket.Off("autoUpdater-channel-get-reply"); - taskCompletionSource.SetResult(result.ToString()); - }); - BridgeConnector.Socket.Emit("autoUpdater-channel-get"); - - return taskCompletionSource.Task; - }); - } + return taskCompletionSource.Task; } @@ -251,23 +228,17 @@ namespace ElectronNET.API /// /// The request headers. /// - public Task> RequestHeadersAsync + public Task> GetRequestHeadersAsync() { - get + var taskCompletionSource = new TaskCompletionSource>(); + BridgeConnector.Socket.On("autoUpdater-requestHeaders-get-reply", (headers) => { - return Task.Run(() => - { - var taskCompletionSource = new TaskCompletionSource>(); - BridgeConnector.Socket.On("autoUpdater-requestHeaders-get-reply", (headers) => - { - BridgeConnector.Socket.Off("autoUpdater-requestHeaders-get-reply"); - Dictionary result = ((JObject)headers).ToObject>(); - taskCompletionSource.SetResult(result); - }); - BridgeConnector.Socket.Emit("autoUpdater-requestHeaders-get"); - return taskCompletionSource.Task; - }); - } + BridgeConnector.Socket.Off("autoUpdater-requestHeaders-get-reply"); + Dictionary result = ((JObject)headers).ToObject>(); + taskCompletionSource.SetResult(result); + }); + BridgeConnector.Socket.Emit("autoUpdater-requestHeaders-get"); + return taskCompletionSource.Task; } /// diff --git a/ElectronNET.API/BrowserView.cs b/ElectronNET.API/BrowserView.cs index 96bddd7..868c09f 100644 --- a/ElectronNET.API/BrowserView.cs +++ b/ElectronNET.API/BrowserView.cs @@ -31,29 +31,24 @@ namespace ElectronNET.API /// /// (experimental) /// - public Rectangle Bounds + public Task GetBoundsAsync() { - get - { - return Task.Run(() => + var taskCompletionSource = new TaskCompletionSource(); + + BridgeConnector.Socket.On("browserView-getBounds-reply", (result) => { - var taskCompletionSource = new TaskCompletionSource(); + BridgeConnector.Socket.Off("browserView-getBounds-reply"); + taskCompletionSource.SetResult((Rectangle)result); + }); - BridgeConnector.Socket.On("browserView-getBounds-reply", (result) => - { - BridgeConnector.Socket.Off("browserView-getBounds-reply"); - taskCompletionSource.SetResult((Rectangle)result); - }); + BridgeConnector.Socket.Emit("browserView-getBounds", Id); - BridgeConnector.Socket.Emit("browserView-getBounds", Id); + return taskCompletionSource.Task; + } - return taskCompletionSource.Task; - }).Result; - } - set - { - BridgeConnector.Socket.Emit("browserView-setBounds", Id, JObject.FromObject(value, _jsonSerializer)); - } + public void SetBounds(Rectangle value) + { + BridgeConnector.Socket.Emit("browserView-setBounds", Id, JObject.FromObject(value, _jsonSerializer)); } /// diff --git a/ElectronNET.CLI/Program.cs b/ElectronNET.CLI/Program.cs index 2030030..b35ef6c 100644 --- a/ElectronNET.CLI/Program.cs +++ b/ElectronNET.CLI/Program.cs @@ -4,12 +4,13 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; +using System.Threading.Tasks; namespace ElectronNET.CLI { class Program { - static void Main(string[] args) + static async Task Main(string[] args) { if (args.Length == 0) { @@ -56,7 +57,7 @@ namespace ElectronNET.CLI if (command != null) { - var success = command.ExecuteAsync().Result; + var success = await command.ExecuteAsync(); if (!success) { Environment.Exit(-1);