From 2c5bdeb3bcd9b15c04edf519d58b80f9610853c2 Mon Sep 17 00:00:00 2001 From: donneypr Date: Mon, 23 Dec 2024 22:14:29 -0500 Subject: [PATCH 1/5] added iphone16 lineup --- desktop-app/src/common/deviceList.ts | 39 ++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/desktop-app/src/common/deviceList.ts b/desktop-app/src/common/deviceList.ts index 3803023d..db379372 100644 --- a/desktop-app/src/common/deviceList.ts +++ b/desktop-app/src/common/deviceList.ts @@ -298,6 +298,45 @@ export const defaultDevices: Device[] = [ isTouchCapable: true, isMobileCapable: true, }, + { + id: '10022', + name: 'iPhone 16', + width: 393, + height: 852, + dpr: 3, + capabilities: ['touch', 'mobile'], + userAgent: + 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1', + type: 'phone', + isTouchCapable: true, + isMobileCapable: true, + }, + { + id: '10023', + name: 'iPhone 16 Plus', + width: 430, + height: 932, + dpr: 3, + capabilities: ['touch', 'mobile'], + userAgent: + 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1', + type: 'phone', + isTouchCapable: true, + isMobileCapable: true, + }, + { + id: '10024', + name: 'iPhone 16 Pro', + width: 393, + height: 852, + dpr: 3, + capabilities: ['touch', 'mobile'], + userAgent: + 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1', + type: 'phone', + isTouchCapable: true, + isMobileCapable: true, + }, { id: '20001', name: 'Nexus 4', From 23fb1b813b203df864dcaea878f32cd2ad775f12 Mon Sep 17 00:00:00 2001 From: donneypr Date: Mon, 23 Dec 2024 22:28:15 -0500 Subject: [PATCH 2/5] removed spaces --- desktop-app/src/common/deviceList.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop-app/src/common/deviceList.ts b/desktop-app/src/common/deviceList.ts index db379372..6b6d5a47 100644 --- a/desktop-app/src/common/deviceList.ts +++ b/desktop-app/src/common/deviceList.ts @@ -336,7 +336,7 @@ export const defaultDevices: Device[] = [ type: 'phone', isTouchCapable: true, isMobileCapable: true, - }, + }, { id: '20001', name: 'Nexus 4', From 032708cf1c0e6de54794b0818ced293f82c6eadb Mon Sep 17 00:00:00 2001 From: donneypr Date: Tue, 24 Dec 2024 18:05:11 -0500 Subject: [PATCH 3/5] Refactor: Simplify and optimize CSP header modification logic --- desktop-app/src/main/main.ts | 51 ++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/desktop-app/src/main/main.ts b/desktop-app/src/main/main.ts index 8408dcbe..fd104540 100644 --- a/desktop-app/src/main/main.ts +++ b/desktop-app/src/main/main.ts @@ -142,36 +142,31 @@ const createWindow = async () => { // Add BROWSER_SYNC_HOST to the allowed Content-Security-Policy origins mainWindow.webContents.session.webRequest.onHeadersReceived( async (details, callback) => { - if (details.responseHeaders?.['content-security-policy']) { - let cspHeader = details.responseHeaders['content-security-policy'][0]; - - cspHeader = cspHeader.replace( - 'default-src', - `default-src ${BROWSER_SYNC_HOST}` - ); - cspHeader = cspHeader.replace( - 'script-src', - `script-src ${BROWSER_SYNC_HOST}` - ); - cspHeader = cspHeader.replace( - 'script-src-elem', - `script-src-elem ${BROWSER_SYNC_HOST}` + const cspKey = 'content-security-policy'; + + if (details.responseHeaders?.[cspKey]) { + const cspHeader = details.responseHeaders[cspKey][0]; + + // Define the rules to replace dynamically + const replacements: Record = { + 'default-src': `default-src ${BROWSER_SYNC_HOST}`, + 'script-src': `script-src ${BROWSER_SYNC_HOST}`, + 'script-src-elem': `script-src-elem ${BROWSER_SYNC_HOST}`, + 'connect-src': `connect-src ${BROWSER_SYNC_HOST} wss://${BROWSER_SYNC_HOST} ws://${BROWSER_SYNC_HOST}`, + 'child-src': `child-src ${BROWSER_SYNC_HOST}`, + 'worker-src': `worker-src ${BROWSER_SYNC_HOST}`, + }; + + // Apply replacements + const updatedCSPHeader = Object.entries(replacements).reduce( + (header, [key, value]) => header.replace(key, value), + cspHeader ); - cspHeader = cspHeader.replace( - 'connect-src', - `connect-src ${BROWSER_SYNC_HOST} wss://${BROWSER_SYNC_HOST} ws://${BROWSER_SYNC_HOST}` - ); - cspHeader = cspHeader.replace( - 'child-src', - `child-src ${BROWSER_SYNC_HOST}` - ); - cspHeader = cspHeader.replace( - 'worker-src', - `worker-src ${BROWSER_SYNC_HOST}` - ); // Required when/if the browser-sync script is eventually relocated to a web worker - - details.responseHeaders['content-security-policy'][0] = cspHeader; + + // Update the response headers + details.responseHeaders[cspKey][0] = updatedCSPHeader; } + callback({ responseHeaders: details.responseHeaders }); } ); From a2c68e1bc2ef9d94e1cc7d87d88bb1544e4a4f25 Mon Sep 17 00:00:00 2001 From: donneypr Date: Tue, 24 Dec 2024 18:54:24 -0500 Subject: [PATCH 4/5] removed whitespace --- desktop-app/src/main/main.ts | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/desktop-app/src/main/main.ts b/desktop-app/src/main/main.ts index fd104540..b7132f0f 100644 --- a/desktop-app/src/main/main.ts +++ b/desktop-app/src/main/main.ts @@ -141,12 +141,11 @@ const createWindow = async () => { // Add BROWSER_SYNC_HOST to the allowed Content-Security-Policy origins mainWindow.webContents.session.webRequest.onHeadersReceived( - async (details, callback) => { + (details, callback) => { const cspKey = 'content-security-policy'; - + // Ensure responseHeaders and cspKey exist if (details.responseHeaders?.[cspKey]) { - const cspHeader = details.responseHeaders[cspKey][0]; - + const cspHeader = details.responseHeaders[cspKey]?.[0] || ''; // Define the rules to replace dynamically const replacements: Record = { 'default-src': `default-src ${BROWSER_SYNC_HOST}`, @@ -156,21 +155,19 @@ const createWindow = async () => { 'child-src': `child-src ${BROWSER_SYNC_HOST}`, 'worker-src': `worker-src ${BROWSER_SYNC_HOST}`, }; - - // Apply replacements + // Apply replacements dynamically const updatedCSPHeader = Object.entries(replacements).reduce( - (header, [key, value]) => header.replace(key, value), + (header, [key, value]) => (header ? header.replace(key, value) : ''), cspHeader ); - // Update the response headers details.responseHeaders[cspKey][0] = updatedCSPHeader; } - + // Callback with updated headers callback({ responseHeaders: details.responseHeaders }); } ); - + mainWindow.loadURL( `${resolveHtmlPath('index.html')}?urlToOpen=${encodeURI( urlToOpen ?? 'undefined' From ecac30ac91fdc2ba63bfa58a2cd4fefd597dd8d1 Mon Sep 17 00:00:00 2001 From: donneypr Date: Tue, 24 Dec 2024 19:00:20 -0500 Subject: [PATCH 5/5] ran prettier --- desktop-app/src/main/main.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop-app/src/main/main.ts b/desktop-app/src/main/main.ts index b7132f0f..32ba9774 100644 --- a/desktop-app/src/main/main.ts +++ b/desktop-app/src/main/main.ts @@ -167,7 +167,7 @@ const createWindow = async () => { callback({ responseHeaders: details.responseHeaders }); } ); - + mainWindow.loadURL( `${resolveHtmlPath('index.html')}?urlToOpen=${encodeURI( urlToOpen ?? 'undefined'