Merge pull request #348 from blrichards/master

[admob] moved EventTypes to new file to avoid enumerable key in AdMobComponen…
This commit is contained in:
Elliot Hesp 2017-08-22 10:48:06 +01:00 committed by GitHub
commit 0255111e65
3 changed files with 45 additions and 47 deletions

View File

@ -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;

View File

@ -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',
};

View File

@ -7,7 +7,11 @@ import AdRequest from './AdRequest';
import VideoOptions from './VideoOptions';
import Banner from './Banner';
import NativeExpress from './NativeExpress';
import { Base } from './../base';
import EventTypes, {
NativeExpressEventTypes,
RewardedVideoEventTypes
} from './EventTypes'
import { Base } from '../base';
const FirebaseAdMob = NativeModules.RNFirebaseAdMob;
const FirebaseAdMobEvt = FirebaseAdMob && new NativeEventEmitter(FirebaseAdMob);
@ -87,22 +91,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
};