@adadapted/react-native-sdk 3.2.0 → 3.3.0

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 (74) hide show
  1. package/android/.project +1 -1
  2. package/android/.settings/org.eclipse.buildship.core.prefs +2 -2
  3. package/android/bin/build.gradle +6 -5
  4. package/android/bin/gradle.properties +4 -4
  5. package/android/build.gradle +6 -5
  6. package/android/gradle.properties +3 -3
  7. package/android/src/main/AndroidManifest.xml +1 -3
  8. package/lib/commonjs/api/adadaptedApiRequests.js.map +1 -1
  9. package/lib/commonjs/api/adadaptedApiRequests.mock.js +25 -8
  10. package/lib/commonjs/api/adadaptedApiRequests.mock.js.map +1 -1
  11. package/lib/commonjs/api/adadaptedApiTypes.js +71 -26
  12. package/lib/commonjs/api/adadaptedApiTypes.js.map +1 -1
  13. package/lib/commonjs/components/AdZone.js +53 -14
  14. package/lib/commonjs/components/AdZone.js.map +1 -1
  15. package/lib/commonjs/components/ReportAdButton.js +38 -0
  16. package/lib/commonjs/components/ReportAdButton.js.map +1 -0
  17. package/lib/commonjs/images/ReportIcon.png +0 -0
  18. package/lib/commonjs/index.js +139 -89
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/commonjs/types.js +4 -0
  21. package/lib/commonjs/types.js.map +1 -1
  22. package/lib/commonjs/util.js +13 -0
  23. package/lib/commonjs/util.js.map +1 -1
  24. package/lib/module/api/adadaptedApiRequests.js.map +1 -1
  25. package/lib/module/api/adadaptedApiRequests.mock.js +25 -9
  26. package/lib/module/api/adadaptedApiRequests.mock.js.map +1 -1
  27. package/lib/module/api/adadaptedApiTypes.js +69 -24
  28. package/lib/module/api/adadaptedApiTypes.js.map +1 -1
  29. package/lib/module/components/AdZone.js +49 -14
  30. package/lib/module/components/AdZone.js.map +1 -1
  31. package/lib/module/components/ReportAdButton.js +30 -0
  32. package/lib/module/components/ReportAdButton.js.map +1 -0
  33. package/lib/module/images/ReportIcon.png +0 -0
  34. package/lib/module/index.js +139 -88
  35. package/lib/module/index.js.map +1 -1
  36. package/lib/module/types.js +1 -1
  37. package/lib/module/types.js.map +1 -1
  38. package/lib/module/util.js +14 -2
  39. package/lib/module/util.js.map +1 -1
  40. package/lib/typescript/example/index.d.ts +1 -0
  41. package/lib/typescript/example/index.d.ts.map +1 -0
  42. package/lib/typescript/example/src/App.d.ts +22 -2
  43. package/lib/typescript/example/src/App.d.ts.map +1 -0
  44. package/lib/typescript/example/src/OffScreenAdZone.d.ts +38 -0
  45. package/lib/typescript/example/src/OffScreenAdZone.d.ts.map +1 -0
  46. package/lib/typescript/example/src/StandardAdZone.d.ts +38 -0
  47. package/lib/typescript/example/src/StandardAdZone.d.ts.map +1 -0
  48. package/lib/typescript/index.d.ts +2 -0
  49. package/lib/typescript/index.d.ts.map +1 -0
  50. package/lib/typescript/jest.setup.d.ts +2 -1
  51. package/lib/typescript/jest.setup.d.ts.map +1 -0
  52. package/lib/typescript/src/api/adadaptedApiRequests.d.ts +1 -0
  53. package/lib/typescript/src/api/adadaptedApiRequests.d.ts.map +1 -0
  54. package/lib/typescript/src/api/adadaptedApiRequests.mock.d.ts +1 -0
  55. package/lib/typescript/src/api/adadaptedApiRequests.mock.d.ts.map +1 -0
  56. package/lib/typescript/src/api/adadaptedApiTypes.d.ts +1 -0
  57. package/lib/typescript/src/api/adadaptedApiTypes.d.ts.map +1 -0
  58. package/lib/typescript/src/components/AdZone.d.ts +5 -4
  59. package/lib/typescript/src/components/AdZone.d.ts.map +1 -0
  60. package/lib/typescript/src/components/ReportAdButton.d.ts +19 -0
  61. package/lib/typescript/src/components/ReportAdButton.d.ts.map +1 -0
  62. package/lib/typescript/src/index.d.ts +23 -6
  63. package/lib/typescript/src/index.d.ts.map +1 -0
  64. package/lib/typescript/src/types.d.ts +3 -2
  65. package/lib/typescript/src/types.d.ts.map +1 -0
  66. package/lib/typescript/src/util.d.ts +13 -0
  67. package/lib/typescript/src/util.d.ts.map +1 -0
  68. package/package.json +155 -155
  69. package/src/api/adadaptedApiRequests.mock.ts +25 -9
  70. package/src/components/AdZone.tsx +52 -20
  71. package/src/components/ReportAdButton.tsx +46 -0
  72. package/src/images/ReportIcon.png +0 -0
  73. package/src/index.tsx +134 -68
  74. package/src/util.ts +13 -0
@@ -10,6 +10,7 @@ var adadaptedApiRequests = _interopRequireWildcard(require("../api/adadaptedApiR
10
10
  var _adadaptedApiTypes = require("../api/adadaptedApiTypes");
11
11
  var _reactNativeWebview = require("react-native-webview");
12
12
  var _util = require("../util");
13
+ var _ReportAdButton = require("./ReportAdButton");
13
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
16
  /**
@@ -17,6 +18,18 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
17
18
  * @module
18
19
  */
19
20
 
21
+ /**
22
+ * Props interface for {@link AdZone}.
23
+ */
24
+
25
+ /**
26
+ * Interface for tracking "touch" coordinates.
27
+ */
28
+
29
+ /**
30
+ * Defines the style typing for the component.
31
+ */
32
+
20
33
  /**
21
34
  * Timer used for cycling through ads in the zone
22
35
  * based on the ad "refresh time" for each ad.
@@ -46,9 +59,9 @@ function AdZone(props) {
46
59
  /**
47
60
  * Track ad visibility (for off-screen ads).
48
61
  */
49
- const [isAdVisible, setIsAdVisibile] = (0, React.useState)(props.defaultToInvisibleAdZone ? false : true);
62
+ const [isAdVisible, setIsAdVisibile] = (0, React.useState)(props.isAdZoneVisible);
50
63
 
51
- // - Define all useEffect triggers.
64
+ // Setup device listeners.
52
65
  (0, React.useEffect)(() => {
53
66
  _reactNative.DeviceEventEmitter.addListener("visibility-event", event => {
54
67
  setIsAdVisibile(event);
@@ -56,22 +69,38 @@ function AdZone(props) {
56
69
  _reactNative.DeviceEventEmitter.addListener("acknowledge", itemName => {
57
70
  acknowledge(itemName);
58
71
  });
72
+ if (props.offScreenAdZone && isAdVisible) {
73
+ sendAdImpression();
74
+ } else if (!props.offScreenAdZone) {
75
+ sendAdImpression();
76
+ }
59
77
  return () => {
60
78
  clearTimeout(cycleAdTimer);
61
79
  _reactNative.DeviceEventEmitter.removeAllListeners("visibility-event");
62
80
  _reactNative.DeviceEventEmitter.removeAllListeners("acknowledge");
63
81
  };
82
+ // eslint-disable-next-line react-hooks/exhaustive-deps
64
83
  }, []);
84
+
85
+ // Send impression on ad cycle.
65
86
  (0, React.useEffect)(() => {
66
87
  startAdTimer();
67
- if (isAdVisible) {
88
+ if (props.offScreenAdZone && isAdVisible) {
89
+ sendAdImpression();
90
+ } else if (!props.offScreenAdZone) {
68
91
  sendAdImpression();
69
92
  }
93
+ // eslint-disable-next-line react-hooks/exhaustive-deps
70
94
  }, [adIndexShown]);
95
+
96
+ // Send impression based on visibility change. (for off-screen ads)
71
97
  (0, React.useEffect)(() => {
72
- if (isAdVisible) {
98
+ if (props.offScreenAdZone && isAdVisible) {
99
+ sendAdImpression();
100
+ } else if (!props.offScreenAdZone) {
73
101
  sendAdImpression();
74
102
  }
103
+ // eslint-disable-next-line react-hooks/exhaustive-deps
75
104
  }, [isAdVisible]);
76
105
 
77
106
  /**
@@ -87,6 +116,11 @@ function AdZone(props) {
87
116
  webView: {
88
117
  width: "100%",
89
118
  height: "100%"
119
+ },
120
+ reportAd: {
121
+ position: "absolute",
122
+ top: 10,
123
+ right: 10
90
124
  }
91
125
  });
92
126
  }
@@ -98,8 +132,8 @@ function AdZone(props) {
98
132
  const finalMainViewStyle = styles.mainView;
99
133
  if (!currentAd || !currentAd.creative_url) {
100
134
  // If there is no ad to display, make the view take up no space.
101
- finalMainViewStyle.width = "0";
102
- finalMainViewStyle.height = "0";
135
+ finalMainViewStyle.width = 0;
136
+ finalMainViewStyle.height = 0;
103
137
  }
104
138
 
105
139
  /**
@@ -124,11 +158,13 @@ function AdZone(props) {
124
158
  function acknowledge(itemName) {
125
159
  if (props.adZoneData.ads) {
126
160
  props.adZoneData.ads.forEach(ad => {
127
- ad.payload.detailed_list_items.forEach(item => {
128
- if (item.product_title === itemName) {
129
- triggerReportAdEvent(ad, _adadaptedApiTypes.ReportedEventType.INTERACTION);
130
- }
131
- });
161
+ if (ad.action_type === "c") {
162
+ ad.payload.detailed_list_items.forEach(item => {
163
+ if (item.product_title === itemName) {
164
+ triggerReportAdEvent(ad, _adadaptedApiTypes.ReportedEventType.INTERACTION);
165
+ }
166
+ });
167
+ }
132
168
  });
133
169
  }
134
170
  }
@@ -194,8 +230,6 @@ function AdZone(props) {
194
230
  */
195
231
  function sendAdImpression() {
196
232
  const ad = props.adZoneData.ads[adIndexShown];
197
-
198
- // Trigger an impression event for the ad.
199
233
  if (!ad.impression_tracked) {
200
234
  triggerReportAdEvent(ad, _adadaptedApiTypes.ReportedEventType.IMPRESSION);
201
235
  ad.impression_tracked = true;
@@ -235,6 +269,11 @@ function AdZone(props) {
235
269
  });
236
270
  }
237
271
  }
238
- }) : undefined);
272
+ }) : undefined, /*#__PURE__*/React.createElement(_reactNative.View, {
273
+ style: styles.reportAd
274
+ }, /*#__PURE__*/React.createElement(_ReportAdButton.ReportAdButton, {
275
+ adId: currentAd.ad_id,
276
+ udid: props.udid
277
+ })));
239
278
  }
240
279
  //# sourceMappingURL=AdZone.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["cycleAdTimer","AdZone","props","startingAdIndex","Math","floor","random","adZoneData","ads","length","adIndexShown","setAdIndexShown","useState","touchStartCoords","setTouchStartCoords","x","y","isAdVisible","setIsAdVisibile","defaultToInvisibleAdZone","useEffect","DeviceEventEmitter","addListener","event","itemName","acknowledge","clearTimeout","removeAllListeners","startAdTimer","sendAdImpression","generateStyles","StyleSheet","create","mainView","width","height","webView","styles","currentAd","undefined","finalMainViewStyle","creative_url","onAdZoneSelected","currentlyDisplayedAd","action_type","AdActionType","EXTERNAL","action_path","Linking","openURL","then","CONTENT","payload","detailed_list_items","safeInvoke","onAddToListTriggered","cycleDisplayedAd","forEach","ad","item","product_title","triggerReportAdEvent","ReportedEventType","INTERACTION","eventType","currentTs","round","Date","getTime","adadaptedApiRequests","reportAdEvent","app_id","appId","session_id","sessionId","udid","events","ad_id","impression_id","event_type","created_at","deviceOs","apiEnv","refreshTime","refresh_time","setTimeout","nextAdIndex","lastAd","impression_tracked","INVISIBLE_IMPRESSION","IMPRESSION","uri","e","nativeEvent","pageX","pageY","touchEndCoords","abs","xyDragDistanceAllowed"],"sources":["AdZone.tsx"],"sourcesContent":["/**\n * Component for creating an {@link AdZone}.\n * @module\n */\nimport * as React from \"react\";\nimport {\n DeviceEventEmitter,\n Linking,\n StyleSheet,\n View,\n ViewStyle,\n} from \"react-native\";\nimport * as adadaptedApiRequests from \"../api/adadaptedApiRequests\";\nimport {\n Ad,\n AdActionType,\n DetailedListItem,\n ReportedEventType,\n Zone,\n} from \"../api/adadaptedApiTypes\";\nimport { WebView } from \"react-native-webview\";\nimport { ApiEnv, DeviceOS } from \"../index\";\nimport { safeInvoke } from \"../util\";\nimport { useEffect, useState } from \"react\";\n\n/**\n * Props interface for {@link AdZone}.\n */\ninterface Props {\n /**\n * The app ID.\n */\n appId: string;\n /**\n * The session ID.\n */\n sessionId: string;\n /**\n * The UDID.\n */\n udid: string;\n /**\n * The touch sensitivity of the Ad Zone in both the X and Y directions.\n * This is used to determine the click/press sensitivity when the\n * Ad Zone is being touched by the user as a regular touch or while\n * scrolling the view. If the amount of touch \"drag\" distance in either\n * X or Y direction is less than this value, we will treat the action as\n * a click/press on the Ad Zone.\n */\n xyDragDistanceAllowed: number;\n /**\n * The device OS used for API requests.\n */\n deviceOs: DeviceOS;\n /**\n * The API environment to use when making an API request.\n */\n apiEnv: ApiEnv;\n /**\n * The ad zone data.\n */\n adZoneData: Zone;\n /**\n * Callback that gets triggered when an \"add to list\" item/items are clicked.\n * @param items - The array of items to \"add to list\".\n */\n onAddToListTriggered?(items: DetailedListItem[]): void;\n /**\n * Track the ad zone visibility in parent component.\n */\n isAdZoneVisible?: boolean;\n /**\n * Set default ad zone visibility to false.\n */\n defaultToInvisibleAdZone?: boolean;\n}\n\n/**\n * Interface for tracking \"touch\" coordinates.\n */\ninterface TouchCoordinates {\n /**\n * The X coordinate for the touch.\n */\n x: number;\n /**\n * The Y coordinate for the touch.\n */\n y: number;\n}\n\n/**\n * Defines the style typing for the component.\n */\ninterface StyleDef {\n /**\n * Styles for the main View element.\n */\n mainView: ViewStyle;\n /**\n * Styles for the WebView element.\n */\n webView: ViewStyle;\n}\n/**\n * Timer used for cycling through ads in the zone\n * based on the ad \"refresh time\" for each ad.\n */\nlet cycleAdTimer: ReturnType<typeof setTimeout> | undefined;\n\n/**\n * Creates the AdZone component.\n * @param props - properties passed to AdZone.\n * @returns an AdZone JSX Element.\n */\nexport function AdZone(props: Props): JSX.Element {\n // Generates a random number between 0 and (number of available ads - 1).\n const startingAdIndex = Math.floor(\n Math.random() * props.adZoneData.ads.length\n );\n\n /**\n * Tracks the current ad index being shown.\n */\n const [adIndexShown, setAdIndexShown] = useState(startingAdIndex);\n /**\n * Tracks the coordinates when the user started touching the Ad View.\n */\n const [touchStartCoords, setTouchStartCoords] = useState({ x: 0, y: 0 });\n /**\n * Track ad visibility (for off-screen ads).\n */\n const [isAdVisible, setIsAdVisibile] = useState(\n props.defaultToInvisibleAdZone ? false : true\n );\n\n // - Define all useEffect triggers.\n useEffect(() => {\n DeviceEventEmitter.addListener(\"visibility-event\", (event) => {\n setIsAdVisibile(event);\n });\n DeviceEventEmitter.addListener(\"acknowledge\", (itemName) => {\n acknowledge(itemName);\n });\n return () => {\n clearTimeout(cycleAdTimer);\n DeviceEventEmitter.removeAllListeners(\"visibility-event\");\n DeviceEventEmitter.removeAllListeners(\"acknowledge\");\n };\n }, []);\n\n useEffect(() => {\n startAdTimer();\n if (isAdVisible) {\n sendAdImpression();\n }\n }, [adIndexShown]);\n\n useEffect(() => {\n if (isAdVisible) {\n sendAdImpression();\n }\n }, [isAdVisible]);\n\n /**\n * Generates all component related styles.\n * @returns the styles needed for the component.\n */\n function generateStyles(): StyleDef {\n return StyleSheet.create({\n mainView: {\n width: \"100%\",\n height: \"100%\",\n },\n webView: {\n width: \"100%\",\n height: \"100%\",\n },\n });\n }\n\n // Generate the styles each render in case the ad is updated with\n // new settings that need to be reflected in the styles of the view.\n const styles = generateStyles();\n const currentAd: Ad | undefined =\n props.adZoneData.ads[adIndexShown] || undefined;\n const finalMainViewStyle = styles.mainView;\n\n if (!currentAd || !currentAd.creative_url) {\n // If there is no ad to display, make the view take up no space.\n finalMainViewStyle.width = \"0\";\n finalMainViewStyle.height = \"0\";\n }\n\n /**\n * Triggers when the user selects the ad zone.\n * @param currentlyDisplayedAd - The ad currently displayed.\n */\n function onAdZoneSelected(currentlyDisplayedAd: Ad): void {\n // Determine the \"action type\" and perform that specific action.\n if (\n currentlyDisplayedAd.action_type === AdActionType.EXTERNAL &&\n currentlyDisplayedAd.action_path\n ) {\n // Action Type: EXTERNAL\n Linking.openURL(currentlyDisplayedAd.action_path).then();\n } else if (\n currentlyDisplayedAd.action_type === AdActionType.CONTENT &&\n currentlyDisplayedAd.payload &&\n currentlyDisplayedAd.payload.detailed_list_items\n ) {\n safeInvoke(\n props.onAddToListTriggered,\n currentlyDisplayedAd.payload.detailed_list_items\n );\n }\n\n cycleDisplayedAd();\n }\n\n /**\n * Call to acknowledge ATL item(s) added to user list.\n * @param itemName - Detailed list item title from ad that was clicked.\n */\n function acknowledge(itemName: string): void {\n if (props.adZoneData.ads) {\n props.adZoneData.ads.forEach((ad) => {\n ad.payload.detailed_list_items.forEach((item) => {\n if (item.product_title === itemName) {\n triggerReportAdEvent(ad, ReportedEventType.INTERACTION);\n }\n });\n });\n }\n }\n\n /**\n * Triggered when we need to report an ad event to the API.\n * @param ad - The ad to send an event for.\n * @param eventType - The event type for the reported event.\n */\n function triggerReportAdEvent(ad: Ad, eventType: ReportedEventType): void {\n // The event timestamp has to be sent as a unix timestamp.\n const currentTs = Math.round(new Date().getTime() / 1000);\n\n // Log the taken action/event with the API.\n adadaptedApiRequests\n .reportAdEvent(\n {\n app_id: props.appId,\n session_id: props.sessionId,\n udid: props.udid,\n events: [\n {\n ad_id: ad.ad_id,\n impression_id: ad.impression_id,\n event_type: eventType,\n created_at: currentTs,\n },\n ],\n },\n props.deviceOs,\n props.apiEnv\n )\n .then(() => {\n // Do nothing with the response for now...\n });\n }\n\n /**\n * Generates a new timer for cycling to the next ad.\n */\n function startAdTimer(): void {\n clearTimeout(cycleAdTimer);\n\n if (props.adZoneData.ads.length > 0) {\n const refreshTime: number =\n props.adZoneData.ads[adIndexShown].refresh_time * 1000;\n cycleAdTimer = setTimeout(cycleDisplayedAd, refreshTime);\n }\n }\n\n /**\n * Cycles to the next ad to display in the current available sequence of ads.\n */\n function cycleDisplayedAd(): void {\n // Start by determining the next ad index to display.\n let nextAdIndex = 0;\n const lastAd = props.adZoneData.ads[adIndexShown];\n\n if (adIndexShown < props.adZoneData.ads.length - 1) {\n nextAdIndex = adIndexShown + 1;\n }\n\n if (nextAdIndex !== adIndexShown && lastAd.impression_tracked) {\n // Reset ad impression tracking status.\n lastAd.impression_tracked = false;\n } else {\n // Send invisible ad impression if ad was not visible before end of timer cycle.\n triggerReportAdEvent(\n lastAd,\n ReportedEventType.INVISIBLE_IMPRESSION\n );\n }\n\n setAdIndexShown(nextAdIndex);\n }\n\n /**\n * Send ad tracking impression.\n */\n function sendAdImpression(): void {\n const ad = props.adZoneData.ads[adIndexShown];\n\n // Trigger an impression event for the ad.\n if (!ad.impression_tracked) {\n triggerReportAdEvent(ad, ReportedEventType.IMPRESSION);\n ad.impression_tracked = true;\n }\n }\n\n // Returned JSX.\n return (\n <View style={finalMainViewStyle}>\n {currentAd && currentAd.creative_url ? (\n <WebView\n source={{\n uri: currentAd.creative_url,\n }}\n androidLayerType=\"hardware\"\n automaticallyAdjustContentInsets={false}\n style={styles.webView}\n onTouchStart={(e) => {\n setTouchStartCoords({\n x: e.nativeEvent.pageX,\n y: e.nativeEvent.pageY,\n });\n }}\n onTouchEnd={(e) => {\n if (touchStartCoords) {\n const touchEndCoords: TouchCoordinates = {\n x: e.nativeEvent.pageX,\n y: e.nativeEvent.pageY,\n };\n\n if (\n Math.abs(\n touchStartCoords.x - touchEndCoords.x\n ) < props.xyDragDistanceAllowed &&\n Math.abs(\n touchStartCoords.y - touchEndCoords.y\n ) < props.xyDragDistanceAllowed\n ) {\n onAdZoneSelected(currentAd);\n }\n\n // Make sure to reset the start coords\n setTouchStartCoords({ x: 0, y: 0 });\n }\n }}\n />\n ) : undefined}\n </View>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","_interopRequireWildcard","require","_reactNative","adadaptedApiRequests","_adadaptedApiTypes","_reactNativeWebview","_util","_ReportAdButton","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","cycleAdTimer","AdZone","props","startingAdIndex","Math","floor","random","adZoneData","ads","length","adIndexShown","setAdIndexShown","useState","touchStartCoords","setTouchStartCoords","x","y","isAdVisible","setIsAdVisibile","isAdZoneVisible","useEffect","DeviceEventEmitter","addListener","event","itemName","acknowledge","offScreenAdZone","sendAdImpression","clearTimeout","removeAllListeners","startAdTimer","generateStyles","StyleSheet","create","mainView","width","height","webView","reportAd","position","top","right","styles","currentAd","undefined","finalMainViewStyle","creative_url","onAdZoneSelected","currentlyDisplayedAd","action_type","AdActionType","EXTERNAL","action_path","Linking","openURL","then","CONTENT","payload","detailed_list_items","safeInvoke","onAddToListTriggered","cycleDisplayedAd","forEach","ad","item","product_title","triggerReportAdEvent","ReportedEventType","INTERACTION","eventType","currentTs","round","Date","getTime","reportAdEvent","app_id","appId","session_id","sessionId","udid","events","ad_id","impression_id","event_type","created_at","deviceOs","apiEnv","refreshTime","refresh_time","setTimeout","nextAdIndex","lastAd","impression_tracked","INVISIBLE_IMPRESSION","IMPRESSION","createElement","View","style","WebView","source","uri","androidLayerType","automaticallyAdjustContentInsets","onTouchStart","e","nativeEvent","pageX","pageY","onTouchEnd","touchEndCoords","abs","xyDragDistanceAllowed","ReportAdButton","adId"],"sourceRoot":"../../../src","sources":["components/AdZone.tsx"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ReportAdButton = ReportAdButton;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ /**
12
+ * Creates the ReportAdButton component.
13
+ * @param props The component's props.
14
+ * @returns a reportSdButton JSX Element.
15
+ */
16
+ function ReportAdButton(props) {
17
+ const reportAdUrlBase = new URL("https://feedback.add-it.io/");
18
+ const styles = _reactNative.StyleSheet.create({
19
+ buttonStyle: {
20
+ width: 14,
21
+ height: 14
22
+ }
23
+ });
24
+ (0, _react.useEffect)(() => {
25
+ reportAdUrlBase.searchParams.append("aid", props.adId);
26
+ reportAdUrlBase.searchParams.append("uid", props.udid);
27
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28
+ }, [props]);
29
+ return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
30
+ style: styles.buttonStyle,
31
+ onPress: () => {
32
+ _reactNative.Linking.openURL(reportAdUrlBase.toString());
33
+ }
34
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Image, {
35
+ source: require("../images/ReportIcon.png")
36
+ }));
37
+ }
38
+ //# sourceMappingURL=ReportAdButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ReportAdButton","props","reportAdUrlBase","URL","styles","StyleSheet","create","buttonStyle","width","height","useEffect","searchParams","append","adId","udid","createElement","TouchableOpacity","style","onPress","Linking","openURL","toString","Image","source"],"sourceRoot":"../../../src","sources":["components/ReportAdButton.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAA4E,SAAAE,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAJ,wBAAAQ,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAa5E;AACA;AACA;AACA;AACA;AACO,SAASW,cAAcA,CAACC,KAAY,EAAe;EACtD,MAAMC,eAAe,GAAG,IAAIC,GAAG,CAAC,6BAA6B,CAAC;EAE9D,MAAMC,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;IAC7BC,WAAW,EAAE;MACTC,KAAK,EAAE,EAAE;MACTC,MAAM,EAAE;IACZ;EACJ,CAAC,CAAC;EAEF,IAAAC,gBAAS,EAAC,MAAM;IACZR,eAAe,CAACS,YAAY,CAACC,MAAM,CAAC,KAAK,EAAEX,KAAK,CAACY,IAAI,CAAC;IACtDX,eAAe,CAACS,YAAY,CAACC,MAAM,CAAC,KAAK,EAAEX,KAAK,CAACa,IAAI,CAAC;IACtD;EACJ,CAAC,EAAE,CAACb,KAAK,CAAC,CAAC;EAEX,oBACI3B,MAAA,CAAAW,OAAA,CAAA8B,aAAA,CAACtC,YAAA,CAAAuC,gBAAgB;IACbC,KAAK,EAAEb,MAAM,CAACG,WAAY;IAC1BW,OAAO,EAAEA,CAAA,KAAM;MACXC,oBAAO,CAACC,OAAO,CAAClB,eAAe,CAACmB,QAAQ,CAAC,CAAC,CAAC;IAC/C;EAAE,gBAEF/C,MAAA,CAAAW,OAAA,CAAA8B,aAAA,CAACtC,YAAA,CAAA6C,KAAK;IAACC,MAAM,EAAE/C,OAAO,CAAC,0BAA0B;EAAE,CAAE,CACvC,CAAC;AAE3B"}
@@ -15,49 +15,63 @@ var _reactNativeBase = _interopRequireDefault(require("react-native-base64"));
15
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
17
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
18
  /**
20
- * Enum representing possible device operating systems.
19
+ * The AdadaptedReactNativeSdk package/module definition.
21
20
  */
22
- let DeviceOS;
23
21
  /**
24
- * Enum defining the different API environments.
22
+ * Enum representing possible device operating systems.
25
23
  */
26
- exports.DeviceOS = DeviceOS;
27
- (function (DeviceOS) {
24
+ let DeviceOS = /*#__PURE__*/function (DeviceOS) {
28
25
  DeviceOS["ANDROID"] = "android";
29
26
  DeviceOS["IOS"] = "ios";
30
- })(DeviceOS || (exports.DeviceOS = DeviceOS = {}));
31
- let ApiEnv;
27
+ return DeviceOS;
28
+ }({});
32
29
  /**
33
- * Enum defining the different API environments for List Manager.
30
+ * Enum defining the different API environments.
34
31
  */
35
- exports.ApiEnv = ApiEnv;
36
- (function (ApiEnv) {
32
+ exports.DeviceOS = DeviceOS;
33
+ let ApiEnv = /*#__PURE__*/function (ApiEnv) {
37
34
  ApiEnv["Prod"] = "https://ads.adadapted.com";
38
35
  ApiEnv["Dev"] = "https://sandbox.adadapted.com";
39
36
  ApiEnv["Mock"] = "MOCK_DATA";
40
- })(ApiEnv || (exports.ApiEnv = ApiEnv = {}));
41
- let ListManagerApiEnv;
37
+ return ApiEnv;
38
+ }({});
42
39
  /**
43
- * Enum defining the different API environments for the Payload Server.
40
+ * Enum defining the different API environments for List Manager.
44
41
  */
45
- exports.ListManagerApiEnv = ListManagerApiEnv;
46
- (function (ListManagerApiEnv) {
42
+ exports.ApiEnv = ApiEnv;
43
+ let ListManagerApiEnv = /*#__PURE__*/function (ListManagerApiEnv) {
47
44
  ListManagerApiEnv["Prod"] = "https://ec.adadapted.com";
48
45
  ListManagerApiEnv["Dev"] = "https://sandec.adadapted.com";
49
46
  ListManagerApiEnv["Mock"] = "MOCK_DATA";
50
- })(ListManagerApiEnv || (exports.ListManagerApiEnv = ListManagerApiEnv = {}));
51
- let PayloadApiEnv;
47
+ return ListManagerApiEnv;
48
+ }({});
52
49
  /**
53
- * Interface defining inputs to the {@link Sdk.initialize} method.
50
+ * Enum defining the different API environments for the Payload Server.
54
51
  */
55
- exports.PayloadApiEnv = PayloadApiEnv;
56
- (function (PayloadApiEnv) {
52
+ exports.ListManagerApiEnv = ListManagerApiEnv;
53
+ let PayloadApiEnv = /*#__PURE__*/function (PayloadApiEnv) {
57
54
  PayloadApiEnv["Prod"] = "https://payload.adadapted.com";
58
55
  PayloadApiEnv["Dev"] = "https://sandpayload.adadapted.com";
59
56
  PayloadApiEnv["Mock"] = "MOCK_DATA";
60
- })(PayloadApiEnv || (exports.PayloadApiEnv = PayloadApiEnv = {}));
57
+ return PayloadApiEnv;
58
+ }({});
59
+ /**
60
+ * Interface defining inputs to the {@link Sdk.initialize: AdadaptedReactNativeSdk} method.
61
+ */
62
+ /**
63
+ * Interface defining properties of a user's Device.
64
+ */
65
+ /**
66
+ * Interface defining a wrapper for an {@link AdZone}.
67
+ */
68
+ /**
69
+ * Interface defining a keyword search result.
70
+ * This is primarily used to export an interface directly from
71
+ * {@link AdadaptedReactNativeSdk} so the interaction with the SDK all be
72
+ * done through this namespace.
73
+ */
74
+ exports.PayloadApiEnv = PayloadApiEnv;
61
75
  /**
62
76
  * Class that acts as the AdAdapted SDK for react-native.
63
77
  */
@@ -65,7 +79,7 @@ class AdadaptedReactNativeSdk {
65
79
  /**
66
80
  * The client app ID used to send to API endpoints.
67
81
  */
68
-
82
+ appId = "";
69
83
  /**
70
84
  * The API environment to use when making API calls.
71
85
  */
@@ -99,6 +113,10 @@ class AdadaptedReactNativeSdk {
99
113
  * The available ad zones.
100
114
  */
101
115
 
116
+ /**
117
+ * The available off-screen ad zones.
118
+ */
119
+ offScreenAdZones = [];
102
120
  /**
103
121
  * The touch sensitivity of the Ad Zone in both the X and Y directions.
104
122
  * This is used to determine the click/press sensitivity when the
@@ -154,9 +172,9 @@ class AdadaptedReactNativeSdk {
154
172
  /**
155
173
  * Track ad zone visibility for off-screen ads.
156
174
  */
157
-
175
+ isAdZoneVisible = true;
158
176
  /**
159
- * Optional default ad zone visibility for off-screen ads.
177
+ * Ad zones that contain off-screen ads..
160
178
  */
161
179
 
162
180
  /**
@@ -183,30 +201,18 @@ class AdadaptedReactNativeSdk {
183
201
  return this.adZones;
184
202
  }
185
203
 
204
+ /**
205
+ * Gets the list of available off-screen Ad Zones.
206
+ * @returns all available off-screen ad zones.
207
+ */
208
+ getOffScreenAdZones() {
209
+ return this.offScreenAdZones;
210
+ }
211
+
186
212
  /**
187
213
  * @inheritDoc
188
214
  */
189
215
  constructor() {
190
- _defineProperty(this, "appId", "");
191
- _defineProperty(this, "apiEnv", void 0);
192
- _defineProperty(this, "listManagerApiEnv", void 0);
193
- _defineProperty(this, "payloadApiEnv", void 0);
194
- _defineProperty(this, "deviceOs", void 0);
195
- _defineProperty(this, "sessionId", void 0);
196
- _defineProperty(this, "deviceInfo", void 0);
197
- _defineProperty(this, "sessionInfo", void 0);
198
- _defineProperty(this, "adZones", void 0);
199
- _defineProperty(this, "xyAdZoneDragDistanceAllowed", void 0);
200
- _defineProperty(this, "onAdZonesRefreshed", void 0);
201
- _defineProperty(this, "refreshAdZonesTimer", void 0);
202
- _defineProperty(this, "keywordInterceptSearchValue", void 0);
203
- _defineProperty(this, "keywordIntercepts", void 0);
204
- _defineProperty(this, "onAddToListTriggered", void 0);
205
- _defineProperty(this, "onOutOfAppPayloadAvailable", void 0);
206
- _defineProperty(this, "deepLinkOnEventListener", void 0);
207
- _defineProperty(this, "AppStateOnEventListener", void 0);
208
- _defineProperty(this, "isAdZoneVisible", true);
209
- _defineProperty(this, "defaultAdZoneVisibility", void 0);
210
216
  this.apiEnv = ApiEnv.Prod;
211
217
  this.listManagerApiEnv = ListManagerApiEnv.Prod;
212
218
  this.payloadApiEnv = PayloadApiEnv.Prod;
@@ -247,23 +253,63 @@ class AdadaptedReactNativeSdk {
247
253
  const adZoneInfoList = [];
248
254
  for (const adZoneId in adZones) {
249
255
  if (Object.prototype.hasOwnProperty.call(adZones, adZoneId)) {
250
- adZoneInfoList.push({
251
- zoneId: adZones[adZoneId].id,
252
- adZone: /*#__PURE__*/React.createElement(_AdZone.AdZone, {
253
- key: adZoneId,
254
- appId: this.appId,
255
- sessionId: this.sessionId,
256
- udid: this.deviceInfo.udid,
257
- deviceOs: this.deviceOs,
258
- apiEnv: this.apiEnv,
259
- xyDragDistanceAllowed: this.xyAdZoneDragDistanceAllowed || 25,
260
- adZoneData: adZones[adZoneId],
261
- onAddToListTriggered: items => {
262
- (0, _util.safeInvoke)(this.onAddToListTriggered, items);
263
- },
264
- isAdZoneVisible: !this.onAdZoneVisibilityChanged,
265
- defaultToInvisibleAdZone: this.defaultAdZoneVisibility
266
- })
256
+ this.offScreenAdZone?.forEach(zone => {
257
+ if (Number(adZones[adZoneId].id) !== zone) {
258
+ adZoneInfoList.push({
259
+ zoneId: adZones[adZoneId].id,
260
+ adZone: /*#__PURE__*/React.createElement(_AdZone.AdZone, {
261
+ key: adZoneId,
262
+ appId: this.appId,
263
+ sessionId: this.sessionId,
264
+ udid: this.deviceInfo.udid,
265
+ deviceOs: this.deviceOs,
266
+ apiEnv: this.apiEnv,
267
+ xyDragDistanceAllowed: this.xyAdZoneDragDistanceAllowed || 25,
268
+ adZoneData: adZones[adZoneId],
269
+ onAddToListTriggered: items => {
270
+ (0, _util.safeInvoke)(this.onAddToListTriggered, items);
271
+ },
272
+ isAdZoneVisible: true,
273
+ offScreenAdZone: false
274
+ })
275
+ });
276
+ }
277
+ });
278
+ }
279
+ }
280
+ return adZoneInfoList;
281
+ }
282
+
283
+ /**
284
+ * Creates all off-screen Ad Zone Info objects based on provided off-screen Ad Zones.
285
+ * @param adZones - The object of available zones.
286
+ * @returns the array of off-screen Ad Zone Info objects.
287
+ */
288
+ generateOffScreenAdZones(adZones) {
289
+ const adZoneInfoList = [];
290
+ for (const adZoneId in adZones) {
291
+ if (Object.prototype.hasOwnProperty.call(adZones, adZoneId)) {
292
+ this.offScreenAdZone?.forEach(zone => {
293
+ if (Number(adZones[adZoneId].id) === zone) {
294
+ adZoneInfoList.push({
295
+ zoneId: adZones[adZoneId].id,
296
+ adZone: /*#__PURE__*/React.createElement(_AdZone.AdZone, {
297
+ key: adZoneId,
298
+ appId: this.appId,
299
+ sessionId: this.sessionId,
300
+ udid: this.deviceInfo.udid,
301
+ deviceOs: this.deviceOs,
302
+ apiEnv: this.apiEnv,
303
+ xyDragDistanceAllowed: this.xyAdZoneDragDistanceAllowed || 25,
304
+ adZoneData: adZones[adZoneId],
305
+ onAddToListTriggered: items => {
306
+ (0, _util.safeInvoke)(this.onAddToListTriggered, items);
307
+ },
308
+ isAdZoneVisible: this.isAdZoneVisible,
309
+ offScreenAdZone: true
310
+ })
311
+ });
312
+ }
267
313
  });
268
314
  }
269
315
  }
@@ -287,6 +333,7 @@ class AdadaptedReactNativeSdk {
287
333
  }, this.deviceOs, this.apiEnv).then(response => {
288
334
  this.sessionInfo = response.data;
289
335
  this.adZones = this.generateAdZones(response.data.zones);
336
+ this.offScreenAdZones = this.generateOffScreenAdZones(response.data.zones);
290
337
 
291
338
  // Call the user defined callback indicating
292
339
  // the session data has been refreshed.
@@ -379,25 +426,25 @@ class AdadaptedReactNativeSdk {
379
426
  */
380
427
  handleDeepLink(event) {
381
428
  const searchStr = "data=";
382
- const dataIndex = event["url"].indexOf(searchStr);
429
+ const dataIndex = event.url.indexOf(searchStr);
383
430
  if (dataIndex !== -1) {
384
- const encodedData = event.url.substr(dataIndex + searchStr.length);
431
+ const encodedData = event.url.substr(`${dataIndex}${searchStr.length}`);
385
432
  const payloadData = JSON.parse(_reactNativeBase.default.decode(encodedData));
386
- const payloadId = payloadData["payload_id"];
387
- const itemDataList = payloadData["detailed_list_items"];
433
+ const payloadId = payloadData.payload_id;
434
+ const itemDataList = payloadData.detailed_list_items;
388
435
  if (itemDataList && itemDataList.length > 0) {
389
436
  const finalItemList = [];
390
437
  for (const itemData of itemDataList) {
391
438
  finalItemList.push({
392
439
  payload_id: payloadId,
393
440
  detailed_list_items: [{
394
- product_title: itemData["product_title"],
395
- product_brand: itemData["product_brand"],
396
- product_category: itemData["product_category"],
397
- product_barcode: itemData["product_barcode"],
398
- product_discount: itemData["product_discount"],
399
- product_image: itemData["product_image"],
400
- product_sku: itemData["product_sku"]
441
+ product_title: itemData.product_title,
442
+ product_brand: itemData.product_brand,
443
+ product_category: itemData.product_category,
444
+ product_barcode: itemData.product_barcode,
445
+ product_discount: itemData.product_discount,
446
+ product_image: itemData.product_image,
447
+ product_sku: itemData.product_sku
401
448
  }]
402
449
  });
403
450
  }
@@ -433,13 +480,13 @@ class AdadaptedReactNativeSdk {
433
480
  finalItemList.push({
434
481
  payload_id: payload.payload_id,
435
482
  detailed_list_items: [{
436
- product_title: itemData["product_title"],
437
- product_brand: itemData["product_brand"],
438
- product_category: itemData["product_category"],
439
- product_barcode: itemData["product_barcode"],
440
- product_discount: itemData["product_discount"],
441
- product_image: itemData["product_image"],
442
- product_sku: itemData["product_sku"]
483
+ product_title: itemData.product_title,
484
+ product_brand: itemData.product_brand,
485
+ product_category: itemData.product_category,
486
+ product_barcode: itemData.product_barcode,
487
+ product_discount: itemData.product_discount,
488
+ product_image: itemData.product_image,
489
+ product_sku: itemData.product_sku
443
490
  }]
444
491
  });
445
492
  }
@@ -454,9 +501,9 @@ class AdadaptedReactNativeSdk {
454
501
 
455
502
  /**
456
503
  * Notify the ad zone of visibility status change for off-screen ads.
504
+ * @param isVisible - Ad Zone visibility tracking.
457
505
  */
458
- onAdZoneVisibilityChanged() {
459
- const isVisible = !this.isAdZoneVisible;
506
+ onAdZoneVisibilityChanged(isVisible) {
460
507
  this.isAdZoneVisible = isVisible;
461
508
  _reactNative.DeviceEventEmitter.emit("visibility-event", isVisible);
462
509
  }
@@ -521,10 +568,9 @@ class AdadaptedReactNativeSdk {
521
568
  this.onOutOfAppPayloadAvailable = props.onOutOfAppPayloadAvailable;
522
569
  }
523
570
 
524
- // If provided for off-screen ads, set the ad zone visibility for ad tracking.
525
- if (props.defaultToInvisibleAdZone) {
526
- this.defaultAdZoneVisibility = props.defaultToInvisibleAdZone;
527
- this.onAdZoneVisibilityChanged();
571
+ // If provided set any off-screen ad zones.
572
+ if (props.offScreenAdZone) {
573
+ this.offScreenAdZone = props.offScreenAdZone;
528
574
  }
529
575
  return new Promise((resolve, reject) => {
530
576
  this.getDeviceInformation().then(deviceInfoObj => {
@@ -560,6 +606,7 @@ class AdadaptedReactNativeSdk {
560
606
  this.sessionId = response.data.session_id;
561
607
  this.sessionInfo = response.data;
562
608
  this.adZones = this.generateAdZones(response.data.zones);
609
+ this.offScreenAdZones = this.generateOffScreenAdZones(response.data.zones);
563
610
 
564
611
  // Start the session data refresh timer.
565
612
  this.onRefreshAdZones();
@@ -585,12 +632,15 @@ class AdadaptedReactNativeSdk {
585
632
  this.getPayloadItemData();
586
633
 
587
634
  // Initialize an event listener to intercept deep links while the app is running.
588
-
589
635
  this.deepLinkOnEventListener = _reactNative.Linking.addEventListener("url", this.handleDeepLink);
590
636
 
591
- // Initialize an event listener to intercept App state changes.
637
+ // // Initialize an event listener to intercept App state changes.
638
+ // this.AppStateOnEventListener =
639
+ // AppState.addEventListener(
640
+ // "change",
641
+ // this.handleAppStateChange
642
+ // );
592
643
 
593
- this.AppStateOnEventListener = _reactNative.AppState.addEventListener("change", this.handleAppStateChange);
594
644
  resolve();
595
645
  }).catch(err => {
596
646
  reject(err);