UNPKG

react-native-theoplayer

Version:

A THEOplayer video component for react-native.

59 lines (48 loc) 1.66 kB
import type { Ad, AdBreak, AdDescription, AdsAPI, GoogleDAI } from 'react-native-theoplayer'; import { THEOplayerWebGoogleDAI } from './THEOplayerWebGoogleDAI'; import type { ChromelessPlayer } from 'theoplayer'; import { Omid } from '../../../api/ads/Omid'; export class THEOplayerWebAdsAdapter implements AdsAPI { private readonly _player: ChromelessPlayer; private _dai: GoogleDAI | undefined; constructor(player: ChromelessPlayer) { this._player = player; } currentAdBreak(): Promise<AdBreak> { const adBreak = this._player.ads?.currentAdBreak; return adBreak ? Promise.resolve(adBreak) : Promise.reject<AdBreak>(); } currentAds(): Promise<Ad[]> { const ads = this._player.ads?.currentAds; return ads ? Promise.resolve(ads) : Promise.reject<Ad[]>(); } playing(): Promise<boolean> { return Promise.resolve<boolean>(this._player.ads?.playing || false); } schedule(ad: AdDescription): void { this._player.ads?.schedule(ad); } scheduledAdBreaks(): Promise<AdBreak[]> { const adBreaks = this._player.ads?.scheduledAdBreaks; return adBreaks ? Promise.resolve(adBreaks) : Promise.reject<AdBreak[]>(); } skip(): void { this._player.ads?.skip(); } get dai(): GoogleDAI | undefined { if (!this._dai) { const nativeDai = this._player.ads?.dai; if (!nativeDai) { // Not native DAI available return undefined; } this._dai = new THEOplayerWebGoogleDAI(nativeDai); } return this._dai; } get omid(): Omid | undefined { // NYI console.warn('The Omid API is not yet implemented for Web platforms.'); return undefined; } }