diff --git a/src/App.js b/src/App.js index 45f1519b..d28cf7eb 100644 --- a/src/App.js +++ b/src/App.js @@ -115,6 +115,7 @@ export default class App extends Base { process.env.REPORTINGID = reportingId; process.env.STANDALONE = standalone; process.env.STANDALONE_PREFIX = standalonePrefix; + process.env.REGISTERPROVIDER = true; // Set the pubSub URL if present process.env.PUB_SUB_URL = new URLSearchParams(window.location.search).get('pubSubUrl'); @@ -209,7 +210,9 @@ export default class App extends Base { Keyboard.provide('xrn:firebolt:capability:input:keyboard', new KeyboardProviderDelegater(this)); PinChallenge.provide('xrn:firebolt:capability:usergrant:pinchallenge', new PinChallengeProviderDelegater(this)); } else { - Discovery.provide('xrn:firebolt:capability:discovery:interest', new UserInterestDelegater(this)); + if (process.env.REGISTERPROVIDER) { + Discovery.provide('xrn:firebolt:capability:discovery:interest', new UserInterestDelegater(this)); + } } } catch (err) { logger.error('Could not set up providers' + err, 'LoadedState'); @@ -414,6 +417,10 @@ export default class App extends Base { logger.error('No Mac Address Found in Parameter Initialization response...', 'getParameterInitializationValues'); } + if (query.params.hasOwnProperty(CONSTANTS.REGISTERPROVIDER)) { + process.env.REGISTERPROVIDER = query.params.registerprovider; + } + // Set the pubSub URL if present if (query.params.pubSubUrl) { process.env.PUB_SUB_URL = query.params.pubSubUrl; diff --git a/src/constant.js b/src/constant.js index 634c0742..7e0ec2d8 100644 --- a/src/constant.js +++ b/src/constant.js @@ -140,6 +140,7 @@ export const CONSTANTS = { WRONG_RESPONSE_MESSAGE_FORMAT: 'Unexpected error format encountered in the response', EXCLUDED_METHODS_FOR_SDK: [], EXCLUDED_METHODS_FOR_TRANSPORT: [], + REGISTERPROVIDER: 'registerprovider', defaultSDKs: [ { name: 'Core', diff --git a/src/providers/UserInterestProvider.js b/src/providers/UserInterestProvider.js index 238acd6a..77178b5a 100644 --- a/src/providers/UserInterestProvider.js +++ b/src/providers/UserInterestProvider.js @@ -19,12 +19,18 @@ export default class UserIntrestProvider { userInterest() { try { - const USERINTERESTDATA = require('../source/userInterest.json'); - if (USERINTERESTDATA.hasOwnProperty(process.env.userInterestKey)) { - const data = USERINTERESTDATA[process.env.userInterestKey]; - return Promise.resolve(data); - } else { - return Promise.resolve(null); + if (process.env.userInterestError == null || process.env.userInterestError.toLowerCase() != 'timeout') { + if (process.env.userInterestError && process.env.userInterestError.toLowerCase() == 'error') { + return Promise.reject({ code: 1000, message: 'Custom error from provider' }); + } else { + const USERINTERESTDATA = require('../source/userInterest.json'); + if (USERINTERESTDATA.hasOwnProperty(process.env.userInterestKey)) { + const data = USERINTERESTDATA[process.env.userInterestKey]; + return Promise.resolve(data); + } else { + return Promise.resolve(null); + } + } } } catch (err) { logger.error('Error in userInterest provider: ', err.message); diff --git a/src/pubsub/handlers/setApiResponseHandler.js b/src/pubsub/handlers/setApiResponseHandler.js index af48aafb..364e26de 100644 --- a/src/pubsub/handlers/setApiResponseHandler.js +++ b/src/pubsub/handlers/setApiResponseHandler.js @@ -98,6 +98,7 @@ export default class SetApiResponseHandler extends BaseHandler { setResponseUserInterestChallenge(message) { const userInterestData = message.params.apiResponse.attributes[0]; process.env.userInterestKey = userInterestData.userInterestKey; + process.env.userInterestError = userInterestData.userInterestError; const reportIdString = JSON.stringify({ report: 'Received UserInterest apiResponse parameters' }); return reportIdString; }