diff --git a/android/src/main/java/com/sbugert/rnadmob/RNAdMobInterstitialAdModule.java b/android/src/main/java/com/sbugert/rnadmob/RNAdMobInterstitialAdModule.java index 67cc04de1..577993341 100644 --- a/android/src/main/java/com/sbugert/rnadmob/RNAdMobInterstitialAdModule.java +++ b/android/src/main/java/com/sbugert/rnadmob/RNAdMobInterstitialAdModule.java @@ -6,6 +6,7 @@ import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Callback; +import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; @@ -26,8 +27,8 @@ public class RNAdMobInterstitialAdModule extends ReactContextBaseJavaModule { InterstitialAd mInterstitialAd; String adUnitID; String[] testDevices; - Callback requestAdCallback; - Callback showAdCallback; + + private Promise mRequestAdPromise; @Override public String getName() { @@ -45,7 +46,6 @@ public void run() { @Override public void onAdClosed() { sendEvent("interstitialDidClose", null); - showAdCallback.invoke(); } @Override public void onAdFailedToLoad(int errorCode) { @@ -65,9 +65,10 @@ public void onAdFailedToLoad(int errorCode) { errorString = "ERROR_CODE_NO_FILL"; break; } - event.putString("error", errorString); + + event.putString("message", errorString); sendEvent("interstitialDidFailToLoad", event); - requestAdCallback.invoke(errorString); + mRequestAdPromise.reject(errorString, errorString); } @Override public void onAdLeftApplication() { @@ -76,7 +77,7 @@ public void onAdLeftApplication() { @Override public void onAdLoaded() { sendEvent("interstitialDidLoad", null); - requestAdCallback.invoke(); + mRequestAdPromise.resolve(null); } @Override public void onAdOpened() { @@ -103,14 +104,14 @@ public void setTestDevices(ReadableArray testDevices) { } @ReactMethod - public void requestAd(final Callback callback) { + public void requestAd(final Promise promise) { new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run () { if (mInterstitialAd.isLoaded() || mInterstitialAd.isLoading()) { - callback.invoke("Ad is already loaded."); // TODO: make proper error + promise.reject("E_AD_ALREADY_LOADED", "Ad is already loaded."); } else { - requestAdCallback = callback; + mRequestAdPromise = promise; AdRequest.Builder adRequestBuilder = new AdRequest.Builder(); if (testDevices != null) { for (int i = 0; i < testDevices.length; i++) { @@ -125,15 +126,15 @@ public void run () { } @ReactMethod - public void showAd(final Callback callback) { + public void showAd(final Promise promise) { new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run () { if (mInterstitialAd.isLoaded()) { - showAdCallback = callback; mInterstitialAd.show(); + promise.resolve(null); } else { - callback.invoke("Ad is not ready."); // TODO: make proper error + promise.reject("E_AD_NOT_READY", "Ad is not ready."); } } }); diff --git a/android/src/main/java/com/sbugert/rnadmob/RNAdMobRewardedVideoAdModule.java b/android/src/main/java/com/sbugert/rnadmob/RNAdMobRewardedVideoAdModule.java index 20e6e1571..08db2ec3f 100644 --- a/android/src/main/java/com/sbugert/rnadmob/RNAdMobRewardedVideoAdModule.java +++ b/android/src/main/java/com/sbugert/rnadmob/RNAdMobRewardedVideoAdModule.java @@ -6,6 +6,7 @@ import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Callback; +import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; @@ -25,8 +26,8 @@ public class RNAdMobRewardedVideoAdModule extends ReactContextBaseJavaModule imp RewardedVideoAd mRewardedVideoAd; String adUnitID; String[] testDevices; - Callback requestAdCallback; - Callback showAdCallback; + + private Promise mRequestAdPromise; @Override public String getName() { @@ -50,7 +51,7 @@ public void onRewarded(RewardItem rewardItem) { @Override public void onRewardedVideoAdLoaded() { sendEvent("rewardedVideoDidLoad", null); - requestAdCallback.invoke(); + mRequestAdPromise.resolve(null); } @Override @@ -93,9 +94,9 @@ public void onRewardedVideoAdFailedToLoad(int errorCode) { break; } - event.putString("error", errorString); + event.putString("message", errorString); sendEvent("rewardedVideoDidFailToLoad", event); - requestAdCallback.invoke(errorString); + mRequestAdPromise.reject(errorString, errorString); } private void sendEvent(String eventName, @Nullable WritableMap params) { @@ -115,7 +116,7 @@ public void setTestDevices(ReadableArray testDevices) { } @ReactMethod - public void requestAd(final Callback callback) { + public void requestAd(final Promise promise) { new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run () { @@ -124,9 +125,9 @@ public void run () { RNAdMobRewardedVideoAdModule.this.mRewardedVideoAd.setRewardedVideoAdListener(RNAdMobRewardedVideoAdModule.this); if (mRewardedVideoAd.isLoaded()) { - callback.invoke("Ad is already loaded."); // TODO: make proper error + promise.reject("E_AD_ALREADY_LOADED", "Ad is already loaded."); } else { - requestAdCallback = callback; + mRequestAdPromise = promise; AdRequest.Builder adRequestBuilder = new AdRequest.Builder(); @@ -144,15 +145,15 @@ public void run () { } @ReactMethod - public void showAd(final Callback callback) { + public void showAd(final Promise promise) { new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run () { if (mRewardedVideoAd.isLoaded()) { - showAdCallback = callback; mRewardedVideoAd.show(); + promise.resolve(null); } else { - callback.invoke("Ad is not ready."); // TODO: make proper error + promise.reject("E_AD_NOT_READY", "Ad is not ready."); } } });