react-native-google-mobile-ads 7.0.0 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,10 @@
1
1
  import io.invertase.gradle.common.PackageJson
2
2
 
3
3
  buildscript {
4
+ ext.getExtOrDefault = {name, version ->
5
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : version
6
+ }
7
+
4
8
  // The Android Gradle plugin is only required when opening the android folder stand-alone.
5
9
  // This avoids unnecessary downloads and potential conflicts when the library is included as a
6
10
  // module dependency in an application project.
@@ -12,7 +16,15 @@ buildscript {
12
16
 
13
17
  dependencies {
14
18
  classpath("com.android.tools.build:gradle:7.0.4")
15
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${safeExtGet('kotlinVersion', '1.6.10')}"
19
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion', '1.6.10')}"
20
+ }
21
+ } else {
22
+ repositories {
23
+ mavenCentral()
24
+ }
25
+
26
+ dependencies {
27
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion', '1.6.10')}"
16
28
  }
17
29
  }
18
30
  }
@@ -114,6 +126,3 @@ ReactNative.shared.applyDefaultExcludes()
114
126
  ReactNative.module.applyAndroidVersions()
115
127
  ReactNative.module.applyReactNativeDependency("api")
116
128
 
117
- def safeExtGet(prop, fallback) {
118
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
119
- }
@@ -18,6 +18,7 @@ package io.invertase.googlemobileads
18
18
  */
19
19
 
20
20
  import android.app.Activity
21
+ import android.util.Log
21
22
  import android.util.SparseArray
22
23
  import com.facebook.react.bridge.*
23
24
  import com.google.android.gms.ads.AdLoadCallback
@@ -143,88 +144,104 @@ abstract class ReactNativeGoogleMobileAdsFullScreenAdModule<T>(
143
144
  private val adRequestOptions: ReadableMap
144
145
  ) : AdLoadCallback<T>() {
145
146
  override fun onAdLoaded(ad: T) {
146
- val adHelper = ReactNativeGoogleMobileAdsAdHelper(ad)
147
- var eventType = ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_LOADED
148
- var data: WritableMap? = null
147
+ try {
148
+ val adHelper = ReactNativeGoogleMobileAdsAdHelper(ad)
149
+ var eventType = ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_LOADED
150
+ var data: WritableMap? = null
149
151
 
150
- if (ad is RewardedAd || ad is RewardedInterstitialAd) {
151
- eventType = ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_REWARDED_LOADED
152
+ if (ad is RewardedAd || ad is RewardedInterstitialAd) {
153
+ eventType = ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_REWARDED_LOADED
152
154
 
153
- val rewardItem = adHelper.rewardItem
154
- data = Arguments.createMap()
155
- data.putString("type", rewardItem.type)
156
- data.putInt("amount", rewardItem.amount)
155
+ val rewardItem = adHelper.rewardItem
156
+ data = Arguments.createMap()
157
+ data.putString("type", rewardItem.type)
158
+ data.putInt("amount", rewardItem.amount)
157
159
 
158
- adRequestOptions.getMap("serverSideVerificationOptions")
159
- ?.let { serverSideVerificationOptions ->
160
- val options =
161
- ServerSideVerificationOptions.Builder()
162
- serverSideVerificationOptions.getString("userId")?.let {
163
- options.setUserId(it)
160
+ adRequestOptions.getMap("serverSideVerificationOptions")
161
+ ?.let { serverSideVerificationOptions ->
162
+ val options =
163
+ ServerSideVerificationOptions.Builder()
164
+ serverSideVerificationOptions.getString("userId")?.let {
165
+ options.setUserId(it)
166
+ }
167
+ serverSideVerificationOptions.getString("customData")?.let {
168
+ options.setCustomData(it)
169
+ }
170
+ adHelper.setServerSideVerificationOptions(options.build())
164
171
  }
165
- serverSideVerificationOptions.getString("customData")?.let {
166
- options.setCustomData(it)
167
- }
168
- adHelper.setServerSideVerificationOptions(options.build())
169
- }
170
- }
171
-
172
- if (ad is AdManagerInterstitialAd) {
173
- adHelper.setAppEventListener { name, eventData ->
174
- val payload = Arguments.createMap()
175
- payload.putString("name", name)
176
- payload.putString("data", eventData)
177
- sendAdEvent(
178
- GOOGLE_MOBILE_ADS_EVENT_APP_EVENT,
179
- requestId,
180
- adUnitId,
181
- null,
182
- payload
183
- )
184
172
  }
185
- }
186
-
187
- val fullScreenContentCallback: FullScreenContentCallback =
188
- object : FullScreenContentCallback() {
189
- override fun onAdShowedFullScreenContent() {
190
- sendAdEvent(ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_OPENED)
191
- }
192
-
193
- override fun onAdDismissedFullScreenContent() {
194
- sendAdEvent(ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_CLOSED)
195
- }
196
173
 
197
- override fun onAdClicked() {
198
- sendAdEvent(ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_CLICKED)
199
- }
200
-
201
- override fun onAdImpression() {
202
- // Not Implemented Yet
203
- }
204
-
205
- private fun sendAdEvent(type: String) {
174
+ if (ad is AdManagerInterstitialAd) {
175
+ adHelper.setAppEventListener { name, eventData ->
176
+ val payload = Arguments.createMap()
177
+ payload.putString("name", name)
178
+ payload.putString("data", eventData)
206
179
  sendAdEvent(
207
- type,
180
+ GOOGLE_MOBILE_ADS_EVENT_APP_EVENT,
208
181
  requestId,
209
182
  adUnitId,
210
183
  null,
211
- null
184
+ payload
212
185
  )
213
186
  }
214
187
  }
215
- adHelper.setFullScreenContentCallback(fullScreenContentCallback)
216
188
 
217
- adArray.put(
218
- requestId,
219
- ad
220
- )
221
- sendAdEvent(
222
- eventType,
223
- requestId,
224
- adUnitId,
225
- null,
226
- data
227
- )
189
+ val fullScreenContentCallback: FullScreenContentCallback =
190
+ object : FullScreenContentCallback() {
191
+ override fun onAdShowedFullScreenContent() {
192
+ sendAdEvent(ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_OPENED)
193
+ }
194
+
195
+ override fun onAdDismissedFullScreenContent() {
196
+ sendAdEvent(ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_CLOSED)
197
+ }
198
+
199
+ override fun onAdClicked() {
200
+ sendAdEvent(ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_CLICKED)
201
+ }
202
+
203
+ override fun onAdImpression() {
204
+ // Not Implemented Yet
205
+ }
206
+
207
+ private fun sendAdEvent(type: String) {
208
+ sendAdEvent(
209
+ type,
210
+ requestId,
211
+ adUnitId,
212
+ null,
213
+ null
214
+ )
215
+ }
216
+ }
217
+ adHelper.setFullScreenContentCallback(fullScreenContentCallback)
218
+
219
+ adArray.put(
220
+ requestId,
221
+ ad
222
+ )
223
+ sendAdEvent(
224
+ eventType,
225
+ requestId,
226
+ adUnitId,
227
+ null,
228
+ data
229
+ )
230
+ } catch (e: Exception) {
231
+ Log.w("RNGoogleMobileAds", "Unknown error on load")
232
+ Log.w("RNGoogleMobileAds", e)
233
+ val error = Arguments.createMap()
234
+ error.putString("code", "internal")
235
+ error.putString("message", e.message)
236
+ sendAdEvent(
237
+ ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_ERROR,
238
+ requestId,
239
+ adUnitId,
240
+ error,
241
+ null
242
+ )
243
+
244
+ }
228
245
  }
229
246
 
230
247
  override fun onAdFailedToLoad(loadAdError: LoadAdError) {
@@ -84,7 +84,7 @@ Return values of the hook are:
84
84
 
85
85
  | Name | Type | Description |
86
86
  | :------------- | :--------------------------------- | :----------------------------------------------------------------------------------------------------------------- |
87
- | isLoaded | boolean | Whether the ad is loaded and ready to to be shown to the user. |
87
+ | isLoaded | boolean | Whether the ad is loaded and ready to to be shown to the user. Automatically set to false when the ad was shown. |
88
88
  | isOpened | boolean | Whether the ad is opened. The value is remained `true` even after the ad is closed unless **new ad is requested**. |
89
89
  | isClosed | boolean | Whether your ad is dismissed. |
90
90
  | isShowing | boolean | Whether your ad is showing. The value is equal with `isOpened && !isClosed`. |
@@ -81,7 +81,8 @@ function useFullScreenAd(ad) {
81
81
 
82
82
  case _AdEventType.AdEventType.CLOSED:
83
83
  setState({
84
- isClosed: true
84
+ isClosed: true,
85
+ isLoaded: false
85
86
  });
86
87
  break;
87
88
 
@@ -1 +1 @@
1
- {"version":3,"sources":["useFullScreenAd.ts"],"names":["initialState","isLoaded","isOpened","isClicked","isClosed","error","undefined","reward","isEarnedReward","useFullScreenAd","ad","state","setState","prevState","newState","isShowing","load","show","showOptions","unsubscribe","addAdEventsListener","type","payload","AdEventType","LOADED","OPENED","CLOSED","CLICKED","ERROR","RewardedAdEventType","EARNED_REWARD"],"mappings":";;;;;;;AAiBA;;AAEA;;AAKA;;AAxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAcA,MAAMA,YAAsB,GAAG;AAC7BC,EAAAA,QAAQ,EAAE,KADmB;AAE7BC,EAAAA,QAAQ,EAAE,KAFmB;AAG7BC,EAAAA,SAAS,EAAE,KAHkB;AAI7BC,EAAAA,QAAQ,EAAE,KAJmB;AAK7BC,EAAAA,KAAK,EAAEC,SALsB;AAM7BC,EAAAA,MAAM,EAAED,SANqB;AAO7BE,EAAAA,cAAc,EAAE;AAPa,CAA/B;;AAUO,SAASC,eAAT,CAELC,EAFK,EAEiB;AACtB,QAAM,CAACC,KAAD,EAAQC,QAAR,IAAoB,uBACxB,CAACC,SAAD,EAAYC,QAAZ,MAA0B,EAAE,GAAGD,SAAL;AAAgB,OAAGC;AAAnB,GAA1B,CADwB,EAExBd,YAFwB,CAA1B;AAIA,QAAMe,SAAS,GAAGJ,KAAK,CAACT,QAAN,IAAkB,CAACS,KAAK,CAACP,QAA3C;AAEA,QAAMY,IAAI,GAAG,wBAAY,MAAM;AAC7B,QAAIN,EAAJ,EAAQ;AACNE,MAAAA,QAAQ,CAACZ,YAAD,CAAR;AACAU,MAAAA,EAAE,CAACM,IAAH;AACD;AACF,GALY,EAKV,CAACN,EAAD,CALU,CAAb;AAOA,QAAMO,IAAI,GAAG,wBACVC,WAAD,IAAiC;AAC/B,QAAIR,EAAJ,EAAQ;AACNA,MAAAA,EAAE,CAACO,IAAH,CAAQC,WAAR;AACD;AACF,GALU,EAMX,CAACR,EAAD,CANW,CAAb;AASA,wBAAU,MAAM;AACdE,IAAAA,QAAQ,CAACZ,YAAD,CAAR;;AACA,QAAI,CAACU,EAAL,EAAS;AACP;AACD;;AACD,UAAMS,WAAW,GAAIT,EAAD,CAAmBU,mBAAnB,CAAuC,QAAuB;AAAA,UAAtB;AAAEC,QAAAA,IAAF;AAAQC,QAAAA;AAAR,OAAsB;;AAChF,cAAQD,IAAR;AACE,aAAKE,yBAAYC,MAAjB;AACEZ,UAAAA,QAAQ,CAAC;AAAEX,YAAAA,QAAQ,EAAE;AAAZ,WAAD,CAAR;AACA;;AACF,aAAKsB,yBAAYE,MAAjB;AACEb,UAAAA,QAAQ,CAAC;AAAEV,YAAAA,QAAQ,EAAE;AAAZ,WAAD,CAAR;AACA;;AACF,aAAKqB,yBAAYG,MAAjB;AACEd,UAAAA,QAAQ,CAAC;AAAER,YAAAA,QAAQ,EAAE;AAAZ,WAAD,CAAR;AACA;;AACF,aAAKmB,yBAAYI,OAAjB;AACEf,UAAAA,QAAQ,CAAC;AAAET,YAAAA,SAAS,EAAE;AAAb,WAAD,CAAR;AACA;;AACF,aAAKoB,yBAAYK,KAAjB;AACEhB,UAAAA,QAAQ,CAAC;AAAEP,YAAAA,KAAK,EAAEiB;AAAT,WAAD,CAAR;AACA;;AACF,aAAKO,yCAAoBL,MAAzB;AACEZ,UAAAA,QAAQ,CAAC;AAAEX,YAAAA,QAAQ,EAAE,IAAZ;AAAkBM,YAAAA,MAAM,EAAEe;AAA1B,WAAD,CAAR;AACA;;AACF,aAAKO,yCAAoBC,aAAzB;AACElB,UAAAA,QAAQ,CAAC;AAAEJ,YAAAA,cAAc,EAAE,IAAlB;AAAwBD,YAAAA,MAAM,EAAEe;AAAhC,WAAD,CAAR;AACA;AArBJ;AAuBD,KAxBmB,CAApB;AAyBA,WAAO,MAAM;AACXH,MAAAA,WAAW;AACZ,KAFD;AAGD,GAjCD,EAiCG,CAACT,EAAD,CAjCH;AAmCA,SAAO,EACL,GAAGC,KADE;AAELI,IAAAA,SAFK;AAGLC,IAAAA,IAHK;AAILC,IAAAA;AAJK,GAAP;AAMD","sourcesContent":["/*\n * Copyright (c) 2016-present Invertase Limited & Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this library except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { Reducer, useCallback, useEffect, useReducer } from 'react';\n\nimport { AdEventType } from '../AdEventType';\nimport { AppOpenAd } from '../ads/AppOpenAd';\nimport { InterstitialAd } from '../ads/InterstitialAd';\nimport { RewardedAd } from '../ads/RewardedAd';\nimport { RewardedInterstitialAd } from '../ads/RewardedInterstitialAd';\nimport { RewardedAdEventType } from '../RewardedAdEventType';\nimport { AdStates, AdHookReturns } from '../types/AdStates';\nimport { AdShowOptions } from '../types/AdShowOptions';\nimport { RewardedAdReward } from '../types/RewardedAdReward';\n\nconst initialState: AdStates = {\n isLoaded: false,\n isOpened: false,\n isClicked: false,\n isClosed: false,\n error: undefined,\n reward: undefined,\n isEarnedReward: false,\n};\n\nexport function useFullScreenAd<\n T extends AppOpenAd | InterstitialAd | RewardedAd | RewardedInterstitialAd | null,\n>(ad: T): AdHookReturns {\n const [state, setState] = useReducer<Reducer<AdStates, Partial<AdStates>>>(\n (prevState, newState) => ({ ...prevState, ...newState }),\n initialState,\n );\n const isShowing = state.isOpened && !state.isClosed;\n\n const load = useCallback(() => {\n if (ad) {\n setState(initialState);\n ad.load();\n }\n }, [ad]);\n\n const show = useCallback(\n (showOptions?: AdShowOptions) => {\n if (ad) {\n ad.show(showOptions);\n }\n },\n [ad],\n );\n\n useEffect(() => {\n setState(initialState);\n if (!ad) {\n return;\n }\n const unsubscribe = (ad as RewardedAd).addAdEventsListener(({ type, payload }) => {\n switch (type) {\n case AdEventType.LOADED:\n setState({ isLoaded: true });\n break;\n case AdEventType.OPENED:\n setState({ isOpened: true });\n break;\n case AdEventType.CLOSED:\n setState({ isClosed: true });\n break;\n case AdEventType.CLICKED:\n setState({ isClicked: true });\n break;\n case AdEventType.ERROR:\n setState({ error: payload as Error });\n break;\n case RewardedAdEventType.LOADED:\n setState({ isLoaded: true, reward: payload as RewardedAdReward });\n break;\n case RewardedAdEventType.EARNED_REWARD:\n setState({ isEarnedReward: true, reward: payload as RewardedAdReward });\n break;\n }\n });\n return () => {\n unsubscribe();\n };\n }, [ad]);\n\n return {\n ...state,\n isShowing,\n load,\n show,\n };\n}\n"]}
1
+ {"version":3,"sources":["useFullScreenAd.ts"],"names":["initialState","isLoaded","isOpened","isClicked","isClosed","error","undefined","reward","isEarnedReward","useFullScreenAd","ad","state","setState","prevState","newState","isShowing","load","show","showOptions","unsubscribe","addAdEventsListener","type","payload","AdEventType","LOADED","OPENED","CLOSED","CLICKED","ERROR","RewardedAdEventType","EARNED_REWARD"],"mappings":";;;;;;;AAiBA;;AAEA;;AAKA;;AAxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAcA,MAAMA,YAAsB,GAAG;AAC7BC,EAAAA,QAAQ,EAAE,KADmB;AAE7BC,EAAAA,QAAQ,EAAE,KAFmB;AAG7BC,EAAAA,SAAS,EAAE,KAHkB;AAI7BC,EAAAA,QAAQ,EAAE,KAJmB;AAK7BC,EAAAA,KAAK,EAAEC,SALsB;AAM7BC,EAAAA,MAAM,EAAED,SANqB;AAO7BE,EAAAA,cAAc,EAAE;AAPa,CAA/B;;AAUO,SAASC,eAAT,CAELC,EAFK,EAEiB;AACtB,QAAM,CAACC,KAAD,EAAQC,QAAR,IAAoB,uBACxB,CAACC,SAAD,EAAYC,QAAZ,MAA0B,EAAE,GAAGD,SAAL;AAAgB,OAAGC;AAAnB,GAA1B,CADwB,EAExBd,YAFwB,CAA1B;AAIA,QAAMe,SAAS,GAAGJ,KAAK,CAACT,QAAN,IAAkB,CAACS,KAAK,CAACP,QAA3C;AAEA,QAAMY,IAAI,GAAG,wBAAY,MAAM;AAC7B,QAAIN,EAAJ,EAAQ;AACNE,MAAAA,QAAQ,CAACZ,YAAD,CAAR;AACAU,MAAAA,EAAE,CAACM,IAAH;AACD;AACF,GALY,EAKV,CAACN,EAAD,CALU,CAAb;AAOA,QAAMO,IAAI,GAAG,wBACVC,WAAD,IAAiC;AAC/B,QAAIR,EAAJ,EAAQ;AACNA,MAAAA,EAAE,CAACO,IAAH,CAAQC,WAAR;AACD;AACF,GALU,EAMX,CAACR,EAAD,CANW,CAAb;AASA,wBAAU,MAAM;AACdE,IAAAA,QAAQ,CAACZ,YAAD,CAAR;;AACA,QAAI,CAACU,EAAL,EAAS;AACP;AACD;;AACD,UAAMS,WAAW,GAAIT,EAAD,CAAmBU,mBAAnB,CAAuC,QAAuB;AAAA,UAAtB;AAAEC,QAAAA,IAAF;AAAQC,QAAAA;AAAR,OAAsB;;AAChF,cAAQD,IAAR;AACE,aAAKE,yBAAYC,MAAjB;AACEZ,UAAAA,QAAQ,CAAC;AAAEX,YAAAA,QAAQ,EAAE;AAAZ,WAAD,CAAR;AACA;;AACF,aAAKsB,yBAAYE,MAAjB;AACEb,UAAAA,QAAQ,CAAC;AAAEV,YAAAA,QAAQ,EAAE;AAAZ,WAAD,CAAR;AACA;;AACF,aAAKqB,yBAAYG,MAAjB;AACEd,UAAAA,QAAQ,CAAC;AAAER,YAAAA,QAAQ,EAAE,IAAZ;AAAkBH,YAAAA,QAAQ,EAAE;AAA5B,WAAD,CAAR;AACA;;AACF,aAAKsB,yBAAYI,OAAjB;AACEf,UAAAA,QAAQ,CAAC;AAAET,YAAAA,SAAS,EAAE;AAAb,WAAD,CAAR;AACA;;AACF,aAAKoB,yBAAYK,KAAjB;AACEhB,UAAAA,QAAQ,CAAC;AAAEP,YAAAA,KAAK,EAAEiB;AAAT,WAAD,CAAR;AACA;;AACF,aAAKO,yCAAoBL,MAAzB;AACEZ,UAAAA,QAAQ,CAAC;AAAEX,YAAAA,QAAQ,EAAE,IAAZ;AAAkBM,YAAAA,MAAM,EAAEe;AAA1B,WAAD,CAAR;AACA;;AACF,aAAKO,yCAAoBC,aAAzB;AACElB,UAAAA,QAAQ,CAAC;AAAEJ,YAAAA,cAAc,EAAE,IAAlB;AAAwBD,YAAAA,MAAM,EAAEe;AAAhC,WAAD,CAAR;AACA;AArBJ;AAuBD,KAxBmB,CAApB;AAyBA,WAAO,MAAM;AACXH,MAAAA,WAAW;AACZ,KAFD;AAGD,GAjCD,EAiCG,CAACT,EAAD,CAjCH;AAmCA,SAAO,EACL,GAAGC,KADE;AAELI,IAAAA,SAFK;AAGLC,IAAAA,IAHK;AAILC,IAAAA;AAJK,GAAP;AAMD","sourcesContent":["/*\n * Copyright (c) 2016-present Invertase Limited & Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this library except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { Reducer, useCallback, useEffect, useReducer } from 'react';\n\nimport { AdEventType } from '../AdEventType';\nimport { AppOpenAd } from '../ads/AppOpenAd';\nimport { InterstitialAd } from '../ads/InterstitialAd';\nimport { RewardedAd } from '../ads/RewardedAd';\nimport { RewardedInterstitialAd } from '../ads/RewardedInterstitialAd';\nimport { RewardedAdEventType } from '../RewardedAdEventType';\nimport { AdStates, AdHookReturns } from '../types/AdStates';\nimport { AdShowOptions } from '../types/AdShowOptions';\nimport { RewardedAdReward } from '../types/RewardedAdReward';\n\nconst initialState: AdStates = {\n isLoaded: false,\n isOpened: false,\n isClicked: false,\n isClosed: false,\n error: undefined,\n reward: undefined,\n isEarnedReward: false,\n};\n\nexport function useFullScreenAd<\n T extends AppOpenAd | InterstitialAd | RewardedAd | RewardedInterstitialAd | null,\n>(ad: T): AdHookReturns {\n const [state, setState] = useReducer<Reducer<AdStates, Partial<AdStates>>>(\n (prevState, newState) => ({ ...prevState, ...newState }),\n initialState,\n );\n const isShowing = state.isOpened && !state.isClosed;\n\n const load = useCallback(() => {\n if (ad) {\n setState(initialState);\n ad.load();\n }\n }, [ad]);\n\n const show = useCallback(\n (showOptions?: AdShowOptions) => {\n if (ad) {\n ad.show(showOptions);\n }\n },\n [ad],\n );\n\n useEffect(() => {\n setState(initialState);\n if (!ad) {\n return;\n }\n const unsubscribe = (ad as RewardedAd).addAdEventsListener(({ type, payload }) => {\n switch (type) {\n case AdEventType.LOADED:\n setState({ isLoaded: true });\n break;\n case AdEventType.OPENED:\n setState({ isOpened: true });\n break;\n case AdEventType.CLOSED:\n setState({ isClosed: true, isLoaded: false });\n break;\n case AdEventType.CLICKED:\n setState({ isClicked: true });\n break;\n case AdEventType.ERROR:\n setState({ error: payload as Error });\n break;\n case RewardedAdEventType.LOADED:\n setState({ isLoaded: true, reward: payload as RewardedAdReward });\n break;\n case RewardedAdEventType.EARNED_REWARD:\n setState({ isEarnedReward: true, reward: payload as RewardedAdReward });\n break;\n }\n });\n return () => {\n unsubscribe();\n };\n }, [ad]);\n\n return {\n ...state,\n isShowing,\n load,\n show,\n };\n}\n"]}
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.version = void 0;
7
7
  // Generated by genversion.
8
- const version = '7.0.0';
8
+ const version = '8.0.1';
9
9
  exports.version = version;
10
10
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["version.ts"],"names":["version"],"mappings":";;;;;;AAAA;AACO,MAAMA,OAAO,GAAG,OAAhB","sourcesContent":["// Generated by genversion.\nexport const version = '7.0.0';\n"]}
1
+ {"version":3,"sources":["version.ts"],"names":["version"],"mappings":";;;;;;AAAA;AACO,MAAMA,OAAO,GAAG,OAAhB","sourcesContent":["// Generated by genversion.\nexport const version = '8.0.1';\n"]}
@@ -70,7 +70,8 @@ export function useFullScreenAd(ad) {
70
70
 
71
71
  case AdEventType.CLOSED:
72
72
  setState({
73
- isClosed: true
73
+ isClosed: true,
74
+ isLoaded: false
74
75
  });
75
76
  break;
76
77
 
@@ -1 +1 @@
1
- {"version":3,"sources":["useFullScreenAd.ts"],"names":["useCallback","useEffect","useReducer","AdEventType","RewardedAdEventType","initialState","isLoaded","isOpened","isClicked","isClosed","error","undefined","reward","isEarnedReward","useFullScreenAd","ad","state","setState","prevState","newState","isShowing","load","show","showOptions","unsubscribe","addAdEventsListener","type","payload","LOADED","OPENED","CLOSED","CLICKED","ERROR","EARNED_REWARD"],"mappings":"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","sourcesContent":["/*\n * Copyright (c) 2016-present Invertase Limited & Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this library except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { Reducer, useCallback, useEffect, useReducer } from 'react';\n\nimport { AdEventType } from '../AdEventType';\nimport { AppOpenAd } from '../ads/AppOpenAd';\nimport { InterstitialAd } from '../ads/InterstitialAd';\nimport { RewardedAd } from '../ads/RewardedAd';\nimport { RewardedInterstitialAd } from '../ads/RewardedInterstitialAd';\nimport { RewardedAdEventType } from '../RewardedAdEventType';\nimport { AdStates, AdHookReturns } from '../types/AdStates';\nimport { AdShowOptions } from '../types/AdShowOptions';\nimport { RewardedAdReward } from '../types/RewardedAdReward';\n\nconst initialState: AdStates = {\n isLoaded: false,\n isOpened: false,\n isClicked: false,\n isClosed: false,\n error: undefined,\n reward: undefined,\n isEarnedReward: false,\n};\n\nexport function useFullScreenAd<\n T extends AppOpenAd | InterstitialAd | RewardedAd | RewardedInterstitialAd | null,\n>(ad: T): AdHookReturns {\n const [state, setState] = useReducer<Reducer<AdStates, Partial<AdStates>>>(\n (prevState, newState) => ({ ...prevState, ...newState }),\n initialState,\n );\n const isShowing = state.isOpened && !state.isClosed;\n\n const load = useCallback(() => {\n if (ad) {\n setState(initialState);\n ad.load();\n }\n }, [ad]);\n\n const show = useCallback(\n (showOptions?: AdShowOptions) => {\n if (ad) {\n ad.show(showOptions);\n }\n },\n [ad],\n );\n\n useEffect(() => {\n setState(initialState);\n if (!ad) {\n return;\n }\n const unsubscribe = (ad as RewardedAd).addAdEventsListener(({ type, payload }) => {\n switch (type) {\n case AdEventType.LOADED:\n setState({ isLoaded: true });\n break;\n case AdEventType.OPENED:\n setState({ isOpened: true });\n break;\n case AdEventType.CLOSED:\n setState({ isClosed: true });\n break;\n case AdEventType.CLICKED:\n setState({ isClicked: true });\n break;\n case AdEventType.ERROR:\n setState({ error: payload as Error });\n break;\n case RewardedAdEventType.LOADED:\n setState({ isLoaded: true, reward: payload as RewardedAdReward });\n break;\n case RewardedAdEventType.EARNED_REWARD:\n setState({ isEarnedReward: true, reward: payload as RewardedAdReward });\n break;\n }\n });\n return () => {\n unsubscribe();\n };\n }, [ad]);\n\n return {\n ...state,\n isShowing,\n load,\n show,\n };\n}\n"]}
1
+ {"version":3,"sources":["useFullScreenAd.ts"],"names":["useCallback","useEffect","useReducer","AdEventType","RewardedAdEventType","initialState","isLoaded","isOpened","isClicked","isClosed","error","undefined","reward","isEarnedReward","useFullScreenAd","ad","state","setState","prevState","newState","isShowing","load","show","showOptions","unsubscribe","addAdEventsListener","type","payload","LOADED","OPENED","CLOSED","CLICKED","ERROR","EARNED_REWARD"],"mappings":"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","sourcesContent":["/*\n * Copyright (c) 2016-present Invertase Limited & Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this library except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { Reducer, useCallback, useEffect, useReducer } from 'react';\n\nimport { AdEventType } from '../AdEventType';\nimport { AppOpenAd } from '../ads/AppOpenAd';\nimport { InterstitialAd } from '../ads/InterstitialAd';\nimport { RewardedAd } from '../ads/RewardedAd';\nimport { RewardedInterstitialAd } from '../ads/RewardedInterstitialAd';\nimport { RewardedAdEventType } from '../RewardedAdEventType';\nimport { AdStates, AdHookReturns } from '../types/AdStates';\nimport { AdShowOptions } from '../types/AdShowOptions';\nimport { RewardedAdReward } from '../types/RewardedAdReward';\n\nconst initialState: AdStates = {\n isLoaded: false,\n isOpened: false,\n isClicked: false,\n isClosed: false,\n error: undefined,\n reward: undefined,\n isEarnedReward: false,\n};\n\nexport function useFullScreenAd<\n T extends AppOpenAd | InterstitialAd | RewardedAd | RewardedInterstitialAd | null,\n>(ad: T): AdHookReturns {\n const [state, setState] = useReducer<Reducer<AdStates, Partial<AdStates>>>(\n (prevState, newState) => ({ ...prevState, ...newState }),\n initialState,\n );\n const isShowing = state.isOpened && !state.isClosed;\n\n const load = useCallback(() => {\n if (ad) {\n setState(initialState);\n ad.load();\n }\n }, [ad]);\n\n const show = useCallback(\n (showOptions?: AdShowOptions) => {\n if (ad) {\n ad.show(showOptions);\n }\n },\n [ad],\n );\n\n useEffect(() => {\n setState(initialState);\n if (!ad) {\n return;\n }\n const unsubscribe = (ad as RewardedAd).addAdEventsListener(({ type, payload }) => {\n switch (type) {\n case AdEventType.LOADED:\n setState({ isLoaded: true });\n break;\n case AdEventType.OPENED:\n setState({ isOpened: true });\n break;\n case AdEventType.CLOSED:\n setState({ isClosed: true, isLoaded: false });\n break;\n case AdEventType.CLICKED:\n setState({ isClicked: true });\n break;\n case AdEventType.ERROR:\n setState({ error: payload as Error });\n break;\n case RewardedAdEventType.LOADED:\n setState({ isLoaded: true, reward: payload as RewardedAdReward });\n break;\n case RewardedAdEventType.EARNED_REWARD:\n setState({ isEarnedReward: true, reward: payload as RewardedAdReward });\n break;\n }\n });\n return () => {\n unsubscribe();\n };\n }, [ad]);\n\n return {\n ...state,\n isShowing,\n load,\n show,\n };\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  // Generated by genversion.
2
- export const version = '7.0.0';
2
+ export const version = '8.0.1';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["version.ts"],"names":["version"],"mappings":"AAAA;AACA,OAAO,MAAMA,OAAO,GAAG,OAAhB","sourcesContent":["// Generated by genversion.\nexport const version = '7.0.0';\n"]}
1
+ {"version":3,"sources":["version.ts"],"names":["version"],"mappings":"AAAA;AACA,OAAO,MAAMA,OAAO,GAAG,OAAhB","sourcesContent":["// Generated by genversion.\nexport const version = '8.0.1';\n"]}
@@ -1,4 +1,4 @@
1
- export declare const SDK_VERSION = "7.0.0";
1
+ export declare const SDK_VERSION = "8.0.1";
2
2
  export { default, MobileAds } from './MobileAds';
3
3
  export { AdsConsentDebugGeography } from './AdsConsentDebugGeography';
4
4
  export { AdsConsentPurposes } from './AdsConsentPurposes';
@@ -1 +1 @@
1
- export declare const version = "7.0.0";
1
+ export declare const version = "8.0.1";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-google-mobile-ads",
3
- "version": "7.0.0",
3
+ "version": "8.0.1",
4
4
  "author": "Invertase <oss@invertase.io> (http://invertase.io)",
5
5
  "description": "React Native Google Mobile Ads is an easy way to monetize mobile apps with targeted, in-app advertising.",
6
6
  "main": "lib/commonjs/index.js",
@@ -41,7 +41,7 @@
41
41
  ],
42
42
  "sdkVersions": {
43
43
  "ios": {
44
- "googleMobileAds": "9.6.0",
44
+ "googleMobileAds": "9.9.0",
45
45
  "googleUmp": "2.0.0"
46
46
  },
47
47
  "android": {
@@ -49,7 +49,7 @@
49
49
  "targetSdk": 30,
50
50
  "compileSdk": 31,
51
51
  "buildTools": "31.0.0",
52
- "googleMobileAds": "21.0.0",
52
+ "googleMobileAds": "21.1.0",
53
53
  "googleUmp": "2.0.0"
54
54
  }
55
55
  },
@@ -76,7 +76,7 @@ export function useFullScreenAd<
76
76
  setState({ isOpened: true });
77
77
  break;
78
78
  case AdEventType.CLOSED:
79
- setState({ isClosed: true });
79
+ setState({ isClosed: true, isLoaded: false });
80
80
  break;
81
81
  case AdEventType.CLICKED:
82
82
  setState({ isClicked: true });
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- export const version = '7.0.0';
2
+ export const version = '8.0.1';