cloudx-react-native 3.10.1 → 3.11.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.
Files changed (78) hide show
  1. package/android/build.gradle +1 -1
  2. package/android/src/main/java/com/cloudxreactnative/CloudXAdEvents.kt +9 -0
  3. package/android/src/main/java/com/cloudxreactnative/CloudXAdInfo.kt +76 -0
  4. package/android/src/main/java/com/cloudxreactnative/CloudXModuleImpl.kt +110 -0
  5. package/android/src/main/java/com/cloudxreactnative/CloudXNativeAdHolder.kt +184 -0
  6. package/android/src/main/java/com/cloudxreactnative/CloudXNativeAdView.kt +209 -70
  7. package/android/src/main/java/com/cloudxreactnative/CloudXNativeAdViewManagerImpl.kt +6 -0
  8. package/android/src/newarch/com/cloudxreactnative/CloudXModule.kt +9 -0
  9. package/android/src/newarch/com/cloudxreactnative/CloudXNativeAdViewManager.kt +2 -0
  10. package/android/src/oldarch/com/cloudxreactnative/CloudXModule.kt +14 -0
  11. package/android/src/oldarch/com/cloudxreactnative/CloudXNativeAdViewManager.kt +3 -0
  12. package/android/src/test/java/com/cloudxreactnative/CloudXNativeAdPreloadTest.kt +351 -0
  13. package/android/src/test/java/com/cloudxreactnative/FakeReadable.kt +2 -2
  14. package/cloudx-react-native.podspec +1 -1
  15. package/ios/CloudX.h +12 -0
  16. package/ios/CloudX.mm +94 -1
  17. package/ios/CloudXNativeAdHolder.h +66 -0
  18. package/ios/CloudXNativeAdHolder.mm +247 -0
  19. package/ios/CloudXNativeAdView.h +9 -0
  20. package/ios/CloudXNativeAdView.mm +308 -64
  21. package/ios/CloudXNativeAdViewManager.mm +7 -0
  22. package/lib/commonjs/CloudXNativeAd.js +178 -0
  23. package/lib/commonjs/CloudXNativeAd.js.map +1 -0
  24. package/lib/commonjs/CloudXNativeAdView.js +58 -11
  25. package/lib/commonjs/CloudXNativeAdView.js.map +1 -1
  26. package/lib/commonjs/hooks.js +203 -0
  27. package/lib/commonjs/hooks.js.map +1 -1
  28. package/lib/commonjs/index.js +13 -0
  29. package/lib/commonjs/index.js.map +1 -1
  30. package/lib/commonjs/specs/CloudXNativeAdViewNativeComponent.js +2 -0
  31. package/lib/commonjs/specs/CloudXNativeAdViewNativeComponent.js.map +1 -1
  32. package/lib/commonjs/specs/NativeCloudX.js.map +1 -1
  33. package/lib/commonjs/types/NativeAd.js +21 -1
  34. package/lib/commonjs/types/NativeAd.js.map +1 -1
  35. package/lib/commonjs/types/index.js.map +1 -1
  36. package/lib/commonjs/version.js +1 -1
  37. package/lib/module/CloudXNativeAd.js +170 -0
  38. package/lib/module/CloudXNativeAd.js.map +1 -0
  39. package/lib/module/CloudXNativeAdView.js +58 -11
  40. package/lib/module/CloudXNativeAdView.js.map +1 -1
  41. package/lib/module/hooks.js +202 -0
  42. package/lib/module/hooks.js.map +1 -1
  43. package/lib/module/index.js +2 -1
  44. package/lib/module/index.js.map +1 -1
  45. package/lib/module/specs/CloudXNativeAdViewNativeComponent.js +2 -0
  46. package/lib/module/specs/CloudXNativeAdViewNativeComponent.js.map +1 -1
  47. package/lib/module/specs/NativeCloudX.js.map +1 -1
  48. package/lib/module/types/NativeAd.js +26 -1
  49. package/lib/module/types/NativeAd.js.map +1 -1
  50. package/lib/module/types/index.js.map +1 -1
  51. package/lib/module/version.js +1 -1
  52. package/lib/typescript/src/CloudXNativeAd.d.ts +58 -0
  53. package/lib/typescript/src/CloudXNativeAd.d.ts.map +1 -0
  54. package/lib/typescript/src/CloudXNativeAdView.d.ts +6 -13
  55. package/lib/typescript/src/CloudXNativeAdView.d.ts.map +1 -1
  56. package/lib/typescript/src/hooks.d.ts +30 -0
  57. package/lib/typescript/src/hooks.d.ts.map +1 -1
  58. package/lib/typescript/src/index.d.ts +4 -3
  59. package/lib/typescript/src/index.d.ts.map +1 -1
  60. package/lib/typescript/src/specs/CloudXNativeAdViewNativeComponent.d.ts +23 -2
  61. package/lib/typescript/src/specs/CloudXNativeAdViewNativeComponent.d.ts.map +1 -1
  62. package/lib/typescript/src/specs/NativeCloudX.d.ts +13 -0
  63. package/lib/typescript/src/specs/NativeCloudX.d.ts.map +1 -1
  64. package/lib/typescript/src/types/NativeAd.d.ts +76 -13
  65. package/lib/typescript/src/types/NativeAd.d.ts.map +1 -1
  66. package/lib/typescript/src/types/index.d.ts +1 -1
  67. package/lib/typescript/src/types/index.d.ts.map +1 -1
  68. package/lib/typescript/src/version.d.ts +1 -1
  69. package/package.json +1 -1
  70. package/src/CloudXNativeAd.ts +177 -0
  71. package/src/CloudXNativeAdView.tsx +82 -15
  72. package/src/hooks.ts +236 -0
  73. package/src/index.ts +14 -1
  74. package/src/specs/CloudXNativeAdViewNativeComponent.ts +27 -2
  75. package/src/specs/NativeCloudX.ts +20 -0
  76. package/src/types/NativeAd.ts +85 -18
  77. package/src/types/index.ts +4 -0
  78. package/src/version.ts +1 -1
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CloudXNativeAd = void 0;
7
+ var _EventEmitter = require("./EventEmitter");
8
+ var _extraParameters = require("./extraParameters");
9
+ var _NativeCloudX = _interopRequireDefault(require("./specs/NativeCloudX"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const {
12
+ ON_NATIVE_AD_CLICKED_EVENT,
13
+ ON_NATIVE_AD_EXPIRED_EVENT,
14
+ ON_NATIVE_AD_CLOSED_EVENT,
15
+ ON_NATIVE_AD_REVENUE_PAID
16
+ } = _NativeCloudX.default.getConstants();
17
+ const toAdInfo = (payload, adUnitId) => ({
18
+ adUnitId: payload.adUnitId ?? adUnitId,
19
+ adFormat: payload.adFormat ?? 'NATIVE',
20
+ networkName: payload.networkName ?? '',
21
+ networkPlacement: payload.networkPlacement ?? null,
22
+ placement: payload.placement ?? null,
23
+ creativeId: payload.creativeId ?? null,
24
+ revenue: payload.revenue ?? 0,
25
+ adValues: payload.adValues ?? {},
26
+ nativeAd: payload.nativeAd ?? null
27
+ });
28
+
29
+ // Live handles by native id. Native events arrive on the module-wide emitter
30
+ // and are routed here, so a handle never hears another ad's events.
31
+ const liveAds = new Map();
32
+ let routingSubscriptions = null;
33
+ const ensureEventRouting = () => {
34
+ if (routingSubscriptions) return;
35
+ const route = type => payload => {
36
+ const ad = payload.nativeAdId ? liveAds.get(payload.nativeAdId) : undefined;
37
+ ad === null || ad === void 0 || ad._handleNativeEvent(type, payload);
38
+ };
39
+ // Subscribe on the shared emitter directly: the module-level
40
+ // addEventListener helper keeps one listener per event name and would
41
+ // replace a publisher's own subscription.
42
+ routingSubscriptions = [_EventEmitter.emitter.addListener(ON_NATIVE_AD_CLICKED_EVENT, route('clicked')), _EventEmitter.emitter.addListener(ON_NATIVE_AD_REVENUE_PAID, route('revenuePaid')), _EventEmitter.emitter.addListener(ON_NATIVE_AD_EXPIRED_EVENT, route('expired')), _EventEmitter.emitter.addListener(ON_NATIVE_AD_CLOSED_EVENT, route('closed'))];
43
+ };
44
+ const toLoadFailedInfo = (adUnitId, error) => {
45
+ const {
46
+ code,
47
+ message
48
+ } = error ?? {};
49
+ const numeric = Number(code);
50
+ return {
51
+ adUnitId,
52
+ code: Number.isFinite(numeric) ? numeric : 0,
53
+ message: typeof message === 'string' ? message : null
54
+ };
55
+ };
56
+
57
+ /**
58
+ * A native ad loaded ahead of its view.
59
+ *
60
+ * Load it whenever it suits the app, then render it with
61
+ * `<CloudXNativeAdView nativeAd={ad} />`. The handle owns the ad: unmounting a
62
+ * view never destroys it, and its impression is counted once. Clicks, revenue,
63
+ * expiry and close are reported here, not on the view.
64
+ *
65
+ * Moving an ad to another view differs by platform:
66
+ * - iOS: mount another view with the same ad and it shows there; the latest
67
+ * view wins.
68
+ * - Android: once the ad has been shown in a view, it stays with that view.
69
+ * Any other view, including a remounted list cell or a reopened screen,
70
+ * reports `onAdDisplayFailed` with `AD_ALREADY_SHOWING`. Load a fresh ad
71
+ * for each new view.
72
+ *
73
+ * An ad that expires before its impression (its `revenuePaid` event) reports
74
+ * `expired` on both platforms, even if it was already shown in a view.
75
+ *
76
+ * Call `destroy()` when the ad is no longer needed.
77
+ */
78
+ class CloudXNativeAd {
79
+ /** Ad info as of load. Revenue callbacks carry the impression-time values. */
80
+
81
+ /** Asset metadata for manual layouts; `null` if the network reported none. */
82
+
83
+ expired = false;
84
+ destroyed = false;
85
+ listeners = new Map();
86
+
87
+ /**
88
+ * Loads a native ad without a view. Resolves once the ad is held natively;
89
+ * rejects with a `CloudXAdLoadFailedInfo`.
90
+ *
91
+ * Loads per ad unit are limited, so preload several ads one after another
92
+ * rather than all at once.
93
+ */
94
+ static async load(adUnitId, options = {}) {
95
+ var _result;
96
+ ensureEventRouting();
97
+ // Extra parameters cross the bridge as {key, value} entries, the same
98
+ // wire format CloudXNativeAdView sends, so both native load paths
99
+ // configure the loader through one helper.
100
+ const wireOptions = {
101
+ ...options,
102
+ extraParameters: (0, _extraParameters.toNativeExtraParameterEntries)(options.extraParameters),
103
+ localExtraParameters: (0, _extraParameters.toNativeExtraParameterEntries)(options.localExtraParameters)
104
+ };
105
+ let result;
106
+ try {
107
+ result = await _NativeCloudX.default.loadNativeAd(adUnitId, wireOptions);
108
+ } catch (error) {
109
+ throw toLoadFailedInfo(adUnitId, error);
110
+ }
111
+ if (!((_result = result) !== null && _result !== void 0 && _result.nativeAdId)) {
112
+ throw toLoadFailedInfo(adUnitId, {
113
+ code: 0,
114
+ message: 'Native module returned no native ad id'
115
+ });
116
+ }
117
+ return new CloudXNativeAd(result.nativeAdId, adUnitId, result.adInfo ?? {});
118
+ }
119
+ constructor(id, adUnitId, payload) {
120
+ this.id = id;
121
+ this.adUnitId = adUnitId;
122
+ this.info = toAdInfo(payload, adUnitId);
123
+ this.metadata = this.info.nativeAd ?? null;
124
+ liveAds.set(id, this);
125
+ }
126
+ get isExpired() {
127
+ return this.expired;
128
+ }
129
+ get isDestroyed() {
130
+ return this.destroyed;
131
+ }
132
+ addListener(type, listener) {
133
+ if (this.destroyed) {
134
+ console.warn(`CloudXNativeAd(${this.id}): addListener('${type}') after destroy() never fires.`);
135
+ return {
136
+ remove: () => undefined
137
+ };
138
+ }
139
+ let set = this.listeners.get(type);
140
+ if (!set) {
141
+ set = new Set();
142
+ this.listeners.set(type, set);
143
+ }
144
+ set.add(listener);
145
+ return {
146
+ remove: () => {
147
+ var _this$listeners$get;
148
+ return (_this$listeners$get = this.listeners.get(type)) === null || _this$listeners$get === void 0 ? void 0 : _this$listeners$get.delete(listener);
149
+ }
150
+ };
151
+ }
152
+
153
+ /** Releases the native ad. Safe to call more than once. */
154
+ destroy() {
155
+ if (this.destroyed) return;
156
+ this.destroyed = true;
157
+ liveAds.delete(this.id);
158
+ this.listeners.clear();
159
+ _NativeCloudX.default.destroyNativeAd(this.id);
160
+ }
161
+
162
+ /** @internal Routed from the module emitter; not part of the public API. */
163
+ _handleNativeEvent(type, payload) {
164
+ var _this$listeners$get2;
165
+ if (this.destroyed) return;
166
+ if (type === 'expired') this.expired = true;
167
+ const adInfo = toAdInfo(payload, this.adUnitId);
168
+ (_this$listeners$get2 = this.listeners.get(type)) === null || _this$listeners$get2 === void 0 || _this$listeners$get2.forEach(listener => {
169
+ try {
170
+ listener(adInfo);
171
+ } catch (error) {
172
+ console.error(`CloudXNativeAd(${this.id}): '${type}' listener threw`, error);
173
+ }
174
+ });
175
+ }
176
+ }
177
+ exports.CloudXNativeAd = CloudXNativeAd;
178
+ //# sourceMappingURL=CloudXNativeAd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_EventEmitter","require","_extraParameters","_NativeCloudX","_interopRequireDefault","e","__esModule","default","ON_NATIVE_AD_CLICKED_EVENT","ON_NATIVE_AD_EXPIRED_EVENT","ON_NATIVE_AD_CLOSED_EVENT","ON_NATIVE_AD_REVENUE_PAID","NativeCloudX","getConstants","toAdInfo","payload","adUnitId","adFormat","networkName","networkPlacement","placement","creativeId","revenue","adValues","nativeAd","liveAds","Map","routingSubscriptions","ensureEventRouting","route","type","ad","nativeAdId","get","undefined","_handleNativeEvent","emitter","addListener","toLoadFailedInfo","error","code","message","numeric","Number","isFinite","CloudXNativeAd","expired","destroyed","listeners","load","options","_result","wireOptions","extraParameters","toNativeExtraParameterEntries","localExtraParameters","result","loadNativeAd","adInfo","constructor","id","info","metadata","set","isExpired","isDestroyed","listener","console","warn","remove","Set","add","_this$listeners$get","delete","destroy","clear","destroyNativeAd","_this$listeners$get2","forEach","exports"],"sourceRoot":"../../src","sources":["CloudXNativeAd.ts"],"mappings":"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","ignoreList":[]}
@@ -56,21 +56,38 @@ const toLoadFailedInfo = event => ({
56
56
  message: event.message || null
57
57
  });
58
58
 
59
+ // Props that only mean something when the view loads its own ad. Passing one
60
+ // next to `nativeAd` is a type error, but plain-JS callers can still do it.
61
+ const AUTO_LOAD_ONLY_PROPS = ['adUnitId', 'placement', 'customData', 'extraParameters', 'localExtraParameters', 'disableVideoFullScreen', 'startVideoUnmuted', 'hideVideoMediaControls', 'onAdLoaded', 'onAdLoadFailed', 'onAdClicked', 'onAdRevenuePaid', 'onAdExpired', 'onAdClosed'];
62
+
59
63
  /**
60
64
  * Renders a native ad. Defaults to the SDK's bundled template layouts;
61
65
  * set `renderMode="manual"` to drive layout through the pre-built asset
62
66
  * components (`CloudXTitleView`, `CloudXMediaView`, etc.) instead.
63
67
  *
68
+ * Pass `adUnitId` and the view loads its own ad on attach. Pass `nativeAd`
69
+ * (from `CloudXNativeAd.load`) and it renders that ad instead, without
70
+ * loading or destroying it.
71
+ *
64
72
  * Manual mode is never inferred from the presence of children — `renderMode`
65
73
  * is always explicit so a publisher's intent is visible at the call site.
66
74
  */
67
75
  const CloudXNativeAdView = exports.CloudXNativeAdView = /*#__PURE__*/(0, _react.forwardRef)(function CloudXNativeAdView(props, ref) {
76
+ var _props$nativeAd;
68
77
  const {
69
78
  renderMode = 'template',
70
79
  style,
71
80
  testID,
72
81
  children
73
82
  } = props;
83
+ const warnedMixedProps = (0, _react.useRef)(false);
84
+ if (__DEV__ && props.nativeAd && !warnedMixedProps.current) {
85
+ const ignored = AUTO_LOAD_ONLY_PROPS.filter(name => Reflect.get(props, name) != null);
86
+ if (ignored.length > 0) {
87
+ warnedMixedProps.current = true;
88
+ console.warn(`CloudXNativeAdView: ${ignored.join(', ')} ignored because nativeAd is set. ` + 'Pass load options to CloudXNativeAd.load() and subscribe to clicks, revenue, ' + 'expiry and close with nativeAd.addListener().');
89
+ }
90
+ }
74
91
 
75
92
  /*
76
93
  * Gate native ad-view creation on SDK initialization; shared with
@@ -105,7 +122,12 @@ const CloudXNativeAdView = exports.CloudXNativeAdView = /*#__PURE__*/(0, _react.
105
122
  testID: testID
106
123
  }, children));
107
124
  }
125
+
126
+ // Keyed by the bound handle: swapping `nativeAd` remounts the provider
127
+ // and native view, so the previous ad's metadata and asset bindings
128
+ // can never be shown under the new ad's click and impression tracking.
108
129
  return /*#__PURE__*/React.createElement(_CloudXNativeAdViewProvider.CloudXNativeAdViewProvider, {
130
+ key: (_props$nativeAd = props.nativeAd) === null || _props$nativeAd === void 0 ? void 0 : _props$nativeAd.id,
109
131
  onAssetRoleRegistered: handleAssetRoleRegistered
110
132
  }, /*#__PURE__*/React.createElement(CloudXNativeAdViewImpl, _extends({}, props, {
111
133
  ref: ref
@@ -124,8 +146,10 @@ const CloudXNativeAdViewImpl = /*#__PURE__*/(0, _react.forwardRef)(function Clou
124
146
  extraParameters,
125
147
  localExtraParameters,
126
148
  renderMode = 'template',
149
+ nativeAd,
127
150
  onAdLoaded,
128
151
  onAdLoadFailed,
152
+ onAdDisplayed,
129
153
  onAdDisplayFailed,
130
154
  onAdClicked,
131
155
  onAdExpired,
@@ -137,6 +161,7 @@ const CloudXNativeAdViewImpl = /*#__PURE__*/(0, _react.forwardRef)(function Clou
137
161
  ...rest
138
162
  } = props;
139
163
  const isManual = renderMode === 'manual';
164
+ const isPreloaded = nativeAd != null;
140
165
  const {
141
166
  setNativeAd,
142
167
  titleRef,
@@ -158,11 +183,13 @@ const CloudXNativeAdViewImpl = /*#__PURE__*/(0, _react.forwardRef)(function Clou
158
183
  const lastAdInfoRef = (0, _react.useRef)(null);
159
184
  const [bindTick, setBindTick] = (0, _react.useState)(0);
160
185
  const loadAd = (0, _react.useCallback)(() => {
161
- if (nativeRef.current) {
186
+ if (nativeRef.current && !isPreloaded) {
162
187
  _CloudXNativeAdViewNativeComponent.Commands.loadAd(nativeRef.current);
163
188
  }
164
- }, []);
189
+ }, [isPreloaded]);
165
190
  const destroyAd = (0, _react.useCallback)(() => {
191
+ // A preloaded ad belongs to its handle, not to this view.
192
+ if (isPreloaded) return;
166
193
  if (nativeRef.current) {
167
194
  _CloudXNativeAdViewNativeComponent.Commands.destroyAd(nativeRef.current);
168
195
  }
@@ -171,7 +198,7 @@ const CloudXNativeAdViewImpl = /*#__PURE__*/(0, _react.forwardRef)(function Clou
171
198
  pendingMetadata.current = null;
172
199
  lastAdInfoRef.current = null;
173
200
  setNativeAd(null);
174
- }, [setNativeAd]);
201
+ }, [isPreloaded, setNativeAd]);
175
202
 
176
203
  /**
177
204
  * Escape hatch for imperative control. The native view auto-loads on
@@ -199,13 +226,28 @@ const CloudXNativeAdViewImpl = /*#__PURE__*/(0, _react.forwardRef)(function Clou
199
226
  const handleAdLoaded = (0, _react.useCallback)(event => {
200
227
  const adInfo = toAdInfo(event.nativeEvent);
201
228
  lastAdInfoRef.current = adInfo;
202
- if (isManual && adInfo.nativeAd) {
203
- pendingMetadata.current = adInfo.nativeAd;
204
- setNativeAd(adInfo.nativeAd);
229
+
230
+ // A preloaded ad's metadata travelled with the handle, so a
231
+ // bind event that omits it still has assets to lay out.
232
+ const metadata = adInfo.nativeAd ?? (nativeAd === null || nativeAd === void 0 ? void 0 : nativeAd.metadata) ?? null;
233
+ if (isManual && metadata) {
234
+ pendingMetadata.current = metadata;
235
+ setNativeAd(metadata);
205
236
  setBindTick(n => n + 1);
206
237
  }
207
238
  onAdLoaded === null || onAdLoaded === void 0 || onAdLoaded(adInfo);
208
- }, [isManual, setNativeAd, onAdLoaded]);
239
+ }, [isManual, nativeAd, setNativeAd, onAdLoaded]);
240
+
241
+ // Native released the preloaded ad this view showed (destroy, expiry,
242
+ // or a newer view took it). Its React-rendered text and images must
243
+ // go with it, and any asset binds still pending must stop. Silent:
244
+ // a transfer to another view is not a publisher lifecycle event.
245
+ const handleBindingCleared = (0, _react.useCallback)(() => {
246
+ pendingMetadata.current = null;
247
+ lastAdInfoRef.current = null;
248
+ setNativeAd(null);
249
+ }, [setNativeAd]);
250
+ const handleAdDisplayed = (0, _react.useCallback)(event => onAdDisplayed === null || onAdDisplayed === void 0 ? void 0 : onAdDisplayed(toAdInfo(event.nativeEvent)), [onAdDisplayed]);
209
251
  const handleAdLoadFailed = (0, _react.useCallback)(event => {
210
252
  onAdLoadFailed === null || onAdLoadFailed === void 0 || onAdLoadFailed(toLoadFailedInfo(event.nativeEvent));
211
253
  }, [onAdLoadFailed]);
@@ -220,8 +262,10 @@ const CloudXNativeAdViewImpl = /*#__PURE__*/(0, _react.forwardRef)(function Clou
220
262
  // failure if it describes the ad unit that actually failed. A
221
263
  // display failure arriving after a re-target would otherwise
222
264
  // report the previous unit's network, placement and revenue.
223
- const cached = lastAdInfoRef.current;
224
- const base = cached && cached.adUnitId === failedAdUnitId ? cached : null;
265
+ // A preloaded ad can fail before it ever rendered here (e.g. the
266
+ // handle was destroyed), so fall back to its load-time info.
267
+ const cached = lastAdInfoRef.current ?? (nativeAd === null || nativeAd === void 0 ? void 0 : nativeAd.info) ?? null;
268
+ const base = cached && (!failedAdUnitId || cached.adUnitId === failedAdUnitId) ? cached : null;
225
269
  const displayFailedInfo = {
226
270
  // The event's own adUnitId is authoritative.
227
271
  adUnitId: failedAdUnitId || (base === null || base === void 0 ? void 0 : base.adUnitId) || '',
@@ -236,7 +280,7 @@ const CloudXNativeAdViewImpl = /*#__PURE__*/(0, _react.forwardRef)(function Clou
236
280
  message: message || null
237
281
  };
238
282
  onAdDisplayFailed(displayFailedInfo);
239
- }, [onAdDisplayFailed]);
283
+ }, [nativeAd, onAdDisplayFailed]);
240
284
  const handleAdClicked = (0, _react.useCallback)(event => onAdClicked === null || onAdClicked === void 0 ? void 0 : onAdClicked(toAdInfo(event.nativeEvent)), [onAdClicked]);
241
285
  const handleAdExpired = (0, _react.useCallback)(event => onAdExpired === null || onAdExpired === void 0 ? void 0 : onAdExpired(toAdInfo(event.nativeEvent)), [onAdExpired]);
242
286
  const handleAdClosed = (0, _react.useCallback)(event => onAdClosed === null || onAdClosed === void 0 ? void 0 : onAdClosed(toAdInfo(event.nativeEvent)), [onAdClosed]);
@@ -307,7 +351,8 @@ const CloudXNativeAdViewImpl = /*#__PURE__*/(0, _react.forwardRef)(function Clou
307
351
  ref: r => {
308
352
  nativeRef.current = r;
309
353
  },
310
- adUnitId: adUnitId,
354
+ adUnitId: isPreloaded ? null : adUnitId,
355
+ nativeAdId: (nativeAd === null || nativeAd === void 0 ? void 0 : nativeAd.id) ?? null,
311
356
  templateName: template,
312
357
  placement: placement ?? null,
313
358
  customData: customData ?? null,
@@ -319,7 +364,9 @@ const CloudXNativeAdViewImpl = /*#__PURE__*/(0, _react.forwardRef)(function Clou
319
364
  manualRender: isManual,
320
365
  onAdLoadedEvent: handleAdLoaded,
321
366
  onAdLoadFailedEvent: handleAdLoadFailed,
367
+ onAdDisplayedEvent: handleAdDisplayed,
322
368
  onAdDisplayFailedEvent: handleAdDisplayFailed,
369
+ onAdBindingClearedEvent: handleBindingCleared,
323
370
  onAdClickedEvent: handleAdClicked,
324
371
  onAdExpiredEvent: handleAdExpired,
325
372
  onAdClosedEvent: handleAdClosed,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","React","_reactNative","_CloudXNativeAdViewNativeComponent","_extraParameters","_NativeAd","_CloudXNativeAdViewProvider","_useCloudXSdkInitialization","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","parseAdValues","json","parsed","JSON","parse","parseNativeAdMetadata","toAdInfo","event","nativeAd","nativeAdJson","adUnitId","adFormat","networkName","networkPlacement","placement","creativeId","revenue","adValues","adValuesJson","toLoadFailedInfo","code","message","CloudXNativeAdView","exports","forwardRef","props","ref","renderMode","style","testID","children","isInitialized","useCloudXSdkInitializationGate","warnedAssetInTemplateMode","useRef","handleAssetRoleRegistered","useCallback","role","current","console","warn","createElement","CloudXNativeAdViewProvider","onAssetRoleRegistered","View","CloudXNativeAdViewImpl","_default","customData","template","disableVideoFullScreen","startVideoUnmuted","hideVideoMediaControls","extraParameters","localExtraParameters","onAdLoaded","onAdLoadFailed","onAdDisplayFailed","onAdClicked","onAdExpired","onAdClosed","onAdRevenuePaid","rest","isManual","setNativeAd","titleRef","advertiserRef","bodyRef","callToActionRef","iconRef","optionsRef","mediaRef","starRatingRef","mountedAssetRoles","useContext","CloudXNativeAdViewContext","nativeRef","pendingMetadata","lastAdInfoRef","bindTick","setBindTick","useState","loadAd","Commands","destroyAd","useImperativeHandle","nativeExtraParameters","useMemo","toNativeExtraParameterEntries","nativeLocalExtraParameters","bindAssetView","assetRef","assetName","assetTag","findNodeHandle","updateAssetView","handleAdLoaded","adInfo","nativeEvent","handleAdLoadFailed","handleAdDisplayFailed","failedAdUnitId","cached","base","displayFailedInfo","handleAdClicked","handleAdExpired","handleAdClosed","handleAdRevenuePaid","useEffect","metadata","iconAvailable","isIconImageAvailable","plan","CloudXNativeAssetType","TITLE","Boolean","title","ADVERTISER","advertiser","BODY","body","CALL_TO_ACTION","callToAction","ICON","OPTIONS","isOptionsViewAvailable","MEDIA","isMediaViewAvailable","STAR_RATING","starRating","MAX_BIND_ATTEMPTS","cancelled","pendingTimers","Set","scheduleRetry","fn","timer","setTimeout","add","attemptBind","attempt","remaining","wanted","delete","size","join","renderNativeAd","filter","name","w","map","forEach","clearTimeout","clear","templateName","manualRender","onAdLoadedEvent","onAdLoadFailedEvent","onAdDisplayFailedEvent","onAdClickedEvent","onAdExpiredEvent","onAdClosedEvent","onAdRevenuePaidEvent"],"sourceRoot":"../../src","sources":["CloudXNativeAdView.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","React","_reactNative","_CloudXNativeAdViewNativeComponent","_extraParameters","_NativeAd","_CloudXNativeAdViewProvider","_useCloudXSdkInitialization","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","parseAdValues","json","parsed","JSON","parse","parseNativeAdMetadata","toAdInfo","event","nativeAd","nativeAdJson","adUnitId","adFormat","networkName","networkPlacement","placement","creativeId","revenue","adValues","adValuesJson","toLoadFailedInfo","code","message","AUTO_LOAD_ONLY_PROPS","CloudXNativeAdView","exports","forwardRef","props","ref","_props$nativeAd","renderMode","style","testID","children","warnedMixedProps","useRef","__DEV__","current","ignored","filter","name","Reflect","console","warn","join","isInitialized","useCloudXSdkInitializationGate","warnedAssetInTemplateMode","handleAssetRoleRegistered","useCallback","role","createElement","CloudXNativeAdViewProvider","onAssetRoleRegistered","View","key","id","CloudXNativeAdViewImpl","_default","customData","template","disableVideoFullScreen","startVideoUnmuted","hideVideoMediaControls","extraParameters","localExtraParameters","onAdLoaded","onAdLoadFailed","onAdDisplayed","onAdDisplayFailed","onAdClicked","onAdExpired","onAdClosed","onAdRevenuePaid","rest","isManual","isPreloaded","setNativeAd","titleRef","advertiserRef","bodyRef","callToActionRef","iconRef","optionsRef","mediaRef","starRatingRef","mountedAssetRoles","useContext","CloudXNativeAdViewContext","nativeRef","pendingMetadata","lastAdInfoRef","bindTick","setBindTick","useState","loadAd","Commands","destroyAd","useImperativeHandle","nativeExtraParameters","useMemo","toNativeExtraParameterEntries","nativeLocalExtraParameters","bindAssetView","assetRef","assetName","assetTag","findNodeHandle","updateAssetView","handleAdLoaded","adInfo","nativeEvent","metadata","handleBindingCleared","handleAdDisplayed","handleAdLoadFailed","handleAdDisplayFailed","failedAdUnitId","cached","info","base","displayFailedInfo","handleAdClicked","handleAdExpired","handleAdClosed","handleAdRevenuePaid","useEffect","iconAvailable","isIconImageAvailable","plan","CloudXNativeAssetType","TITLE","Boolean","title","ADVERTISER","advertiser","BODY","body","CALL_TO_ACTION","callToAction","ICON","OPTIONS","isOptionsViewAvailable","MEDIA","isMediaViewAvailable","STAR_RATING","starRating","MAX_BIND_ATTEMPTS","cancelled","pendingTimers","Set","scheduleRetry","fn","timer","setTimeout","add","attemptBind","attempt","remaining","wanted","delete","size","renderNativeAd","w","map","forEach","clearTimeout","clear","nativeAdId","templateName","manualRender","onAdLoadedEvent","onAdLoadFailedEvent","onAdDisplayedEvent","onAdDisplayFailedEvent","onAdBindingClearedEvent","onAdClickedEvent","onAdExpiredEvent","onAdClosedEvent","onAdRevenuePaidEvent"],"sourceRoot":"../../src","sources":["CloudXNativeAdView.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,10 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.useCloudXAppOpen = useCloudXAppOpen;
7
7
  exports.useCloudXBanner = useCloudXBanner;
8
8
  exports.useCloudXInterstitial = useCloudXInterstitial;
9
+ exports.useCloudXNativeAd = useCloudXNativeAd;
9
10
  exports.useCloudXRewarded = useCloudXRewarded;
10
11
  var _react = require("react");
11
12
  var _NativeCloudX = _interopRequireDefault(require("./specs/NativeCloudX"));
12
13
  var _EventEmitter = require("./EventEmitter");
14
+ var _CloudXNativeAd = require("./CloudXNativeAd");
15
+ var _useCloudXSdkInitialization = require("./useCloudXSdkInitialization");
13
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
17
  /**
15
18
  * React Hooks for CloudX SDK.
@@ -350,4 +353,204 @@ function useCloudXBanner(adUnitId) {
350
353
  error
351
354
  };
352
355
  }
356
+
357
+ // ---------------------------------------------------------------------------
358
+ // useCloudXNativeAd
359
+ // ---------------------------------------------------------------------------
360
+
361
+ const stableSerialize = value => {
362
+ if (value === null || typeof value !== 'object') {
363
+ return value;
364
+ }
365
+ if (Array.isArray(value)) {
366
+ return value.map(stableSerialize);
367
+ }
368
+ const record = value;
369
+ const sortedKeys = Object.keys(record).sort();
370
+ const result = {};
371
+ for (const key of sortedKeys) {
372
+ const val = record[key];
373
+ if (val !== undefined) {
374
+ result[key] = stableSerialize(val);
375
+ }
376
+ }
377
+ return result;
378
+ };
379
+ const getOptionsSignature = options => {
380
+ if (!options) return '{}';
381
+ return JSON.stringify(stableSerialize(options));
382
+ };
383
+
384
+ /**
385
+ * Hook for managing a preloaded native ad lifecycle.
386
+ *
387
+ * Preloads a native ad ahead of render and holds it until unmount, manual
388
+ * destruction, or identity change. Unlike view-managed ads, a preloaded ad's
389
+ * lifecycle belongs to its handle and this hook: unmounting a view bound to it
390
+ * does not destroy it.
391
+ *
392
+ * With autoLoad (the default) the first load waits until the SDK has
393
+ * initialized, as `CloudXNativeAdView` does. A `load()` call made before
394
+ * initialization fails with `NOT_INITIALIZED`.
395
+ *
396
+ * @param adUnitId - The ad unit identifier, or null to keep idle.
397
+ * @param options - Load options configuring the auction and loader.
398
+ * @param config - Optional configuration (autoLoad defaults to true).
399
+ */
400
+ function useCloudXNativeAd(adUnitId, options, config) {
401
+ const autoLoad = (config === null || config === void 0 ? void 0 : config.autoLoad) ?? true;
402
+ const optionsSignature = getOptionsSignature(options);
403
+ const isSdkInitialized = (0, _useCloudXSdkInitialization.useCloudXSdkInitializationGate)('useCloudXNativeAd');
404
+ const [status, setStatus] = (0, _react.useState)(() => autoLoad && adUnitId ? 'loading' : 'idle');
405
+ const [nativeAd, setNativeAd] = (0, _react.useState)(null);
406
+ const [error, setError] = (0, _react.useState)(null);
407
+ const mountedRef = (0, _react.useRef)(true);
408
+ const generationRef = (0, _react.useRef)(0);
409
+ const heldAdRef = (0, _react.useRef)(null);
410
+ const optionsRef = (0, _react.useRef)(options);
411
+ optionsRef.current = options;
412
+ const inflightRef = (0, _react.useRef)(null);
413
+ const lastSignatureRef = (0, _react.useRef)(null);
414
+ const executeLoad = (0, _react.useCallback)(() => {
415
+ if (!adUnitId) {
416
+ setStatus('idle');
417
+ setNativeAd(null);
418
+ setError(null);
419
+ return;
420
+ }
421
+ const currentSignature = `${adUnitId}::${optionsSignature}`;
422
+
423
+ // Coalesce concurrent loads with the same signature (React StrictMode
424
+ // double effects must not start two loads).
425
+ if (inflightRef.current && inflightRef.current.signature === currentSignature) {
426
+ return;
427
+ }
428
+ const generation = ++generationRef.current;
429
+ setStatus('loading');
430
+ setError(null);
431
+ if (heldAdRef.current) {
432
+ heldAdRef.current.destroy();
433
+ heldAdRef.current = null;
434
+ setNativeAd(null);
435
+ }
436
+ const currentOptions = optionsRef.current;
437
+ const promise = _CloudXNativeAd.CloudXNativeAd.load(adUnitId, currentOptions);
438
+ inflightRef.current = {
439
+ signature: currentSignature,
440
+ generation,
441
+ promise
442
+ };
443
+ promise.then(ad => {
444
+ var _inflightRef$current;
445
+ if (((_inflightRef$current = inflightRef.current) === null || _inflightRef$current === void 0 ? void 0 : _inflightRef$current.promise) === promise) {
446
+ inflightRef.current = null;
447
+ }
448
+
449
+ // A load that resolves after unmount, after destroy(), or after the signature
450
+ // changed is destroyed immediately and never published (generation counter).
451
+ if (!mountedRef.current || generationRef.current !== generation) {
452
+ ad.destroy();
453
+ return;
454
+ }
455
+ if (heldAdRef.current && heldAdRef.current !== ad) {
456
+ heldAdRef.current.destroy();
457
+ }
458
+ heldAdRef.current = ad;
459
+
460
+ // On the handle's 'expired' event: status 'expired', nativeAd null,
461
+ // and the expired handle destroyed.
462
+ ad.addListener('expired', () => {
463
+ if (generationRef.current === generation && heldAdRef.current === ad) {
464
+ heldAdRef.current = null;
465
+ setStatus('expired');
466
+ setNativeAd(null);
467
+ ad.destroy();
468
+ }
469
+ });
470
+ setStatus('loaded');
471
+ setNativeAd(ad);
472
+ setError(null);
473
+ }).catch(err => {
474
+ var _inflightRef$current2;
475
+ if (((_inflightRef$current2 = inflightRef.current) === null || _inflightRef$current2 === void 0 ? void 0 : _inflightRef$current2.promise) === promise) {
476
+ inflightRef.current = null;
477
+ }
478
+
479
+ // Ignores stale rejection after identity change, destroy, or unmount.
480
+ if (!mountedRef.current || generationRef.current !== generation) {
481
+ return;
482
+ }
483
+ setStatus('error');
484
+ setNativeAd(null);
485
+ setError(err);
486
+ });
487
+ }, [adUnitId, optionsSignature]);
488
+
489
+ // Unmount owns the release. Kept apart from the load effect so a re-run
490
+ // of that effect (autoLoad flipping, say) never destroys an ad this hook
491
+ // has already published. Under StrictMode the simulated unmount only
492
+ // clears mountedRef; the remount sets it again, so a load in flight from
493
+ // the first mount is still published rather than duplicated.
494
+ (0, _react.useEffect)(() => {
495
+ mountedRef.current = true;
496
+ return () => {
497
+ mountedRef.current = false;
498
+ if (heldAdRef.current) {
499
+ heldAdRef.current.destroy();
500
+ heldAdRef.current = null;
501
+ }
502
+ };
503
+ }, []);
504
+ (0, _react.useEffect)(() => {
505
+ const currentSignature = adUnitId ? `${adUnitId}::${optionsSignature}` : '';
506
+ const isFirstRun = lastSignatureRef.current === null;
507
+ const signatureChanged = !isFirstRun && lastSignatureRef.current !== currentSignature;
508
+ lastSignatureRef.current = currentSignature;
509
+ if (signatureChanged) {
510
+ if (heldAdRef.current) {
511
+ heldAdRef.current.destroy();
512
+ heldAdRef.current = null;
513
+ }
514
+ // Never leave the previous identity's (now destroyed) handle
515
+ // published while the replacement loads, nor its status or error:
516
+ // with autoLoad off nothing replaces them, and a `loaded` status
517
+ // with no ad, or a `loading` one that never settles, would stick.
518
+ setNativeAd(null);
519
+ setStatus('idle');
520
+ setError(null);
521
+ generationRef.current++;
522
+ inflightRef.current = null;
523
+ if (!adUnitId) {
524
+ return;
525
+ }
526
+ }
527
+
528
+ // A held ad survives autoLoad flipping back on; only an identity
529
+ // change (handled above) replaces it.
530
+ if (autoLoad && adUnitId && isSdkInitialized && !heldAdRef.current) {
531
+ executeLoad();
532
+ }
533
+ }, [adUnitId, optionsSignature, autoLoad, isSdkInitialized, executeLoad]);
534
+ const load = (0, _react.useCallback)(() => {
535
+ executeLoad();
536
+ }, [executeLoad]);
537
+ const destroy = (0, _react.useCallback)(() => {
538
+ generationRef.current++;
539
+ inflightRef.current = null;
540
+ if (heldAdRef.current) {
541
+ heldAdRef.current.destroy();
542
+ heldAdRef.current = null;
543
+ }
544
+ setStatus('idle');
545
+ setNativeAd(null);
546
+ setError(null);
547
+ }, []);
548
+ return {
549
+ status,
550
+ nativeAd,
551
+ error,
552
+ load,
553
+ destroy
554
+ };
555
+ }
353
556
  //# sourceMappingURL=hooks.js.map