Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 20 additions & 6 deletions ElectronNET.API/WindowManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ElectronNET.API
Expand Down Expand Up @@ -79,7 +80,7 @@ public bool IsQuitOnWindowAllClosed
/// </summary>
/// <param name="loadUrl">The load URL.</param>
/// <returns></returns>
public async Task<BrowserWindow> CreateWindowAsync(string loadUrl = "http://localhost")
public async Task<BrowserWindow> CreateWindowAsync(string loadUrl = "/")
{
return await CreateWindowAsync(new BrowserWindowOptions(), loadUrl);
}
Expand All @@ -90,10 +91,9 @@ public async Task<BrowserWindow> CreateWindowAsync(string loadUrl = "http://loca
/// <param name="options">The options.</param>
/// <param name="loadUrl">The load URL.</param>
/// <returns></returns>
public Task<BrowserWindow> CreateWindowAsync(BrowserWindowOptions options, string loadUrl = "http://localhost")
public Task<BrowserWindow> CreateWindowAsync(BrowserWindowOptions options, string loadUrl = "/")
{
var taskCompletionSource = new TaskCompletionSource<BrowserWindow>();

BridgeConnector.Socket.On("BrowserWindowCreated", (id) =>
{
BridgeConnector.Socket.Off("BrowserWindowCreated");
Expand All @@ -119,9 +119,9 @@ public Task<BrowserWindow> CreateWindowAsync(BrowserWindowOptions options, strin
}
});

if (loadUrl.ToUpper() == "HTTP://LOCALHOST")
{
loadUrl = $"{loadUrl}:{BridgeSettings.WebPort}";
if(!TryParseLoadUrl(loadUrl, out loadUrl))
{
throw new ArgumentException($"Unable to parse {loadUrl}", nameof(loadUrl));
}

// Workaround Windows 10 / Electron Bug
Expand Down Expand Up @@ -159,6 +159,20 @@ public Task<BrowserWindow> CreateWindowAsync(BrowserWindowOptions options, strin
return taskCompletionSource.Task;
}


private bool TryParseLoadUrl(string loadUrl, out string parsedUrl)
{
Uri BaseUri = new Uri($"http://localhost:{BridgeSettings.WebPort}");
if (Uri.TryCreate(loadUrl, UriKind.Absolute, out var url) ||
Uri.TryCreate(BaseUri, loadUrl, out url)) {
var uri = new UriBuilder(url.ToString());
parsedUrl = uri.ToString();
return true;
}
parsedUrl = loadUrl;
return false;
}

private bool isWindows10()
{
return RuntimeInformation.OSDescription.Contains("Windows 10");
Expand Down