@imorochi/iplayer
Version:
Proyecto media player con JS.
59 lines (50 loc) • 1.77 kB
text/typescript
import MediaPlayer from '../MediaPlayer';
import Ad from './ads/Ad';
import Ads from './ads/Ads';
class AdsPlugin {
private ads: Ads;
private player: MediaPlayer;
private media: HTMLMediaElement;
private currentAd: Ad;
private adsContainer: HTMLElement;
constructor() {
this.ads = Ads.getInstance();
this.adsContainer = document.createElement('div');
this.handleTimeUpdate = this.handleTimeUpdate.bind(this);
}
run(player: MediaPlayer) {
this.player = player;
this.player.container.appendChild(this.adsContainer);
this.media = this.player.media;
this.media.addEventListener('timeupdate', this.handleTimeUpdate);
}
private handleTimeUpdate() {
const currentTime = Math.floor(this.media.currentTime);
if(currentTime % 30 === 0) {
this.renderAd();
}
}
private renderAd() {
if(this.currentAd) {
return;
}
const ad = this.ads.getAd();
this.currentAd = ad;
this.adsContainer.innerHTML = `
<div class="ads">
<a class="ads__link" href="${this.currentAd.url}" target="_blank">
<img class="ads__img" src="${this.currentAd.imageUrl}" />
<div class="ads__info">
<h5 class="ads__title">${this.currentAd.title}</h5>
<p class="ads__body">${this.currentAd.body}</p>
</div>
</a>
</div>`;
setTimeout(() => {
this.currentAd = null;
this.adsContainer.innerHTML = '';
}, 10000);
// console.log(this.currentAd);
}
}
export default AdsPlugin;