From e207af43c692ee970dffd49e5f4397c7b322fd9f Mon Sep 17 00:00:00 2001 From: vipulg Date: Fri, 19 Sep 2025 23:10:17 +0530 Subject: [PATCH 01/12] initial pageConfig changes --- .../workflow-acrobat/action-binder.js | 59 ++++++++++++++++--- unitylibs/scripts/utils.js | 4 +- 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/unitylibs/core/workflow/workflow-acrobat/action-binder.js b/unitylibs/core/workflow/workflow-acrobat/action-binder.js index f2f119302..9b5a1d37c 100644 --- a/unitylibs/core/workflow/workflow-acrobat/action-binder.js +++ b/unitylibs/core/workflow/workflow-acrobat/action-binder.js @@ -215,13 +215,18 @@ export default class ActionBinder { }); } - getAcrobatApiConfig() { - unityConfig.acrobatEndpoint = { - createAsset: `${unityConfig.apiEndPoint}/asset`, - finalizeAsset: `${unityConfig.apiEndPoint}/asset/finalize`, - getMetadata: `${unityConfig.apiEndPoint}/asset/metadata`, + getAcrobatApiConfig(newAPIEndpoint) { + console.log('getAcrobatApiConfig called'); + const apiEndPoint = newAPIEndpoint || unityConfig.apiEndPoint; + return { + acrobatEndpoint: { + createAsset: `${apiEndPoint}/asset`, + finalizeAsset: `${apiEndPoint}/asset/finalize`, + getMetadata: `${apiEndPoint}/asset/metadata`, + connector: `${apiEndPoint}/asset/connector`, + pageConfig: `${apiEndPoint}/pageConfig`, + }, }; - return unityConfig; } getAdditionalHeaders() { @@ -426,7 +431,7 @@ export default class ActionBinder { const postOpts = await getApiCallOptions('POST', unityConfig.apiKey, this.getAdditionalHeaders() || {}, { body: JSON.stringify(cOpts) }); this.promiseStack.push( this.networkUtils.fetchFromServiceWithRetry( - this.acrobatApiConfig.connectorApiEndPoint, + this.acrobatApiConfig.acrobatEndpoint.connector, postOpts, ), ); @@ -511,6 +516,7 @@ export default class ActionBinder { const { isValid, validFiles } = await this.validateFiles(sanitizedFiles); if (!isValid) return; await this.initUploadHandler(); + await this.ensureOptimalEndpoint(); if (files.length === 1 || (validFiles.length === 1 && !verbsWithoutFallback.includes(this.workflowCfg.enabledFeatures[0]))) { await this.handleSingleFileUpload(validFiles); } else { @@ -682,7 +688,43 @@ export default class ActionBinder { this.filesData.assetId = assetId; } + async ensureOptimalEndpoint() { + // Ensure pageConfig has resolved before making API calls + if (this.pageConfigPromise) { + console.log('Waiting for pageConfig to complete before making any API calls'); + const startTime = performance.now(); + await this.pageConfigPromise; + const endTime = performance.now(); + const duration = endTime - startTime; + console.log(`PageConfig wait took ${duration.toFixed(2)}ms - API endpoints ready`); + } + } + + async checkandUpdatePageConfigEndpoint() { + console.log('Starting pageConfig fetch during upload initiation...'); + try { + const TIMEOUT_MS = 5000; // 5000ms timeout + const getOpts = await getApiCallOptions('GET', unityConfig.apiKey, {}, {}); + const pageConfigResponse = await this.networkUtils.fetchWithTimeout(this.acrobatApiConfig.acrobatEndpoint.pageConfig, getOpts, TIMEOUT_MS); + if (pageConfigResponse.ok) { + const locationHeader = pageConfigResponse.headers.get('location'); + if (locationHeader) { + const newEndpoint = `${locationHeader}/api/v1`; + this.acrobatApiConfig = this.getAcrobatApiConfig(newEndpoint); + console.log('PageConfig endpoint updated:', newEndpoint); + } else { + console.log('No location header found, keeping existing API endpoint'); + } + } else { + console.warn(`PageConfig GET request returned status: ${pageConfigResponse.status}`); + } + } catch (error) { + console.error('PageConfig GET request failed:', error); + } + } + async initActionListeners(b = this.block, actMap = this.actionMap) { + console.log('initActionListeners called'); for (const [key, value] of Object.entries(actMap)) { const el = b.querySelector(key); if (!el) return; @@ -714,5 +756,8 @@ export default class ActionBinder { if (b === this.block) { this.loadTransitionScreen(); } + if (!this.pageConfigPromise) { + this.pageConfigPromise = this.checkandUpdatePageConfigEndpoint(); + } } } diff --git a/unitylibs/scripts/utils.js b/unitylibs/scripts/utils.js index 2b687ff7f..e1abe9465 100644 --- a/unitylibs/scripts/utils.js +++ b/unitylibs/scripts/utils.js @@ -293,8 +293,8 @@ export const unityConfig = (() => { ...commoncfg, }, stage: { - apiEndPoint: 'https://unity-stage.adobe.io/api/v1', - connectorApiEndPoint: 'https://unity-stage.adobe.io/api/v1/asset/connector', + apiEndPoint: 'https://unity-dev.adobe.io/api/v1', + connectorApiEndPoint: 'https://unity-stage.dev.io/api/v1/asset/connector', env: 'stage', ...commoncfg, }, From eda0c0fa5bed62a5ea1f882fde74daf916fa5410 Mon Sep 17 00:00:00 2001 From: vipulg Date: Sat, 20 Sep 2025 00:03:48 +0530 Subject: [PATCH 02/12] moving pageConfig call to NetworkUtils --- .../workflow-acrobat/action-binder.js | 23 +++--------------- unitylibs/scripts/utils.js | 2 ++ unitylibs/utils/NetworkUtils.js | 24 +++++++++++++++++++ 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/unitylibs/core/workflow/workflow-acrobat/action-binder.js b/unitylibs/core/workflow/workflow-acrobat/action-binder.js index 9b5a1d37c..2f613d893 100644 --- a/unitylibs/core/workflow/workflow-acrobat/action-binder.js +++ b/unitylibs/core/workflow/workflow-acrobat/action-binder.js @@ -224,7 +224,6 @@ export default class ActionBinder { finalizeAsset: `${apiEndPoint}/asset/finalize`, getMetadata: `${apiEndPoint}/asset/metadata`, connector: `${apiEndPoint}/asset/connector`, - pageConfig: `${apiEndPoint}/pageConfig`, }, }; } @@ -702,25 +701,9 @@ export default class ActionBinder { async checkandUpdatePageConfigEndpoint() { console.log('Starting pageConfig fetch during upload initiation...'); - try { - const TIMEOUT_MS = 5000; // 5000ms timeout - const getOpts = await getApiCallOptions('GET', unityConfig.apiKey, {}, {}); - const pageConfigResponse = await this.networkUtils.fetchWithTimeout(this.acrobatApiConfig.acrobatEndpoint.pageConfig, getOpts, TIMEOUT_MS); - if (pageConfigResponse.ok) { - const locationHeader = pageConfigResponse.headers.get('location'); - if (locationHeader) { - const newEndpoint = `${locationHeader}/api/v1`; - this.acrobatApiConfig = this.getAcrobatApiConfig(newEndpoint); - console.log('PageConfig endpoint updated:', newEndpoint); - } else { - console.log('No location header found, keeping existing API endpoint'); - } - } else { - console.warn(`PageConfig GET request returned status: ${pageConfigResponse.status}`); - } - } catch (error) { - console.error('PageConfig GET request failed:', error); - } + await this.networkUtils.checkandUpdatePageConfigEndpoint( + (newEndpoint) => { this.acrobatApiConfig = this.getAcrobatApiConfig(newEndpoint); }, + ); } async initActionListeners(b = this.block, actMap = this.actionMap) { diff --git a/unitylibs/scripts/utils.js b/unitylibs/scripts/utils.js index e1abe9465..2d79ea561 100644 --- a/unitylibs/scripts/utils.js +++ b/unitylibs/scripts/utils.js @@ -289,12 +289,14 @@ export const unityConfig = (() => { prod: { apiEndPoint: 'https://unity.adobe.io/api/v1', connectorApiEndPoint: 'https://unity.adobe.io/api/v1/asset/connector', + pageConfig: 'https://unity.adobe.io/api/v1/pageConfig', env: 'prod', ...commoncfg, }, stage: { apiEndPoint: 'https://unity-dev.adobe.io/api/v1', connectorApiEndPoint: 'https://unity-stage.dev.io/api/v1/asset/connector', + pageConfig: 'https://unity-stage.dev.io/api/v1/pageConfig', env: 'stage', ...commoncfg, }, diff --git a/unitylibs/utils/NetworkUtils.js b/unitylibs/utils/NetworkUtils.js index 8cdea1db3..225c595eb 100644 --- a/unitylibs/utils/NetworkUtils.js +++ b/unitylibs/utils/NetworkUtils.js @@ -1,4 +1,28 @@ +import { unityConfig, getApiCallOptions } from '../scripts/utils.js'; + export default class NetworkUtils { + async checkandUpdatePageConfigEndpoint(callback) { + try { + const TIMEOUT_MS = 5000; + const getOpts = await getApiCallOptions('GET', unityConfig.apiKey, {}, {}); + const pageConfigResponse = await this.fetchWithTimeout(unityConfig.pageConfig, getOpts, TIMEOUT_MS); + if (pageConfigResponse.ok) { + const locationHeader = pageConfigResponse.headers.get('location'); + if (locationHeader) { + const newEndpoint = `${locationHeader}/api/v1`; + if (typeof callback === 'function') callback(newEndpoint); + return; + } + console.log('No location header found, keeping existing API endpoint'); + } + console.log('pageConfig call failed with status:', pageConfigResponse.status); + return; + } catch (error) { + console.log('pageConfig call failed with error:', error); + return; + } + } + handleAbortedRequest(url, options) { if (!(options?.signal?.aborted)) return; const error = new Error(`Request to ${url} aborted by user.`); From d06c44d03fffa92aac364cf10577085833a1d62a Mon Sep 17 00:00:00 2001 From: vipulg Date: Sat, 20 Sep 2025 00:40:45 +0530 Subject: [PATCH 03/12] updates --- unitylibs/core/workflow/workflow-acrobat/action-binder.js | 8 -------- unitylibs/scripts/utils.js | 6 ++---- unitylibs/utils/NetworkUtils.js | 5 +++-- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/unitylibs/core/workflow/workflow-acrobat/action-binder.js b/unitylibs/core/workflow/workflow-acrobat/action-binder.js index 2f613d893..980327995 100644 --- a/unitylibs/core/workflow/workflow-acrobat/action-binder.js +++ b/unitylibs/core/workflow/workflow-acrobat/action-binder.js @@ -688,26 +688,18 @@ export default class ActionBinder { } async ensureOptimalEndpoint() { - // Ensure pageConfig has resolved before making API calls if (this.pageConfigPromise) { - console.log('Waiting for pageConfig to complete before making any API calls'); - const startTime = performance.now(); await this.pageConfigPromise; - const endTime = performance.now(); - const duration = endTime - startTime; - console.log(`PageConfig wait took ${duration.toFixed(2)}ms - API endpoints ready`); } } async checkandUpdatePageConfigEndpoint() { - console.log('Starting pageConfig fetch during upload initiation...'); await this.networkUtils.checkandUpdatePageConfigEndpoint( (newEndpoint) => { this.acrobatApiConfig = this.getAcrobatApiConfig(newEndpoint); }, ); } async initActionListeners(b = this.block, actMap = this.actionMap) { - console.log('initActionListeners called'); for (const [key, value] of Object.entries(actMap)) { const el = b.querySelector(key); if (!el) return; diff --git a/unitylibs/scripts/utils.js b/unitylibs/scripts/utils.js index 2d79ea561..75936c655 100644 --- a/unitylibs/scripts/utils.js +++ b/unitylibs/scripts/utils.js @@ -289,14 +289,12 @@ export const unityConfig = (() => { prod: { apiEndPoint: 'https://unity.adobe.io/api/v1', connectorApiEndPoint: 'https://unity.adobe.io/api/v1/asset/connector', - pageConfig: 'https://unity.adobe.io/api/v1/pageConfig', env: 'prod', ...commoncfg, }, stage: { - apiEndPoint: 'https://unity-dev.adobe.io/api/v1', - connectorApiEndPoint: 'https://unity-stage.dev.io/api/v1/asset/connector', - pageConfig: 'https://unity-stage.dev.io/api/v1/pageConfig', + apiEndPoint: 'https://unity-stage.adobe.io/api/v1', + connectorApiEndPoint: 'https://unity-stage.stage.io/api/v1/asset/connector', env: 'stage', ...commoncfg, }, diff --git a/unitylibs/utils/NetworkUtils.js b/unitylibs/utils/NetworkUtils.js index 225c595eb..0440de331 100644 --- a/unitylibs/utils/NetworkUtils.js +++ b/unitylibs/utils/NetworkUtils.js @@ -5,7 +5,8 @@ export default class NetworkUtils { try { const TIMEOUT_MS = 5000; const getOpts = await getApiCallOptions('GET', unityConfig.apiKey, {}, {}); - const pageConfigResponse = await this.fetchWithTimeout(unityConfig.pageConfig, getOpts, TIMEOUT_MS); + const pageConfigUrl = `${unityConfig.apiEndPoint}/pageConfig`; + const pageConfigResponse = await this.fetchWithTimeout(pageConfigUrl, getOpts, TIMEOUT_MS); if (pageConfigResponse.ok) { const locationHeader = pageConfigResponse.headers.get('location'); if (locationHeader) { @@ -14,12 +15,12 @@ export default class NetworkUtils { return; } console.log('No location header found, keeping existing API endpoint'); + return; } console.log('pageConfig call failed with status:', pageConfigResponse.status); return; } catch (error) { console.log('pageConfig call failed with error:', error); - return; } } From 5c4620b9c1c5ac280a30ae8502fcc0e704713d4b Mon Sep 17 00:00:00 2001 From: vipulg Date: Sat, 20 Sep 2025 00:45:07 +0530 Subject: [PATCH 04/12] minor update --- unitylibs/scripts/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unitylibs/scripts/utils.js b/unitylibs/scripts/utils.js index 75936c655..b402a1632 100644 --- a/unitylibs/scripts/utils.js +++ b/unitylibs/scripts/utils.js @@ -294,7 +294,7 @@ export const unityConfig = (() => { }, stage: { apiEndPoint: 'https://unity-stage.adobe.io/api/v1', - connectorApiEndPoint: 'https://unity-stage.stage.io/api/v1/asset/connector', + connectorApiEndPoint: 'https://unity-stage.io/api/v1/asset/connector', env: 'stage', ...commoncfg, }, From dc8853cfd8d1c9dd9e5ea83d6d081830d113a202 Mon Sep 17 00:00:00 2001 From: vipulg Date: Sat, 20 Sep 2025 01:56:06 +0530 Subject: [PATCH 05/12] passing logEndPoint in analytics event to slytherin --- unitylibs/core/workflow/workflow-acrobat/action-binder.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/unitylibs/core/workflow/workflow-acrobat/action-binder.js b/unitylibs/core/workflow/workflow-acrobat/action-binder.js index 980327995..9b6156a33 100644 --- a/unitylibs/core/workflow/workflow-acrobat/action-binder.js +++ b/unitylibs/core/workflow/workflow-acrobat/action-binder.js @@ -224,6 +224,7 @@ export default class ActionBinder { finalizeAsset: `${apiEndPoint}/asset/finalize`, getMetadata: `${apiEndPoint}/asset/metadata`, connector: `${apiEndPoint}/asset/connector`, + log: `${apiEndPoint}/log`, }, }; } @@ -285,6 +286,7 @@ export default class ActionBinder { subCode: ActionBinder.ERROR_MAP[errorMetaData.subCode] || errorMetaData.subCode || status, desc: errorMetaData.desc || message || info || undefined, }, + logEndPoint: this.acrobatApiConfig?.acrobatEndpoint?.log, sendToSplunk, }, }, @@ -293,7 +295,7 @@ export default class ActionBinder { async dispatchAnalyticsEvent(eventName, data = null) { const sendToSplunk = this.workflowCfg.targetCfg.sendSplunkAnalytics; - const detail = { event: eventName, ...(data && { data }), sendToSplunk }; + const detail = { event: eventName, ...(data && { data }), logEndPoint: this.acrobatApiConfig?.acrobatEndpoint?.log, sendToSplunk }; this.block.dispatchEvent(new CustomEvent(unityConfig.trackAnalyticsEvent, { detail })); } From 2b8696c97820535905c765a8e4dc6df8f753b4a5 Mon Sep 17 00:00:00 2001 From: vipulg Date: Sat, 20 Sep 2025 15:35:00 +0530 Subject: [PATCH 06/12] minor updates --- .../workflow-acrobat/action-binder.js | 1 - unitylibs/scripts/utils.js | 2 +- unitylibs/utils/NetworkUtils.js | 46 +++++++++---------- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/unitylibs/core/workflow/workflow-acrobat/action-binder.js b/unitylibs/core/workflow/workflow-acrobat/action-binder.js index 9b6156a33..73ccd8baf 100644 --- a/unitylibs/core/workflow/workflow-acrobat/action-binder.js +++ b/unitylibs/core/workflow/workflow-acrobat/action-binder.js @@ -216,7 +216,6 @@ export default class ActionBinder { } getAcrobatApiConfig(newAPIEndpoint) { - console.log('getAcrobatApiConfig called'); const apiEndPoint = newAPIEndpoint || unityConfig.apiEndPoint; return { acrobatEndpoint: { diff --git a/unitylibs/scripts/utils.js b/unitylibs/scripts/utils.js index b402a1632..2b687ff7f 100644 --- a/unitylibs/scripts/utils.js +++ b/unitylibs/scripts/utils.js @@ -294,7 +294,7 @@ export const unityConfig = (() => { }, stage: { apiEndPoint: 'https://unity-stage.adobe.io/api/v1', - connectorApiEndPoint: 'https://unity-stage.io/api/v1/asset/connector', + connectorApiEndPoint: 'https://unity-stage.adobe.io/api/v1/asset/connector', env: 'stage', ...commoncfg, }, diff --git a/unitylibs/utils/NetworkUtils.js b/unitylibs/utils/NetworkUtils.js index 0440de331..d30080586 100644 --- a/unitylibs/utils/NetworkUtils.js +++ b/unitylibs/utils/NetworkUtils.js @@ -1,29 +1,6 @@ import { unityConfig, getApiCallOptions } from '../scripts/utils.js'; export default class NetworkUtils { - async checkandUpdatePageConfigEndpoint(callback) { - try { - const TIMEOUT_MS = 5000; - const getOpts = await getApiCallOptions('GET', unityConfig.apiKey, {}, {}); - const pageConfigUrl = `${unityConfig.apiEndPoint}/pageConfig`; - const pageConfigResponse = await this.fetchWithTimeout(pageConfigUrl, getOpts, TIMEOUT_MS); - if (pageConfigResponse.ok) { - const locationHeader = pageConfigResponse.headers.get('location'); - if (locationHeader) { - const newEndpoint = `${locationHeader}/api/v1`; - if (typeof callback === 'function') callback(newEndpoint); - return; - } - console.log('No location header found, keeping existing API endpoint'); - return; - } - console.log('pageConfig call failed with status:', pageConfigResponse.status); - return; - } catch (error) { - console.log('pageConfig call failed with error:', error); - } - } - handleAbortedRequest(url, options) { if (!(options?.signal?.aborted)) return; const error = new Error(`Request to ${url} aborted by user.`); @@ -176,4 +153,27 @@ export default class NetworkUtils { throw error; } } + + async checkandUpdatePageConfigEndpoint(updateConfigCallback) { + try { + const TIMEOUT_MS = 5000; + const getOpts = await getApiCallOptions('GET', unityConfig.apiKey, {}, {}); + const pageConfigUrl = `${unityConfig.apiEndPoint}/pageConfig`; + const pageConfigResponse = await this.fetchWithTimeout(pageConfigUrl, getOpts, TIMEOUT_MS); + if (pageConfigResponse.ok) { + const locationHeader = pageConfigResponse.headers.get('location'); + if (locationHeader) { + const newEndpoint = `${locationHeader}/api/v1`; + if (typeof updateConfigCallback === 'function') updateConfigCallback(newEndpoint); + return; + } + console.log('No location header found, keeping existing API endpoint'); + return; + } + console.log('pageConfig call failed with status:', pageConfigResponse.status); + return; + } catch (error) { + console.log('pageConfig call failed with error:', error); + } + } } From a83defa650b6e274337ec58acd8172e3597ad35e Mon Sep 17 00:00:00 2001 From: vipulg Date: Sat, 20 Sep 2025 15:46:08 +0530 Subject: [PATCH 07/12] updating error/warn log --- unitylibs/utils/NetworkUtils.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/unitylibs/utils/NetworkUtils.js b/unitylibs/utils/NetworkUtils.js index d30080586..e1daba51b 100644 --- a/unitylibs/utils/NetworkUtils.js +++ b/unitylibs/utils/NetworkUtils.js @@ -167,13 +167,13 @@ export default class NetworkUtils { if (typeof updateConfigCallback === 'function') updateConfigCallback(newEndpoint); return; } - console.log('No location header found, keeping existing API endpoint'); + console.warn('No location header found, keeping existing API endpoint'); return; } - console.log('pageConfig call failed with status:', pageConfigResponse.status); + console.error('pageConfig call failed with status:', pageConfigResponse.status); return; } catch (error) { - console.log('pageConfig call failed with error:', error); + console.error('pageConfig call failed with error:', error); } } } From 20b28483ecf4f103a1b4cea1008381c8153ae7db Mon Sep 17 00:00:00 2001 From: vipulg Date: Sat, 20 Sep 2025 16:19:01 +0530 Subject: [PATCH 08/12] implement analytics --- unitylibs/core/workflow/workflow-acrobat/action-binder.js | 8 ++++++++ unitylibs/utils/NetworkUtils.js | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/unitylibs/core/workflow/workflow-acrobat/action-binder.js b/unitylibs/core/workflow/workflow-acrobat/action-binder.js index 73ccd8baf..85a0053dd 100644 --- a/unitylibs/core/workflow/workflow-acrobat/action-binder.js +++ b/unitylibs/core/workflow/workflow-acrobat/action-binder.js @@ -697,6 +697,14 @@ export default class ActionBinder { async checkandUpdatePageConfigEndpoint() { await this.networkUtils.checkandUpdatePageConfigEndpoint( (newEndpoint) => { this.acrobatApiConfig = this.getAcrobatApiConfig(newEndpoint); }, + (failure) => { + const data = { + failureType: failure?.type, + status: failure?.status, + message: failure?.error?.message, + }; + this.dispatchAnalyticsEvent('pageConfigCallFailed', data); + }, ); } diff --git a/unitylibs/utils/NetworkUtils.js b/unitylibs/utils/NetworkUtils.js index e1daba51b..37da77ad7 100644 --- a/unitylibs/utils/NetworkUtils.js +++ b/unitylibs/utils/NetworkUtils.js @@ -154,7 +154,7 @@ export default class NetworkUtils { } } - async checkandUpdatePageConfigEndpoint(updateConfigCallback) { + async checkandUpdatePageConfigEndpoint(updateConfigCallback, onFailure) { try { const TIMEOUT_MS = 5000; const getOpts = await getApiCallOptions('GET', unityConfig.apiKey, {}, {}); @@ -168,12 +168,15 @@ export default class NetworkUtils { return; } console.warn('No location header found, keeping existing API endpoint'); + if (typeof onFailure === 'function') onFailure({ type: 'no-location-header', status: pageConfigResponse.status }); return; } console.error('pageConfig call failed with status:', pageConfigResponse.status); + if (typeof onFailure === 'function') onFailure({ type: 'non-ok-status', status: pageConfigResponse.status }); return; } catch (error) { console.error('pageConfig call failed with error:', error); + if (typeof onFailure === 'function') onFailure({ type: 'network-error', error }); } } } From 0066bc6883e49e94ab499df31002a5b5b366c48a Mon Sep 17 00:00:00 2001 From: vipulg Date: Sun, 28 Sep 2025 14:21:08 +0530 Subject: [PATCH 09/12] updating analytics --- unitylibs/core/workflow/workflow-acrobat/action-binder.js | 8 ++------ unitylibs/utils/NetworkUtils.js | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/unitylibs/core/workflow/workflow-acrobat/action-binder.js b/unitylibs/core/workflow/workflow-acrobat/action-binder.js index 85a0053dd..c681f7a70 100644 --- a/unitylibs/core/workflow/workflow-acrobat/action-binder.js +++ b/unitylibs/core/workflow/workflow-acrobat/action-binder.js @@ -109,6 +109,7 @@ export default class ActionBinder { upload_warn_delete_asset: -603, validation_warn_validate_files: -604, warn_fetch_experiment: -605, + warn_page_config_call_failed: -606, }; static NEW_TO_OLD_ERROR_KEY_MAP = { @@ -698,12 +699,7 @@ export default class ActionBinder { await this.networkUtils.checkandUpdatePageConfigEndpoint( (newEndpoint) => { this.acrobatApiConfig = this.getAcrobatApiConfig(newEndpoint); }, (failure) => { - const data = { - failureType: failure?.type, - status: failure?.status, - message: failure?.error?.message, - }; - this.dispatchAnalyticsEvent('pageConfigCallFailed', data); + this.dispatchErrorToast('warn_page_config_call_failed', null, null, true, true, { code: 'warn_page_config_call_failed', subCode: failure?.status, desc: failure?.type }); }, ); } diff --git a/unitylibs/utils/NetworkUtils.js b/unitylibs/utils/NetworkUtils.js index 37da77ad7..082c386b2 100644 --- a/unitylibs/utils/NetworkUtils.js +++ b/unitylibs/utils/NetworkUtils.js @@ -176,7 +176,7 @@ export default class NetworkUtils { return; } catch (error) { console.error('pageConfig call failed with error:', error); - if (typeof onFailure === 'function') onFailure({ type: 'network-error', error }); + if (typeof onFailure === 'function') onFailure({ type: `Network-error - ${error.message}` }); } } } From 90aac4c63602ca00aaf4fee0f258165fdef4221f Mon Sep 17 00:00:00 2001 From: vipulg Date: Sun, 28 Sep 2025 15:56:16 +0530 Subject: [PATCH 10/12] sending pageConfig success analytics event --- unitylibs/core/workflow/workflow-acrobat/action-binder.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/unitylibs/core/workflow/workflow-acrobat/action-binder.js b/unitylibs/core/workflow/workflow-acrobat/action-binder.js index c681f7a70..55efd0242 100644 --- a/unitylibs/core/workflow/workflow-acrobat/action-binder.js +++ b/unitylibs/core/workflow/workflow-acrobat/action-binder.js @@ -697,7 +697,11 @@ export default class ActionBinder { async checkandUpdatePageConfigEndpoint() { await this.networkUtils.checkandUpdatePageConfigEndpoint( - (newEndpoint) => { this.acrobatApiConfig = this.getAcrobatApiConfig(newEndpoint); }, + (newEndpoint) => { + // send analytics event before updating the endpoint, where the pageConfig call is made. + this.dispatchAnalyticsEvent('pageConfigUpdated', { newEndpoint }); + this.acrobatApiConfig = this.getAcrobatApiConfig(newEndpoint); + }, (failure) => { this.dispatchErrorToast('warn_page_config_call_failed', null, null, true, true, { code: 'warn_page_config_call_failed', subCode: failure?.status, desc: failure?.type }); }, From 397fce22d0f05971a2ae7b71dfec65626c10b24d Mon Sep 17 00:00:00 2001 From: vipulg Date: Mon, 29 Sep 2025 16:56:10 +0530 Subject: [PATCH 11/12] review comments --- .../workflow-acrobat/action-binder.js | 7 +++---- unitylibs/utils/NetworkUtils.js | 21 +++++++++---------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/unitylibs/core/workflow/workflow-acrobat/action-binder.js b/unitylibs/core/workflow/workflow-acrobat/action-binder.js index 55efd0242..4f56c1380 100644 --- a/unitylibs/core/workflow/workflow-acrobat/action-binder.js +++ b/unitylibs/core/workflow/workflow-acrobat/action-binder.js @@ -695,10 +695,9 @@ export default class ActionBinder { } } - async checkandUpdatePageConfigEndpoint() { - await this.networkUtils.checkandUpdatePageConfigEndpoint( + async fetchPageConfig() { + await this.networkUtils.fetchPageConfig( (newEndpoint) => { - // send analytics event before updating the endpoint, where the pageConfig call is made. this.dispatchAnalyticsEvent('pageConfigUpdated', { newEndpoint }); this.acrobatApiConfig = this.getAcrobatApiConfig(newEndpoint); }, @@ -741,7 +740,7 @@ export default class ActionBinder { this.loadTransitionScreen(); } if (!this.pageConfigPromise) { - this.pageConfigPromise = this.checkandUpdatePageConfigEndpoint(); + this.pageConfigPromise = this.fetchPageConfig(); } } } diff --git a/unitylibs/utils/NetworkUtils.js b/unitylibs/utils/NetworkUtils.js index 082c386b2..6f3b16f46 100644 --- a/unitylibs/utils/NetworkUtils.js +++ b/unitylibs/utils/NetworkUtils.js @@ -154,29 +154,28 @@ export default class NetworkUtils { } } - async checkandUpdatePageConfigEndpoint(updateConfigCallback, onFailure) { + async fetchPageConfig(unityEndpointSuccessCb, unityEndpointFailureCb) { try { const TIMEOUT_MS = 5000; const getOpts = await getApiCallOptions('GET', unityConfig.apiKey, {}, {}); const pageConfigUrl = `${unityConfig.apiEndPoint}/pageConfig`; const pageConfigResponse = await this.fetchWithTimeout(pageConfigUrl, getOpts, TIMEOUT_MS); if (pageConfigResponse.ok) { + const responseJson = await this.getResponseJson(pageConfigResponse, {}); const locationHeader = pageConfigResponse.headers.get('location'); if (locationHeader) { const newEndpoint = `${locationHeader}/api/v1`; - if (typeof updateConfigCallback === 'function') updateConfigCallback(newEndpoint); - return; + if (typeof updateConfigCallback === 'function') unityEndpointSuccessCb(newEndpoint); + return responseJson; } - console.warn('No location header found, keeping existing API endpoint'); - if (typeof onFailure === 'function') onFailure({ type: 'no-location-header', status: pageConfigResponse.status }); - return; + if (typeof unityEndpointFailureCb === 'function') unityEndpointFailureCb({ type: 'no-location-header', status: pageConfigResponse.status }); + return responseJson; } - console.error('pageConfig call failed with status:', pageConfigResponse.status); - if (typeof onFailure === 'function') onFailure({ type: 'non-ok-status', status: pageConfigResponse.status }); - return; + if (typeof unityEndpointFailureCb === 'function') unityEndpointFailureCb({ type: 'non-ok-status', status: pageConfigResponse.status }); + return await this.getResponseJson(pageConfigResponse, {}); } catch (error) { - console.error('pageConfig call failed with error:', error); - if (typeof onFailure === 'function') onFailure({ type: `Network-error - ${error.message}` }); + if (typeof unityEndpointFailureCb === 'function') unityEndpointFailureCb({ type: `Network-error - ${error.message}` }); + return null; } } } From e1e7082388861e4f5859739a190634a78960febb Mon Sep 17 00:00:00 2001 From: vipulg Date: Mon, 29 Sep 2025 17:59:25 +0530 Subject: [PATCH 12/12] review comments --- .../workflow/workflow-acrobat/action-binder.js | 4 ++++ unitylibs/utils/NetworkUtils.js | 16 ++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/unitylibs/core/workflow/workflow-acrobat/action-binder.js b/unitylibs/core/workflow/workflow-acrobat/action-binder.js index 4f56c1380..91167b389 100644 --- a/unitylibs/core/workflow/workflow-acrobat/action-binder.js +++ b/unitylibs/core/workflow/workflow-acrobat/action-binder.js @@ -696,7 +696,11 @@ export default class ActionBinder { } async fetchPageConfig() { + const getOpts = await getApiCallOptions('GET', unityConfig.apiKey, {}, {}); + const pageConfigUrl = `${unityConfig.apiEndPoint}/pageConfig`; await this.networkUtils.fetchPageConfig( + pageConfigUrl, + getOpts, (newEndpoint) => { this.dispatchAnalyticsEvent('pageConfigUpdated', { newEndpoint }); this.acrobatApiConfig = this.getAcrobatApiConfig(newEndpoint); diff --git a/unitylibs/utils/NetworkUtils.js b/unitylibs/utils/NetworkUtils.js index 6f3b16f46..65c0c4cdd 100644 --- a/unitylibs/utils/NetworkUtils.js +++ b/unitylibs/utils/NetworkUtils.js @@ -1,5 +1,3 @@ -import { unityConfig, getApiCallOptions } from '../scripts/utils.js'; - export default class NetworkUtils { handleAbortedRequest(url, options) { if (!(options?.signal?.aborted)) return; @@ -154,27 +152,25 @@ export default class NetworkUtils { } } - async fetchPageConfig(unityEndpointSuccessCb, unityEndpointFailureCb) { + async fetchPageConfig(pageConfigUrl, options, unityEndpointSuccessCb, unityEndpointFailureCb) { try { const TIMEOUT_MS = 5000; - const getOpts = await getApiCallOptions('GET', unityConfig.apiKey, {}, {}); - const pageConfigUrl = `${unityConfig.apiEndPoint}/pageConfig`; - const pageConfigResponse = await this.fetchWithTimeout(pageConfigUrl, getOpts, TIMEOUT_MS); + const pageConfigResponse = await this.fetchWithTimeout(pageConfigUrl, options, TIMEOUT_MS); if (pageConfigResponse.ok) { const responseJson = await this.getResponseJson(pageConfigResponse, {}); const locationHeader = pageConfigResponse.headers.get('location'); if (locationHeader) { const newEndpoint = `${locationHeader}/api/v1`; - if (typeof updateConfigCallback === 'function') unityEndpointSuccessCb(newEndpoint); + unityEndpointSuccessCb(newEndpoint); return responseJson; } - if (typeof unityEndpointFailureCb === 'function') unityEndpointFailureCb({ type: 'no-location-header', status: pageConfigResponse.status }); + unityEndpointFailureCb({ type: 'no-location-header', status: pageConfigResponse.status }); return responseJson; } - if (typeof unityEndpointFailureCb === 'function') unityEndpointFailureCb({ type: 'non-ok-status', status: pageConfigResponse.status }); + unityEndpointFailureCb({ type: 'non-ok-status', status: pageConfigResponse.status }); return await this.getResponseJson(pageConfigResponse, {}); } catch (error) { - if (typeof unityEndpointFailureCb === 'function') unityEndpointFailureCb({ type: `Network-error - ${error.message}` }); + unityEndpointFailureCb({ type: `Network-error - ${error.message}` }); return null; } }