UNPKG

react-native-firebase-compiled

Version:

A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Sto

130 lines (94 loc) 3.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ = require("."); var _AdRequest = _interopRequireDefault(require("./AdRequest")); var _events = require("../../utils/events"); var _native = require("../../utils/native"); var _utils = require("../../utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } let subscriptions = []; class RewardedVideo { constructor(admob, adUnit) { _defineProperty(this, "_admob", void 0); _defineProperty(this, "_onRewardedVideoEvent", event => { const eventType = `rewarded_video:${this.adUnit}:${event.type}`; let emitData = Object.assign({}, event); switch (event.type) { case 'onAdLoaded': this.loaded = true; break; case 'onAdFailedToLoad': emitData = (0, _utils.nativeToJSError)(event.payload.code, event.payload.message); emitData.type = event.type; break; default: } _events.SharedEventEmitter.emit(eventType, emitData); _events.SharedEventEmitter.emit(`rewarded_video:${this.adUnit}:*`, emitData); }); for (let i = 0, len = subscriptions.length; i < len; i++) { subscriptions[i].remove(); } subscriptions = []; this._admob = admob; this.adUnit = adUnit; this.loaded = false; _events.SharedEventEmitter.removeAllListeners(`rewarded_video_${adUnit}`); _events.SharedEventEmitter.addListener(`rewarded_video_${adUnit}`, this._onRewardedVideoEvent); } /** * Handle a JS emit event * @param event * @private */ /** * Load an ad with an instance of AdRequest * @param request * @returns {*} */ loadAd(request) { let adRequest = request; if (!adRequest || !Object.keys(adRequest)) { adRequest = new _AdRequest.default().addTestDevice().build(); } return (0, _native.getNativeModule)(this._admob).rewardedVideoLoadAd(this.adUnit, adRequest); } /** * Return a local instance of isLoaded * @returns {boolean} */ isLoaded() { return this.loaded; } /** * Show the advert - will only show if loaded * @returns {*} */ show() { if (this.loaded) { (0, _native.getNativeModule)(this._admob).rewardedVideoShowAd(this.adUnit); } } /** * Listen to an Ad event * @param eventType * @param listenerCb * @returns {null} */ on(eventType, listenerCb) { const types = _objectSpread({}, _.statics.EventTypes, _.statics.RewardedVideoEventTypes); if (!types[eventType]) { console.warn(`Invalid event type provided, must be one of: ${Object.keys(types).join(', ')}`); return null; } const sub = _events.SharedEventEmitter.addListener(`rewarded_video:${this.adUnit}:${eventType}`, listenerCb); subscriptions.push(sub); return sub; } } exports.default = RewardedVideo;