diff --git a/lib/modules/admob/AdMobComponent.js b/lib/modules/admob/AdMobComponent.js index 2d53877b..a8bc1da9 100644 --- a/lib/modules/admob/AdMobComponent.js +++ b/lib/modules/admob/AdMobComponent.js @@ -1,39 +1,28 @@ import React from 'react'; import { ViewPropTypes, requireNativeComponent } from 'react-native'; import PropTypes from 'prop-types'; -import { statics } from './'; +import EventTypes, { NativeExpressEventTypes } from './EventTypes'; import { nativeToJSError } from '../../utils'; import AdRequest from './AdRequest'; import VideoOptions from './VideoOptions'; +const adMobPropTypes = { + ...ViewPropTypes, + size: PropTypes.string.isRequired, + unitId: PropTypes.string.isRequired, + request: PropTypes.object, + video: PropTypes.object, +} +Object.keys(EventTypes).forEach(eventType => { + adMobPropTypes[eventType] = PropTypes.func; +}); +Object.keys(NativeExpressEventTypes).forEach(eventType => { + adMobPropTypes[eventType] = PropTypes.func; +}); + class AdMobComponent extends React.Component { - - static propTypes = { - ...ViewPropTypes, - - // TODO ehesp: cant init this outside of the component; statics isn't defined - ...(() => { - const eventProps = {}; - Object.keys(statics.EventTypes).forEach((key) => { - eventProps[key] = PropTypes.func; - }); - return eventProps; - }), - - ...(() => { - const eventProps = {}; - Object.keys(statics.NativeExpressEventTypes).forEach((key) => { - eventProps[key] = PropTypes.func; - }); - return eventProps; - }), - - size: PropTypes.string.isRequired, - unitId: PropTypes.string.isRequired, - request: PropTypes.object, - video: PropTypes.object, - }; + static propTypes = adMobPropTypes; static defaultProps = { request: new AdRequest().addTestDevice().build(), @@ -94,7 +83,6 @@ class AdMobComponent extends React.Component { /> ); } - } export default AdMobComponent; diff --git a/lib/modules/admob/EventTypes.js b/lib/modules/admob/EventTypes.js new file mode 100644 index 00000000..d4343633 --- /dev/null +++ b/lib/modules/admob/EventTypes.js @@ -0,0 +1,21 @@ + +export default { + onAdLoaded: 'onAdLoaded', + onAdOpened: 'onAdOpened', + onAdLeftApplication: 'onAdLeftApplication', + onAdClosed: 'onAdClosed', + onAdFailedToLoad: 'onAdFailedToLoad', +}; + +export const NativeExpressEventTypes = { + onVideoEnd: 'onVideoEnd', + onVideoMute: 'onVideoMute', + onVideoPause: 'onVideoPause', + onVideoPlay: 'onVideoPlay', + onVideoStart: 'onVideoStart', +}; + +export const RewardedVideoEventTypes = { + onRewarded: 'onRewarded', + onRewardedVideoStarted: 'onRewardedVideoStarted', +}; \ No newline at end of file diff --git a/lib/modules/admob/index.js b/lib/modules/admob/index.js index c2eb4a68..9aa0c7b9 100644 --- a/lib/modules/admob/index.js +++ b/lib/modules/admob/index.js @@ -7,6 +7,10 @@ import VideoOptions from './VideoOptions'; import Banner from './Banner'; import NativeExpress from './NativeExpress'; +import EventTypes, { + NativeExpressEventTypes, + RewardedVideoEventTypes, +} from './EventTypes'; export default class AdMob extends ModuleBase { static _NAMESPACE = 'admob'; @@ -81,22 +85,7 @@ export const statics = { NativeExpress, AdRequest, VideoOptions, - EventTypes: { - onAdLoaded: 'onAdLoaded', - onAdOpened: 'onAdOpened', - onAdLeftApplication: 'onAdLeftApplication', - onAdClosed: 'onAdClosed', - onAdFailedToLoad: 'onAdFailedToLoad', - }, - RewardedVideoEventTypes: { - onRewarded: 'onRewarded', - onRewardedVideoStarted: 'onRewardedVideoStarted', - }, - NativeExpressEventTypes: { - onVideoEnd: 'onVideoEnd', - onVideoMute: 'onVideoMute', - onVideoPause: 'onVideoPause', - onVideoPlay: 'onVideoPlay', - onVideoStart: 'onVideoStart', - }, + EventTypes, + RewardedVideoEventTypes, + NativeExpressEventTypes, }; diff --git a/package.json b/package.json index 7549c85c..dd725643 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-firebase", - "version": "2.1.2", + "version": "2.1.3", "author": "Invertase (http://invertase.io)", "description": "A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Auth, Database, Messaging (FCM), Remote Config, Storage, Admob, Analytics, Crash Reporting, and Performance.", "main": "index",