Exemplo n.º 1
0
        /// <summary>
        /// Open the given external protocol URL in the desktop’s default manner.
        /// (For example, mailto: URLs in the user’s default mail agent).
        /// </summary>
        /// <param name="url"></param>
        /// <param name="options">macOS only</param>
        /// <param name="action">macOS only</param>
        /// <returns>Whether an application was available to open the URL.
        /// If callback is specified, always returns true.</returns>
        public Task <bool> OpenExternalAsync(string url, OpenExternalOptions options, Action <Error> action)
        {
            var taskCompletionSource = new TaskCompletionSource <bool>();

            BridgeConnector.Socket.On("shell-openExternalCompleted", (success) =>
            {
                BridgeConnector.Socket.Off("shell-openExternalCompleted");

                taskCompletionSource.SetResult((bool)success);
            });

            BridgeConnector.Socket.Off("shell-openExternalCallback");
            BridgeConnector.Socket.On("shell-openExternalCallback", (args) => {
                var urlKey = ((JArray)args).First.ToString();
                var error  = ((JArray)args).Last.ToObject <Error>();

                if (_openExternalCallbacks.ContainsKey(urlKey))
                {
                    _openExternalCallbacks[urlKey](error);
                }
            });

            _openExternalCallbacks.Add(url, action);

            BridgeConnector.Socket.Emit("shell-openExternal", url, JObject.FromObject(options, _jsonSerializer), true);

            return(taskCompletionSource.Task);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Open the given external protocol URL in the desktop’s default manner.
        /// (For example, mailto: URLs in the user’s default mail agent).
        /// </summary>
        /// <param name="url"></param>
        /// <param name="options">macOS only</param>
        /// <returns>Whether an application was available to open the URL.
        /// If callback is specified, always returns true.</returns>
        public Task <bool> OpenExternalAsync(string url, OpenExternalOptions options)
        {
            var taskCompletionSource = new TaskCompletionSource <bool>();

            BridgeConnector.Socket.On("shell-openExternalCompleted", (success) =>
            {
                BridgeConnector.Socket.Off("shell-openExternalCompleted");

                taskCompletionSource.SetResult((bool)success);
            });

            BridgeConnector.Socket.Emit("shell-openExternal", url, JObject.FromObject(options, _jsonSerializer));

            return(taskCompletionSource.Task);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Open the given external protocol URL in the desktop’s default manner. 
        /// (For example, mailto: URLs in the user’s default mail agent).
        /// </summary>
        /// <param name="url">Max 2081 characters on windows.</param>
        /// <param name="options">Controls the behavior of OpenExternal.</param>
        /// <returns>The error message corresponding to the failure if a failure occurred, otherwise <see cref="string.Empty"/>.</returns>
        public Task<string> OpenExternalAsync(string url, OpenExternalOptions options)
        {
            var taskCompletionSource = new TaskCompletionSource<string>();

            BridgeConnector.Socket.On("shell-openExternalCompleted", (error) =>
            {
                BridgeConnector.Socket.Off("shell-openExternalCompleted");

                taskCompletionSource.SetResult((string) error);
            });

            if (options == null)
            {
                BridgeConnector.Socket.Emit("shell-openExternal", url);
            }
            else
            {
                BridgeConnector.Socket.Emit("shell-openExternal", url, JObject.FromObject(options, _jsonSerializer));
            }

            return taskCompletionSource.Task;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Open the given external protocol URL in the desktop’s default manner.
        /// (For example, mailto: URLs in the user’s default mail agent).
        /// </summary>
        /// <param name="url">Max 2081 characters on windows.</param>
        /// <param name="options">Controls the behavior of OpenExternal.</param>
        /// <returns>The error message corresponding to the failure if a failure occurred, otherwise <see cref="string.Empty"/>.</returns>
        public Task <string> OpenExternalAsync(string url, OpenExternalOptions options)
        {
            var taskCompletionSource = new TaskCompletionSource <string>(TaskCreationOptions.RunContinuationsAsynchronously);

            BridgeConnector.On <string>("shell-openExternalCompleted", (error) =>
            {
                BridgeConnector.Off("shell-openExternalCompleted");

                taskCompletionSource.SetResult(error);
            });

            if (options == null)
            {
                BridgeConnector.Emit("shell-openExternal", url);
            }
            else
            {
                BridgeConnector.Emit("shell-openExternal", url, options);
            }

            return(taskCompletionSource.Task);
        }