diff options
author | Sam Potts <sam@potts.es> | 2020-03-30 10:45:57 +1100 |
---|---|---|
committer | Sam Potts <sam@potts.es> | 2020-03-30 10:45:57 +1100 |
commit | da943b384ca334cad66fd261cb9a0f924716da9d (patch) | |
tree | 5aaac37b474a2708c7910eb536b9d96d4c0dcff3 /src/js/plugins/ads.js | |
parent | 50a7c2fad6f0d9b03788fe57a855894eafcf5ef7 (diff) | |
parent | ad63af5096e014785bd22eac24bc8030c0dc70d6 (diff) | |
download | plyr-da943b384ca334cad66fd261cb9a0f924716da9d.tar.lz plyr-da943b384ca334cad66fd261cb9a0f924716da9d.tar.xz plyr-da943b384ca334cad66fd261cb9a0f924716da9d.zip |
Merge branch 'develop' into css-variables
# Conflicts:
# demo/dist/demo.css
# demo/dist/demo.min.js.map
# demo/index.html
# dist/plyr.css
# dist/plyr.min.js.map
# dist/plyr.min.mjs.map
# dist/plyr.polyfilled.min.js.map
# dist/plyr.polyfilled.min.mjs.map
# gulpfile.js
# src/sass/base.scss
# src/sass/components/control.scss
# src/sass/settings/colors.scss
# src/sass/settings/controls.scss
Diffstat (limited to 'src/js/plugins/ads.js')
-rw-r--r-- | src/js/plugins/ads.js | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/src/js/plugins/ads.js b/src/js/plugins/ads.js index e6fab967..9f1088fa 100644 --- a/src/js/plugins/ads.js +++ b/src/js/plugins/ads.js @@ -10,7 +10,8 @@ import { createElement } from '../utils/elements'; import { triggerEvent } from '../utils/events'; import i18n from '../utils/i18n'; import is from '../utils/is'; -import loadScript from '../utils/loadScript'; +import loadScript from '../utils/load-script'; +import { silencePromise } from '../utils/promise'; import { formatTime } from '../utils/time'; import { buildUrlParams } from '../utils/urls'; @@ -136,7 +137,7 @@ class Ads { cb: Date.now(), AV_WIDTH: 640, AV_HEIGHT: 480, - AV_CDIM2: this.publisherId, + AV_CDIM2: config.publisherId, }; const base = 'https://go.aniview.com/api/adserver6/vast/'; @@ -172,6 +173,17 @@ class Ads { // We assume the adContainer is the video container of the plyr element that will house the ads this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container, this.player.media); + // Create ads loader + this.loader = new google.ima.AdsLoader(this.elements.displayContainer); + + // Listen and respond to ads loaded and error events + this.loader.addEventListener( + google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, + event => this.onAdsManagerLoaded(event), + false, + ); + this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error), false); + // Request video ads to be pre-loaded this.requestAds(); } @@ -183,17 +195,6 @@ class Ads { const { container } = this.player.elements; try { - // Create ads loader - this.loader = new google.ima.AdsLoader(this.elements.displayContainer); - - // Listen and respond to ads loaded and error events - this.loader.addEventListener( - google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, - event => this.onAdsManagerLoaded(event), - false, - ); - this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error), false); - // Request video ads const request = new google.ima.AdsRequest(); request.adTagUrl = this.tagUrl; @@ -369,7 +370,12 @@ class Ads { // TODO: So there is still this thing where a video should only be allowed to start // playing when the IMA SDK is ready or has failed - this.loadAds(); + if (this.player.ended) { + this.loadAds(); + } else { + // The SDK won't allow new ads to be called without receiving a contentComplete() + this.loader.contentComplete(); + } break; @@ -510,7 +516,7 @@ class Ads { this.playing = false; // Play video - this.player.media.play(); + silencePromise(this.player.media.play()); } /** @@ -563,6 +569,8 @@ class Ads { this.on('loaded', resolve); this.player.debug.log(this.manager); }); + // Now that the manager has been destroyed set it to also be un-initialized + this.initialized = false; // Now request some new advertisements this.requestAds(); |