diff --git a/dist/angular-zendesk-widget.js b/dist/angular-zendesk-widget.js index ec9887c..37754aa 100644 --- a/dist/angular-zendesk-widget.js +++ b/dist/angular-zendesk-widget.js @@ -49,6 +49,9 @@ angular.forEach(apiMethods, function(method) { ZendeskWidgetApi.prototype[method] = function() { + if (!settings.accountUrl) { + return; + } var closureArgs = arguments; $window.zE(function() { $window.zE[method].apply($window.zE, closureArgs); @@ -68,10 +71,12 @@ angular.module('zendeskWidget') .run([ '$window', + '$log', 'zendeskWidgetSettings', - function($window, zendeskWidgetSettings) { + function($window, $log, zendeskWidgetSettings) { if (!zendeskWidgetSettings.accountUrl) { - throw new Error('Missing accountUrl. Please set in app config via ZendeskWidgetProvider'); + $log.warn('Missing accountUrl. Please set in app config via ZendeskWidgetProvider'); + return; } var window = $window; diff --git a/dist/angular-zendesk-widget.min.js b/dist/angular-zendesk-widget.min.js index 3966007..bb4547c 100644 --- a/dist/angular-zendesk-widget.min.js +++ b/dist/angular-zendesk-widget.min.js @@ -1 +1 @@ -!function(e){e.module("zendeskWidget",[])}(angular),function(e){var n={accountUrl:"",beforePageLoad:e.noop},t=["setLocale","identify","hide","show","activate","setHelpCenterSuggestions"];e.module("zendeskWidget").value("zendeskWidgetSettings",n).provider("ZendeskWidget",[function(){this.init=function(t){e.extend(n,t)},this.$get=["$window",function(n){function o(){}return e.forEach(t,function(e){o.prototype[e]=function(){var t=arguments;n.zE(function(){n.zE[e].apply(n.zE,t)})}}),new o}]}])}(angular),function(e){e.module("zendeskWidget").run(["$window","zendeskWidgetSettings",function(e,n){if(!n.accountUrl)throw new Error("Missing accountUrl. Please set in app config via ZendeskWidgetProvider");var t=e;t.zEmbed||function(e,n){var o,i,r,a,d,s=[],c=document.createElement("iframe");t.zEmbed=function(){s.push(arguments)},t.zE=t.zE||t.zEmbed,c.src="javascript:false",c.title="",c.role="presentation",(c.frameElement||c).style.cssText="display: none",r=document.getElementsByTagName("script"),r=r[r.length-1],r.parentNode.insertBefore(c,r),a=c.contentWindow,d=a.document;try{i=d}catch(u){o=document.domain,c.src='javascript:var d=document.open();d.domain="'+o+'";void(0);',i=d}i.open()._l=function(){var t=this.createElement("script");o&&(this.domain=o),t.id="js-iframe-async",t.src=e,this.t=+new Date,this.zendeskHost=n,this.zEQueue=s,this.body.appendChild(t)},i.write(''),i.close()}("https://assets.zendesk.com/embeddable_framework/main.js",n.accountUrl),e.zE(function(){n.beforePageLoad(e.zE)})}])}(angular),function(e,n){"object"==typeof exports?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define(["angular"],function(t){return e.returnExportsGlobal=n(t)}):e.returnExportsGlobal=n(e.angular)}(this,function(e){return e.module("zendeskWidget")}); \ No newline at end of file +!function(e){e.module("zendeskWidget",[])}(angular),function(e){var n={accountUrl:"",beforePageLoad:e.noop},t=["setLocale","identify","hide","show","activate","setHelpCenterSuggestions"];e.module("zendeskWidget").value("zendeskWidgetSettings",n).provider("ZendeskWidget",[function(){this.init=function(t){e.extend(n,t)},this.$get=["$window",function(o){function i(){}return e.forEach(t,function(e){i.prototype[e]=function(){if(n.accountUrl){var t=arguments;o.zE(function(){o.zE[e].apply(o.zE,t)})}}}),new i}]}])}(angular),function(e){e.module("zendeskWidget").run(["$window","$log","zendeskWidgetSettings",function(e,n,t){if(!t.accountUrl)return n.warn("Missing accountUrl. Please set in app config via ZendeskWidgetProvider"),void 0;var o=e;o.zEmbed||function(e,n){var t,i,a,r,d,s=[],c=document.createElement("iframe");o.zEmbed=function(){s.push(arguments)},o.zE=o.zE||o.zEmbed,c.src="javascript:false",c.title="",c.role="presentation",(c.frameElement||c).style.cssText="display: none",a=document.getElementsByTagName("script"),a=a[a.length-1],a.parentNode.insertBefore(c,a),r=c.contentWindow,d=r.document;try{i=d}catch(u){t=document.domain,c.src='javascript:var d=document.open();d.domain="'+t+'";void(0);',i=d}i.open()._l=function(){var o=this.createElement("script");t&&(this.domain=t),o.id="js-iframe-async",o.src=e,this.t=+new Date,this.zendeskHost=n,this.zEQueue=s,this.body.appendChild(o)},i.write(''),i.close()}("https://assets.zendesk.com/embeddable_framework/main.js",t.accountUrl),e.zE(function(){t.beforePageLoad(e.zE)})}])}(angular),function(e,n){"object"==typeof exports?module.exports=n(require("angular")):"function"==typeof define&&define.amd?define(["angular"],function(t){return e.returnExportsGlobal=n(t)}):e.returnExportsGlobal=n(e.angular)}(this,function(e){return e.module("zendeskWidget")}); \ No newline at end of file diff --git a/src/angular-zendesk-widget/zendeskWidget.run.js b/src/angular-zendesk-widget/zendeskWidget.run.js index d5ab8bc..20c69fc 100644 --- a/src/angular-zendesk-widget/zendeskWidget.run.js +++ b/src/angular-zendesk-widget/zendeskWidget.run.js @@ -3,10 +3,12 @@ angular.module('zendeskWidget') .run([ '$window', + '$log', 'zendeskWidgetSettings', - function($window, zendeskWidgetSettings) { + function($window, $log, zendeskWidgetSettings) { if (!zendeskWidgetSettings.accountUrl) { - throw new Error('Missing accountUrl. Please set in app config via ZendeskWidgetProvider'); + $log.warn('Missing accountUrl. Please set in app config via ZendeskWidgetProvider'); + return; } var window = $window; diff --git a/src/angular-zendesk-widget/zendeskWidget.service.js b/src/angular-zendesk-widget/zendeskWidget.service.js index 2bcdcf3..5591bf7 100644 --- a/src/angular-zendesk-widget/zendeskWidget.service.js +++ b/src/angular-zendesk-widget/zendeskWidget.service.js @@ -43,6 +43,9 @@ angular.forEach(apiMethods, function(method) { ZendeskWidgetApi.prototype[method] = function() { + if (!settings.accountUrl) { + return; + } var closureArgs = arguments; $window.zE(function() { $window.zE[method].apply($window.zE, closureArgs); diff --git a/test/integration/zendeskWidgetSpec.js b/test/integration/zendeskWidgetSpec.js deleted file mode 100644 index c73095c..0000000 --- a/test/integration/zendeskWidgetSpec.js +++ /dev/null @@ -1,11 +0,0 @@ -describe('zendeskWidget', function() { - 'use strict'; - - beforeEach(module('zendeskWidget')); - - it('throws an error when `accountUrl` is blank', function() { - expect(function() { inject() }).toThrowError( - 'Missing accountUrl. Please set in app config via ZendeskWidgetProvider' - ); - }); -}); diff --git a/test/unit/services/zendeskWidgetProviderSpec.js b/test/unit/services/zendeskWidgetProviderSpec.js index 76f4ad5..4f2277c 100644 --- a/test/unit/services/zendeskWidgetProviderSpec.js +++ b/test/unit/services/zendeskWidgetProviderSpec.js @@ -10,6 +10,8 @@ describe('ZendeskWidgetProvider', function() { })); describe('a set of API methods', function() { + var originalAccountUrl; + beforeEach(function() { var apiMethods = ['setLocale', 'identify', 'hide', 'show', 'activate']; // Stub out $window.zE() wrapper and all apiMethods @@ -20,6 +22,14 @@ describe('ZendeskWidgetProvider', function() { spyOn($window.zE, apiMethod).and.callThrough(); } }); + beforeEach(inject(function(_zendeskWidgetSettings_) { + originalAccountUrl = _zendeskWidgetSettings_.accountUrl; + _zendeskWidgetSettings_.accountUrl = 'test.zendesk.con'; + })); + afterEach(inject(function(_zendeskWidgetSettings_) { + _zendeskWidgetSettings_.accountUrl = originalAccountUrl; + })); + it("delegates to Zendesk's Web Widget API", function() { var anyArgs = ['foo', 'bar', 'baz'];