From 378b87459a2a1f7e99ba4de347009392f802a52d Mon Sep 17 00:00:00 2001 From: Nariman Jelveh Date: Thu, 25 Apr 2024 17:51:20 -0700 Subject: [PATCH] Add robust hostname comparison for when declaring an environment as GUI --- packages/puter-js/src/index.js | 19 ++++++++++++++++--- src/initgui.js | 1 - 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/puter-js/src/index.js b/packages/puter-js/src/index.js index 6c2282ebe..ac2710867 100644 --- a/packages/puter-js/src/index.js +++ b/packages/puter-js/src/index.js @@ -69,11 +69,24 @@ window.puter = (function() { else this.env = 'web'; - // there are some specific situations where puter is definitely loaded in GUI mode + // There are some specific situations where puter is definitely loaded in GUI mode // we're going to check for those situations here so that we don't break anything unintentionally // if navigator URL's hostname is 'puter.com' - if(window.location.hostname === 'puter.com'){ - this.env = 'gui'; + if(this.env !== 'gui'){ + // Retrieve the hostname from the URL: Remove the trailing dot if it exists. This is to handle the case where the URL is, for example, `https://puter.com.` (note the trailing dot). + // This is necessary because the trailing dot can cause the hostname to not match the expected value. + let hostname = location.hostname.replace(/\.$/, ''); + + // Create a new URL object with the URL string + const url = new URL(this.defaultGUIOrigin); + + // Extract hostname from the URL object + const gui_hostname = url.hostname; + + // If the hostname matches the GUI hostname, then the SDK is running in the GUI environment + if(hostname === gui_hostname){ + this.env = 'gui'; + } } // Get the 'args' from the URL. This is used to pass arguments to the app. diff --git a/src/initgui.js b/src/initgui.js index 05987c69f..165135e87 100644 --- a/src/initgui.js +++ b/src/initgui.js @@ -36,7 +36,6 @@ import PuterDialog from './UI/PuterDialog.js'; import determine_active_container_parent from './helpers/determine_active_container_parent.js'; import { ThemeService } from './services/ThemeService.js'; import { BroadcastService } from './services/BroadcastService.js'; -import UIWindowTaskManager from './UI/UIWindowTaskManager.js'; import { ProcessService } from './services/ProcessService.js'; import { PROCESS_RUNNING } from './definitions.js';