99@implementation RNAdMobRewarded {
1010 NSString *_adUnitID;
1111 NSArray *_testDevices;
12- RCTResponseSenderBlock _requestAdCallback ;
13- RCTResponseSenderBlock _showAdCallback ;
12+ RCTPromiseResolveBlock _requestAdResolve ;
13+ RCTPromiseRejectBlock _requestAdReject ;
1414 BOOL hasListeners;
1515}
1616
@@ -45,26 +45,28 @@ - (dispatch_queue_t)methodQueue
4545 _testDevices = testDevices;
4646}
4747
48- RCT_EXPORT_METHOD (requestAd:(RCTResponseSenderBlock)callback )
48+ RCT_EXPORT_METHOD (requestAd:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject )
4949{
50- _requestAdCallback = callback;
50+ _requestAdResolve = resolve;
51+ _requestAdReject = reject;
52+
5153 [GADRewardBasedVideoAd sharedInstance ].delegate = self;
5254 GADRequest *request = [GADRequest request ];
5355 request.testDevices = _testDevices;
5456 [[GADRewardBasedVideoAd sharedInstance ] loadRequest: request
5557 withAdUnitID: _adUnitID];
5658}
5759
58- RCT_EXPORT_METHOD (showAd:(RCTResponseSenderBlock)callback )
60+ RCT_EXPORT_METHOD (showAd:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject )
5961{
6062 if ([[GADRewardBasedVideoAd sharedInstance ] isReady ]) {
61- _showAdCallback = callback;
6263 UIWindow *keyWindow = [[UIApplication sharedApplication ] keyWindow ];
6364 UIViewController *rootViewController = [keyWindow rootViewController ];
6465 [[GADRewardBasedVideoAd sharedInstance ] presentFromRootViewController: rootViewController];
66+ resolve (nil );
6567 }
6668 else {
67- callback (@[ RCTMakeError ( @" Ad is not ready" , nil , nil )] );
69+ reject ( @" E_AD_NOT_READY " , @" Ad is not ready. " , nil );
6870 }
6971}
7072
@@ -83,62 +85,60 @@ - (dispatch_queue_t)methodQueue
8385- (void )startObserving
8486{
8587 hasListeners = YES ;
86- [GADRewardBasedVideoAd sharedInstance ].delegate = self;
8788}
8889
8990- (void )stopObserving
9091{
9192 hasListeners = NO ;
92- [GADRewardBasedVideoAd sharedInstance ].delegate = nil ;
9393}
9494
9595#pragma mark GADRewardBasedVideoAdDelegate
9696
97- - (void )rewardBasedVideoAd : (GADRewardBasedVideoAd *)rewardBasedVideoAd
97+ - (void )rewardBasedVideoAd : (__unused GADRewardBasedVideoAd *)rewardBasedVideoAd
9898 didRewardUserWithReward : (GADAdReward *)reward {
9999 if (hasListeners) {
100100 [self sendEventWithName: @" rewardedVideoDidRewardUser" body: @{@" type" : reward.type , @" amount" : reward.amount }];
101101 }
102102}
103103
104- - (void )rewardBasedVideoAdDidReceiveAd : (GADRewardBasedVideoAd *)rewardBasedVideoAd {
104+ - (void )rewardBasedVideoAdDidReceiveAd : (__unused GADRewardBasedVideoAd *)rewardBasedVideoAd {
105105 if (hasListeners) {
106106 [self sendEventWithName: @" rewardedVideoDidLoad" body: nil ];
107107 }
108- _requestAdCallback (@[[ NSNull null ]] );
108+ _requestAdResolve ( nil );
109109}
110110
111- - (void )rewardBasedVideoAdDidOpen : (GADRewardBasedVideoAd *)rewardBasedVideoAd {
111+ - (void )rewardBasedVideoAdDidOpen : (__unused GADRewardBasedVideoAd *)rewardBasedVideoAd {
112112 if (hasListeners) {
113113 [self sendEventWithName: @" rewardedVideoDidOpen" body: nil ];
114114 }
115- _showAdCallback (@[[NSNull null ]]);
116115}
117116
118- - (void )rewardBasedVideoAdDidStartPlaying : (GADRewardBasedVideoAd *)rewardBasedVideoAd {
117+ - (void )rewardBasedVideoAdDidStartPlaying : (__unused GADRewardBasedVideoAd *)rewardBasedVideoAd {
119118 if (hasListeners) {
120119 [self sendEventWithName: @" rewardedVideoDidStartPlaying" body: nil ];
121120 }
122121}
123122
124- - (void )rewardBasedVideoAdDidClose : (GADRewardBasedVideoAd *)rewardBasedVideoAd {
123+ - (void )rewardBasedVideoAdDidClose : (__unused GADRewardBasedVideoAd *)rewardBasedVideoAd {
125124 if (hasListeners) {
126125 [self sendEventWithName: @" rewardedVideoDidClose" body: nil ];
127126 }
128127}
129128
130- - (void )rewardBasedVideoAdWillLeaveApplication : (GADRewardBasedVideoAd *)rewardBasedVideoAd {
129+ - (void )rewardBasedVideoAdWillLeaveApplication : (__unused GADRewardBasedVideoAd *)rewardBasedVideoAd {
131130 if (hasListeners) {
132131 [self sendEventWithName: @" rewardedVideoWillLeaveApplication" body: nil ];
133132 }
134133}
135134
136- - (void )rewardBasedVideoAd : (GADRewardBasedVideoAd *)rewardBasedVideoAd
135+ - (void )rewardBasedVideoAd : (__unused GADRewardBasedVideoAd *)rewardBasedVideoAd
137136 didFailToLoadWithError : (NSError *)error {
138137 if (hasListeners) {
139- [self sendEventWithName: @" rewardedVideoDidFailToLoad" body: @{@" name" : [error description ]}];
138+ NSDictionary *jsError = RCTJSErrorFromCodeMessageAndNSError (@" E_AD_REQUEST_FAILED" , error.localizedDescription , error);
139+ [self sendEventWithName: @" rewardedVideoDidFailToLoad" body: jsError];
140140 }
141- _requestAdCallback (@[ RCTJSErrorFromNSError ( error)] );
141+ _requestAdReject ( @" E_AD_REQUEST_FAILED " , error. localizedDescription , error );
142142}
143143
144144@end
0 commit comments