@thealteroffice/react-native-adgeist 0.0.17 → 0.0.18

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.
@@ -47,6 +47,8 @@ export const BannerAd = ({
47
47
  const [isLoading, setIsLoading] = useState(false);
48
48
  const [hasImpression, setHasImpression] = useState(false);
49
49
  const [hasView, setHasView] = useState(false);
50
+ const [isPaused, setIsPaused] = useState(true);
51
+ const [isManuallyControlled, setIsManuallyControlled] = useState(false);
50
52
  const renderStartTime = useRef(Date.now());
51
53
  const adRef = useRef(null);
52
54
  const visibilityStartTime = useRef(null);
@@ -55,8 +57,6 @@ export const BannerAd = ({
55
57
  const lastCheckTime = useRef(Date.now());
56
58
  const currentVisibilityRatio = useRef(0);
57
59
  const videoRef = useRef(null);
58
- const lastPausedTime = useRef(0);
59
- const isInView = useRef(false);
60
60
  const {
61
61
  isInitialized,
62
62
  publisherId,
@@ -109,7 +109,7 @@ export const BannerAd = ({
109
109
  }, [hasImpression, bidId, campaignId, adSpaceId, publisherId, apiKey, isTestEnvironment]);
110
110
 
111
111
  /**
112
- * Tracks view event for banner ads when visible for >=1s and >=50% in viewport
112
+ * Tracks view event for ads when visible for >=1s (banner) or >=2s (video) and >=50% in viewport
113
113
  */
114
114
  const trackView = useCallback(async () => {
115
115
  if (hasView || !hasImpression || !bidId || !campaignId) return;
@@ -127,7 +127,15 @@ export const BannerAd = ({
127
127
  }, [hasView, hasImpression, bidId, campaignId, adSpaceId, publisherId, apiKey, isTestEnvironment, dataSlotType]);
128
128
 
129
129
  /**
130
- * Calculates visibility ratio and updates view metrics
130
+ * Toggles play/pause state manually
131
+ */
132
+ const togglePlayPause = useCallback(() => {
133
+ setIsManuallyControlled(true);
134
+ setIsPaused(prev => !prev);
135
+ }, []);
136
+
137
+ /**
138
+ * Calculates visibility ratio, updates view metrics, and controls video playback
131
139
  */
132
140
  const checkVisibility = useCallback(() => {
133
141
  if (!adRef.current || !hasImpression) return;
@@ -154,23 +162,23 @@ export const BannerAd = ({
154
162
  if (!visibilityStartTime.current) {
155
163
  visibilityStartTime.current = currentTime;
156
164
  }
165
+ if (dataSlotType === 'video' && isPaused && !isManuallyControlled) {
166
+ setIsPaused(false);
167
+ }
157
168
  } else {
158
169
  visibilityStartTime.current = null;
170
+ if (dataSlotType === 'video' && !isPaused) {
171
+ setIsPaused(true);
172
+ setIsManuallyControlled(false);
173
+ }
159
174
  }
160
- if (viewTime.current >= (dataSlotType === 'video' ? 2000 : 1000) && visibilityRatio >= 0.5) {
175
+
176
+ // Only check for view tracking if view event hasn't been tracked yet
177
+ if (!hasView && viewTime.current >= (dataSlotType === 'video' ? 2000 : 1000) && visibilityRatio >= 0.5) {
161
178
  trackView();
162
179
  }
163
- if (dataSlotType === 'video' && videoRef.current) {
164
- if (visibilityRatio >= 0.5) {
165
- isInView.current = true;
166
- videoRef.current.seek(lastPausedTime.current || 0);
167
- } else {
168
- isInView.current = false;
169
- lastPausedTime.current = videoRef.current.currentTime || 0;
170
- }
171
- }
172
180
  });
173
- }, [hasImpression, trackView, dataSlotType]);
181
+ }, [hasImpression, trackView, dataSlotType, isPaused, hasView, isManuallyControlled]);
174
182
 
175
183
  /**
176
184
  * Handles ad click and sends click analytics
@@ -190,12 +198,13 @@ export const BannerAd = ({
190
198
  fetchAd();
191
199
  }, [fetchAd]);
192
200
  useEffect(() => {
193
- if (!hasImpression || hasView) return;
201
+ if (!hasImpression) return;
202
+ if (dataSlotType === 'banner' && hasView) return;
194
203
  const intervalId = setInterval(checkVisibility, 200);
195
204
  return () => {
196
205
  clearInterval(intervalId);
197
206
  };
198
- }, [hasImpression, hasView, checkVisibility]);
207
+ }, [hasImpression, checkVisibility, dataSlotType, hasView]);
199
208
  if (isLoading) {
200
209
  return /*#__PURE__*/_jsx(View, {
201
210
  style: [styles.loadingOverlayContainer, !isResponsive && {
@@ -253,20 +262,33 @@ export const BannerAd = ({
253
262
  },
254
263
  repeat: true,
255
264
  muted: isMuted,
265
+ paused: isPaused,
256
266
  onLoad: trackImpressionOnMediaLoad,
257
267
  onError: () => {
258
268
  setError(new Error('Failed to load ad video'));
259
269
  }
260
270
  })
261
- }), /*#__PURE__*/_jsx(TouchableWithoutFeedback, {
262
- onPress: () => setIsMuted(!isMuted),
263
- children: /*#__PURE__*/_jsx(Image, {
264
- style: styles.soundIcon,
265
- source: {
266
- uri: isMuted ? 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Muted.png' : 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Unmuted.png'
267
- },
268
- accessibilityLabel: isMuted ? 'Unmute video' : 'Mute video'
269
- })
271
+ }), /*#__PURE__*/_jsxs(View, {
272
+ style: styles.videoControls,
273
+ children: [/*#__PURE__*/_jsx(TouchableWithoutFeedback, {
274
+ onPress: togglePlayPause,
275
+ children: /*#__PURE__*/_jsx(Image, {
276
+ style: styles.playPauseIcon,
277
+ source: {
278
+ uri: isPaused ? 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Play.png' : 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Pause.png'
279
+ },
280
+ accessibilityLabel: isPaused ? 'Paused video' : 'Playing video'
281
+ })
282
+ }), /*#__PURE__*/_jsx(TouchableWithoutFeedback, {
283
+ onPress: () => setIsMuted(!isMuted),
284
+ children: /*#__PURE__*/_jsx(Image, {
285
+ style: styles.soundIcon,
286
+ source: {
287
+ uri: isMuted ? 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Muted.png' : 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Unmuted.png'
288
+ },
289
+ accessibilityLabel: isMuted ? 'Unmute video' : 'Mute video'
290
+ })
291
+ })]
270
292
  })]
271
293
  }), /*#__PURE__*/_jsxs(View, {
272
294
  style: styles.adContent,
@@ -282,7 +304,7 @@ export const BannerAd = ({
282
304
  numberOfLines: 1,
283
305
  ellipsizeMode: "tail",
284
306
  children: creativeData.creativeDescription
285
- }), /*#__PURE__*/_jsx(Text, {
307
+ }), creativeData?.creativeBrandName && /*#__PURE__*/_jsx(Text, {
286
308
  style: styles.brandName,
287
309
  numberOfLines: 1,
288
310
  ellipsizeMode: "tail",
@@ -324,6 +346,14 @@ const styles = StyleSheet.create({
324
346
  width: '100%',
325
347
  height: '70%'
326
348
  },
349
+ videoControls: {},
350
+ playPauseIcon: {
351
+ position: 'absolute',
352
+ bottom: 8,
353
+ left: 10,
354
+ width: 30,
355
+ height: 30
356
+ },
327
357
  soundIcon: {
328
358
  position: 'absolute',
329
359
  bottom: 10,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useState","useRef","Image","Linking","StyleSheet","Text","View","TouchableWithoutFeedback","ActivityIndicator","Dimensions","Video","Adgeist","useAdgeistContext","normalizeUrl","jsx","_jsx","jsxs","_jsxs","BannerAd","dataAdSlot","dataSlotType","width","height","isResponsive","onAdLoadError","onAdLoadSuccess","adData","setAdData","isMuted","setIsMuted","error","setError","isLoading","setIsLoading","hasImpression","setHasImpression","hasView","setHasView","renderStartTime","Date","now","adRef","visibilityStartTime","timeToVisible","viewTime","lastCheckTime","currentVisibilityRatio","videoRef","lastPausedTime","isInView","isInitialized","publisherId","apiKey","domain","isTestEnvironment","creativeData","seatBid","bid","ext","bidId","id","campaignId","adSpaceId","fetchAd","response","fetchCreative","creative","data","err","Error","trackImpressionOnMediaLoad","renderTime","current","trackImpression","console","trackView","currentViewTime","currentTimeToVisible","visibility","checkVisibility","measure","_x","_y","_width","_pageX","pageY","window","get","windowHeight","adTop","adBottom","windowTop","windowBottom","visibleTop","Math","max","visibleBottom","min","visibleHeight","visibilityRatio","currentTime","deltaTime","seek","handleClick","length","trackClick","openURL","ctaUrl","intervalId","setInterval","clearInterval","style","styles","loadingOverlayContainer","children","size","color","creativeUrl","accessible","accessibilityLabel","ref","adContainer","onPress","source","uri","resizeMode","onLoad","onError","e","nativeEvent","videoCreative","repeat","muted","soundIcon","adContent","contentContainer","title","numberOfLines","ellipsizeMode","creativeTitle","description","creativeDescription","brandName","creativeBrandName","linkButton","create","backgroundColor","borderRadius","alignItems","justifyContent","borderTopLeftRadius","borderTopRightRadius","position","bottom","right","flexDirection","paddingVertical","paddingRight","paddingLeft","borderBottomLeftRadius","borderBottomRightRadius","flex","marginRight","fontSize","fontWeight","marginBottom","textTransform","opacity","objectFit"],"sourceRoot":"../../../src","sources":["components/BannerAd.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,OAAO;AACvE,SACEC,KAAK,EACLC,OAAO,EACPC,UAAU,EACVC,IAAI,EACJC,IAAI,EACJC,wBAAwB,EACxBC,iBAAiB,EACjBC,UAAU,QACL,cAAc;AACrB,OAAOC,KAAK,MAAM,oBAAoB;AACtC,OAAOC,OAAO,MAAM,qBAAkB;AACtC,SAASC,iBAAiB,QAAQ,sBAAmB;AACrD,SAASC,YAAY,QAAQ,iBAAc;;AAE3C;AACA;AACA;;AAQA;AACA;AACA;;AAMA;AACA;AACA;;AAQA;AACA;AACA;;AASA;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAsBA,OAAO,MAAMC,QAAiC,GAAGA,CAAC;EAChDC,UAAU;EACVC,YAAY,GAAG,QAAQ;EACvBC,KAAK,GAAG,CAAC;EACTC,MAAM,GAAG,CAAC;EACVC,YAAY,GAAG,KAAK;EACpBC,aAAa;EACbC;AACF,CAAC,KAAK;EACJ,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG3B,QAAQ,CAAgB,IAAI,CAAC;EACzD,MAAM,CAAC4B,OAAO,EAAEC,UAAU,CAAC,GAAG7B,QAAQ,CAAU,IAAI,CAAC;EACrD,MAAM,CAAC8B,KAAK,EAAEC,QAAQ,CAAC,GAAG/B,QAAQ,CAAe,IAAI,CAAC;EACtD,MAAM,CAACgC,SAAS,EAAEC,YAAY,CAAC,GAAGjC,QAAQ,CAAU,KAAK,CAAC;EAC1D,MAAM,CAACkC,aAAa,EAAEC,gBAAgB,CAAC,GAAGnC,QAAQ,CAAU,KAAK,CAAC;EAClE,MAAM,CAACoC,OAAO,EAAEC,UAAU,CAAC,GAAGrC,QAAQ,CAAU,KAAK,CAAC;EACtD,MAAMsC,eAAe,GAAGrC,MAAM,CAACsC,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;EAC1C,MAAMC,KAAK,GAAGxC,MAAM,CAAO,IAAI,CAAC;EAChC,MAAMyC,mBAAmB,GAAGzC,MAAM,CAAgB,IAAI,CAAC;EACvD,MAAM0C,aAAa,GAAG1C,MAAM,CAAgB,IAAI,CAAC;EACjD,MAAM2C,QAAQ,GAAG3C,MAAM,CAAS,CAAC,CAAC;EAClC,MAAM4C,aAAa,GAAG5C,MAAM,CAASsC,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;EAChD,MAAMM,sBAAsB,GAAG7C,MAAM,CAAS,CAAC,CAAC;EAChD,MAAM8C,QAAQ,GAAG9C,MAAM,CAAM,IAAI,CAAC;EAClC,MAAM+C,cAAc,GAAG/C,MAAM,CAAS,CAAC,CAAC;EACxC,MAAMgD,QAAQ,GAAGhD,MAAM,CAAU,KAAK,CAAC;EAEvC,MAAM;IAAEiD,aAAa;IAAEC,WAAW;IAAEC,MAAM;IAAEC,MAAM;IAAEC;EAAkB,CAAC,GACrE1C,iBAAiB,CAAC,CAAC;EAErB,MAAM2C,YAAY,GAAG7B,MAAM,EAAE8B,OAAO,GAAG,CAAC,CAAC,EAAEC,GAAG,GAAG,CAAC,CAAC,EAAEC,GAAmB;EACxE,MAAMC,KAAK,GAAGjC,MAAM,EAAEkC,EAAE;EACxB,MAAMC,UAAU,GAAGnC,MAAM,EAAE8B,OAAO,GAAG,CAAC,CAAC,EAAEC,GAAG,GAAG,CAAC,CAAC,EAAEG,EAAE;EACrD,MAAME,SAAS,GAAG3C,UAAU;;EAE5B;AACF;AACA;EACE,MAAM4C,OAAO,GAAGjE,WAAW,CAAC,YAAY;IACtC,IAAI,CAACoD,aAAa,EAAE;IAEpB,IAAI;MACFjB,YAAY,CAAC,IAAI,CAAC;MAClBF,QAAQ,CAAC,IAAI,CAAC;MACdI,gBAAgB,CAAC,KAAK,CAAC;MACvBE,UAAU,CAAC,KAAK,CAAC;MAEjB,MAAM2B,QAAQ,GAAG,MAAMrD,OAAO,CAACsD,aAAa,CAC1Cb,MAAM,EACNC,MAAM,EACNlC,UAAU,EACVgC,WAAW,EACXG,iBACF,CAAC;MAED,MAAMY,QAA0B,GAAGF,QAA4B;MAC/DrC,SAAS,CAACuC,QAAQ,CAACC,IAAI,CAAC;MACxB1C,eAAe,GAAGyC,QAAQ,CAACC,IAAI,CAAC;IAClC,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZ,MAAMtC,KAAK,GAAGsC,GAAG,YAAYC,KAAK,GAAGD,GAAG,GAAG,IAAIC,KAAK,CAAC,gBAAgB,CAAC;MACtEtC,QAAQ,CAACD,KAAK,CAAC;MACfK,gBAAgB,CAAC,KAAK,CAAC;MACvBE,UAAU,CAAC,KAAK,CAAC;MACjBb,aAAa,GAAGM,KAAK,CAAC;IACxB,CAAC,SAAS;MACRG,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC,EAAE,CACDiB,aAAa,EACbC,WAAW,EACXhC,UAAU,EACViC,MAAM,EACNC,MAAM,EACNC,iBAAiB,EACjB9B,aAAa,EACbC,eAAe,CAChB,CAAC;;EAEF;AACF;AACA;EACE,MAAM6C,0BAA0B,GAAGxE,WAAW,CAAC,YAAY;IACzD,IAAIoC,aAAa,IAAI,CAACyB,KAAK,IAAI,CAACE,UAAU,EAAE;IAE5C,IAAI;MACF,MAAMU,UAAU,GAAGhC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,eAAe,CAACkC,OAAO;MAEvD,MAAM7D,OAAO,CAAC8D,eAAe,CAC3BZ,UAAU,EACVC,SAAS,EACTX,WAAW,EACXC,MAAM,EACNO,KAAK,EACLL,iBAAiB,EACjBiB,UACF,CAAC;MAEDpC,gBAAgB,CAAC,IAAI,CAAC;IACxB,CAAC,CAAC,OAAOiC,GAAG,EAAE;MACZM,OAAO,CAAC5C,KAAK,CAAC,6BAA6B,EAAEsC,GAAG,CAAC;IACnD;EACF,CAAC,EAAE,CACDlC,aAAa,EACbyB,KAAK,EACLE,UAAU,EACVC,SAAS,EACTX,WAAW,EACXC,MAAM,EACNE,iBAAiB,CAClB,CAAC;;EAEF;AACF;AACA;EACE,MAAMqB,SAAS,GAAG7E,WAAW,CAAC,YAAY;IACxC,IAAIsC,OAAO,IAAI,CAACF,aAAa,IAAI,CAACyB,KAAK,IAAI,CAACE,UAAU,EAAE;IAExD,IAAI;MACF,MAAMe,eAAe,GAAGhC,QAAQ,CAAC4B,OAAO;MACxC,MAAMK,oBAAoB,GAAGlC,aAAa,CAAC6B,OAAO,IAAI,CAAC;MACvD,MAAMM,UAAU,GAAGhC,sBAAsB,CAAC0B,OAAO;MAEjD,IACEI,eAAe,KAAKxD,YAAY,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,IAC3D0D,UAAU,IAAI,GAAG,IACjBnC,aAAa,CAAC6B,OAAO,KAAK,IAAI,EAC9B;QACA,MAAM7D,OAAO,CAACgE,SAAS,CACrBd,UAAU,EACVC,SAAS,EACTX,WAAW,EACXC,MAAM,EACNO,KAAK,EACLL,iBAAiB,EACjBsB,eAAe,EACfE,UAAU,EACV,CAAC,EACDD,oBACF,CAAC;QAEDxC,UAAU,CAAC,IAAI,CAAC;MAClB;IACF,CAAC,CAAC,OAAO+B,GAAG,EAAE;MACZM,OAAO,CAAC5C,KAAK,CAAC,uBAAuB,EAAEsC,GAAG,CAAC;IAC7C;EACF,CAAC,EAAE,CACDhC,OAAO,EACPF,aAAa,EACbyB,KAAK,EACLE,UAAU,EACVC,SAAS,EACTX,WAAW,EACXC,MAAM,EACNE,iBAAiB,EACjBlC,YAAY,CACb,CAAC;;EAEF;AACF;AACA;EACE,MAAM2D,eAAe,GAAGjF,WAAW,CAAC,MAAM;IACxC,IAAI,CAAC2C,KAAK,CAAC+B,OAAO,IAAI,CAACtC,aAAa,EAAE;IAEtCO,KAAK,CAAC+B,OAAO,CAACQ,OAAO,CAAC,CAACC,EAAE,EAAEC,EAAE,EAAEC,MAAM,EAAE7D,MAAM,EAAE8D,MAAM,EAAEC,KAAK,KAAK;MAC/D,MAAMC,MAAM,GAAG7E,UAAU,CAAC8E,GAAG,CAAC,QAAQ,CAAC;MACvC,MAAMC,YAAY,GAAGF,MAAM,CAAChE,MAAM;MAElC,MAAMmE,KAAK,GAAGJ,KAAK;MACnB,MAAMK,QAAQ,GAAGL,KAAK,GAAG/D,MAAM;MAC/B,MAAMqE,SAAS,GAAG,CAAC;MACnB,MAAMC,YAAY,GAAGJ,YAAY;MAEjC,MAAMK,UAAU,GAAGC,IAAI,CAACC,GAAG,CAACN,KAAK,EAAEE,SAAS,CAAC;MAC7C,MAAMK,aAAa,GAAGF,IAAI,CAACG,GAAG,CAACP,QAAQ,EAAEE,YAAY,CAAC;MACtD,MAAMM,aAAa,GAAGJ,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEC,aAAa,GAAGH,UAAU,CAAC;MAC7D,MAAMM,eAAe,GAAG7E,MAAM,GAAG,CAAC,GAAG4E,aAAa,GAAG5E,MAAM,GAAG,CAAC;MAC/DwB,sBAAsB,CAAC0B,OAAO,GAAG2B,eAAe;MAEhD,MAAMC,WAAW,GAAG7D,IAAI,CAACC,GAAG,CAAC,CAAC;MAC9B,MAAM6D,SAAS,GAAGD,WAAW,GAAGvD,aAAa,CAAC2B,OAAO;MACrD3B,aAAa,CAAC2B,OAAO,GAAG4B,WAAW;MAEnC,IAAID,eAAe,IAAI,GAAG,IAAIxD,aAAa,CAAC6B,OAAO,KAAK,IAAI,EAAE;QAC5D7B,aAAa,CAAC6B,OAAO,GAAG4B,WAAW,GAAG9D,eAAe,CAACkC,OAAO;MAC/D;MAEA,IAAI2B,eAAe,IAAI,GAAG,EAAE;QAC1BvD,QAAQ,CAAC4B,OAAO,IAAI6B,SAAS;QAC7B,IAAI,CAAC3D,mBAAmB,CAAC8B,OAAO,EAAE;UAChC9B,mBAAmB,CAAC8B,OAAO,GAAG4B,WAAW;QAC3C;MACF,CAAC,MAAM;QACL1D,mBAAmB,CAAC8B,OAAO,GAAG,IAAI;MACpC;MAEA,IACE5B,QAAQ,CAAC4B,OAAO,KAAKpD,YAAY,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,IAC5D+E,eAAe,IAAI,GAAG,EACtB;QACAxB,SAAS,CAAC,CAAC;MACb;MAEA,IAAIvD,YAAY,KAAK,OAAO,IAAI2B,QAAQ,CAACyB,OAAO,EAAE;QAChD,IAAI2B,eAAe,IAAI,GAAG,EAAE;UAC1BlD,QAAQ,CAACuB,OAAO,GAAG,IAAI;UACvBzB,QAAQ,CAACyB,OAAO,CAAC8B,IAAI,CAACtD,cAAc,CAACwB,OAAO,IAAI,CAAC,CAAC;QACpD,CAAC,MAAM;UACLvB,QAAQ,CAACuB,OAAO,GAAG,KAAK;UACxBxB,cAAc,CAACwB,OAAO,GAAGzB,QAAQ,CAACyB,OAAO,CAAC4B,WAAW,IAAI,CAAC;QAC5D;MACF;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAAClE,aAAa,EAAEyC,SAAS,EAAEvD,YAAY,CAAC,CAAC;;EAE5C;AACF;AACA;EACE,MAAMmF,WAAW,GAAGzG,WAAW,CAAC,YAAY;IAC1C,IAAI,CAAC4B,MAAM,IAAI,CAACA,MAAM,CAAC8B,OAAO,CAACgD,MAAM,IAAI,CAAC7C,KAAK,IAAI,CAACE,UAAU,EAAE;IAEhE,IAAI;MACFlD,OAAO,CAAC8F,UAAU,CAChB5C,UAAU,EACVC,SAAS,EACTX,WAAW,EACXC,MAAM,EACNO,KAAK,EACLL,iBACF,CAAC;MAED,MAAMnD,OAAO,CAACuG,OAAO,CAAC7F,YAAY,CAAC0C,YAAY,CAACoD,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,OAAOvC,GAAG,EAAE;MACZM,OAAO,CAAC5C,KAAK,CAAC,4BAA4B,EAAEsC,GAAG,CAAC;IAClD;EACF,CAAC,EAAE,CACD1C,MAAM,EACNiC,KAAK,EACLE,UAAU,EACVC,SAAS,EACTX,WAAW,EACXC,MAAM,EACNE,iBAAiB,EACjBC,YAAY,CACb,CAAC;EAEFxD,SAAS,CAAC,MAAM;IACduC,eAAe,CAACkC,OAAO,GAAGjC,IAAI,CAACC,GAAG,CAAC,CAAC;IACpCK,aAAa,CAAC2B,OAAO,GAAGjC,IAAI,CAACC,GAAG,CAAC,CAAC;IAClCuB,OAAO,CAAC,CAAC;EACX,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEbhE,SAAS,CAAC,MAAM;IACd,IAAI,CAACmC,aAAa,IAAIE,OAAO,EAAE;IAE/B,MAAMwE,UAAU,GAAGC,WAAW,CAAC9B,eAAe,EAAE,GAAG,CAAC;IAEpD,OAAO,MAAM;MACX+B,aAAa,CAACF,UAAU,CAAC;IAC3B,CAAC;EACH,CAAC,EAAE,CAAC1E,aAAa,EAAEE,OAAO,EAAE2C,eAAe,CAAC,CAAC;EAE7C,IAAI/C,SAAS,EAAE;IACb,oBACEjB,IAAA,CAACT,IAAI;MACHyG,KAAK,EAAE,CACLC,MAAM,CAACC,uBAAuB,EAC9B,CAAC1F,YAAY,IAAI;QAAEF,KAAK,EAAEA,KAAK;QAAEC,MAAM,EAAEA;MAAO,CAAC,CACjD;MAAA4F,QAAA,eAEFnG,IAAA,CAACP,iBAAiB;QAAC2G,IAAI,EAAC,OAAO;QAACC,KAAK,EAAC;MAAS,CAAE;IAAC,CAC9C,CAAC;EAEX;EAEA,IAAI,CAAC7D,YAAY,EAAE8D,WAAW,IAAIvF,KAAK,EAAE,OAAO,IAAI;EAEpD,oBACEf,IAAA,CAACR,wBAAwB;IACvB+G,UAAU;IACVC,kBAAkB,EAAC,WAAW;IAC9BR,KAAK,EAAE;MAAE1F,KAAK,EAAE,MAAM;MAAEC,MAAM,EAAE;IAAO,CAAE;IAAA4F,QAAA,eAEzCjG,KAAA,CAACX,IAAI;MACHkH,GAAG,EAAE/E,KAAM;MACXsE,KAAK,EAAE,CACLC,MAAM,CAACS,WAAW,EAClB,CAAClG,YAAY,IAAI;QAAEF,KAAK,EAAEA,KAAK;QAAEC,MAAM,EAAEA;MAAO,CAAC,CACjD;MAAA4F,QAAA,GAED9F,YAAY,KAAK,QAAQ,gBACxBL,IAAA,CAACR,wBAAwB;QAACmH,OAAO,EAAEnB,WAAY;QAAAW,QAAA,eAC7CnG,IAAA,CAACb,KAAK;UACJ6G,KAAK,EAAEC,MAAM,CAAC9C,QAAS;UACvByD,MAAM,EAAE;YAAEC,GAAG,EAAErE,YAAY,CAAC8D;UAAY,CAAE;UAC1CE,kBAAkB,EAAC,aAAa;UAChCM,UAAU,EAAC,SAAS;UACpBC,MAAM,EAAExD,0BAA2B;UACnCyD,OAAO,EAAGC,CAAC,IAAK;YACdtD,OAAO,CAAC5C,KAAK,CAAC,mBAAmB,EAAEkG,CAAC,CAACC,WAAW,CAACnG,KAAK,CAAC;YACvDC,QAAQ,CAAC,IAAIsC,KAAK,CAAC,yBAAyB,CAAC,CAAC;UAChD;QAAE,CACH;MAAC,CACsB,CAAC,gBAE3BpD,KAAA,CAACX,IAAI;QAACyG,KAAK,EAAEC,MAAM,CAACkB,aAAc;QAAAhB,QAAA,gBAChCnG,IAAA,CAACR,wBAAwB;UAACmH,OAAO,EAAEnB,WAAY;UAAAW,QAAA,eAC7CnG,IAAA,CAACL,KAAK;YACJ8G,GAAG,EAAEzE,QAAS;YACd4E,MAAM,EAAE;cAAEC,GAAG,EAAErE,YAAY,CAAC8D;YAAY,CAAE;YAC1CQ,UAAU,EAAC,SAAS;YACpBd,KAAK,EAAE;cAAE1F,KAAK,EAAE,MAAM;cAAEC,MAAM,EAAE;YAAO,CAAE;YACzC6G,MAAM,EAAE,IAAK;YACbC,KAAK,EAAExG,OAAQ;YACfkG,MAAM,EAAExD,0BAA2B;YACnCyD,OAAO,EAAEA,CAAA,KAAM;cACbhG,QAAQ,CAAC,IAAIsC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAChD;UAAE,CACH;QAAC,CACsB,CAAC,eAC3BtD,IAAA,CAACR,wBAAwB;UAACmH,OAAO,EAAEA,CAAA,KAAM7F,UAAU,CAAC,CAACD,OAAO,CAAE;UAAAsF,QAAA,eAC5DnG,IAAA,CAACb,KAAK;YACJ6G,KAAK,EAAEC,MAAM,CAACqB,SAAU;YACxBV,MAAM,EAAE;cACNC,GAAG,EAAEhG,OAAO,GACR,0DAA0D,GAC1D;YACN,CAAE;YACF2F,kBAAkB,EAAE3F,OAAO,GAAG,cAAc,GAAG;UAAa,CAC7D;QAAC,CACsB,CAAC;MAAA,CACvB,CACP,eAEDX,KAAA,CAACX,IAAI;QAACyG,KAAK,EAAEC,MAAM,CAACsB,SAAU;QAAApB,QAAA,gBAC5BjG,KAAA,CAACX,IAAI;UAACyG,KAAK,EAAEC,MAAM,CAACuB,gBAAiB;UAAArB,QAAA,gBACnCnG,IAAA,CAACV,IAAI;YAAC0G,KAAK,EAAEC,MAAM,CAACwB,KAAM;YAACC,aAAa,EAAE,CAAE;YAACC,aAAa,EAAC,MAAM;YAAAxB,QAAA,EAC9D3D,YAAY,CAACoF;UAAa,CACvB,CAAC,eACP5H,IAAA,CAACV,IAAI;YACH0G,KAAK,EAAEC,MAAM,CAAC4B,WAAY;YAC1BH,aAAa,EAAE,CAAE;YACjBC,aAAa,EAAC,MAAM;YAAAxB,QAAA,EAEnB3D,YAAY,CAACsF;UAAmB,CAC7B,CAAC,eACP9H,IAAA,CAACV,IAAI;YACH0G,KAAK,EAAEC,MAAM,CAAC8B,SAAU;YACxBL,aAAa,EAAE,CAAE;YACjBC,aAAa,EAAC,MAAM;YAAAxB,QAAA,EAEnB3D,YAAY,EAAEwF,iBAAiB,IAAI;UAAgB,CAChD,CAAC;QAAA,CACH,CAAC,eACPhI,IAAA,CAACR,wBAAwB;UAACmH,OAAO,EAAEnB,WAAY;UAAAW,QAAA,eAC7CnG,IAAA,CAACb,KAAK;YACJ6G,KAAK,EAAEC,MAAM,CAACgC,UAAW;YACzBrB,MAAM,EAAE;cACNC,GAAG,EAAE;YACP,CAAE;YACFL,kBAAkB,EAAC;UAAuB,CAC3C;QAAC,CACsB,CAAC;MAAA,CACvB,CAAC;IAAA,CACH;EAAC,CACiB,CAAC;AAE/B,CAAC;AAED,MAAMP,MAAM,GAAG5G,UAAU,CAAC6I,MAAM,CAAC;EAC/BxB,WAAW,EAAE;IACXyB,eAAe,EAAE,SAAS;IAC1BC,YAAY,EAAE;EAChB,CAAC;EACDlC,uBAAuB,EAAE;IACvBmC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDnF,QAAQ,EAAE;IACR2D,UAAU,EAAE,SAAS;IACrByB,mBAAmB,EAAE,CAAC;IACtBJ,eAAe,EAAE,SAAS;IAC1BK,oBAAoB,EAAE,CAAC;IACvBlI,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV,CAAC;EACD4G,aAAa,EAAE;IACbsB,QAAQ,EAAE,UAAU;IACpBnI,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV,CAAC;EACD+G,SAAS,EAAE;IACTmB,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE,EAAE;IACVC,KAAK,EAAE,EAAE;IACTrI,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE;EACV,CAAC;EACDgH,SAAS,EAAE;IACTjH,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,KAAK;IACb4H,eAAe,EAAE,SAAS;IAC1BS,aAAa,EAAE,KAAK;IACpBN,cAAc,EAAE,eAAe;IAC/BO,eAAe,EAAE,EAAE;IACnBC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,EAAE;IACfV,UAAU,EAAE,QAAQ;IACpBW,sBAAsB,EAAE,CAAC;IACzBC,uBAAuB,EAAE;EAC3B,CAAC;EACDzB,gBAAgB,EAAE;IAChB0B,IAAI,EAAE,CAAC;IACPC,WAAW,EAAE;EACf,CAAC;EACD1B,KAAK,EAAE;IACLpB,KAAK,EAAE,SAAS;IAChB+C,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDxB,WAAW,EAAE;IACXxB,KAAK,EAAE,SAAS;IAChB+C,QAAQ,EAAE,EAAE;IACZE,YAAY,EAAE;EAChB,CAAC;EACDvB,SAAS,EAAE;IACT1B,KAAK,EAAE,SAAS;IAChB+C,QAAQ,EAAE,EAAE;IACZG,aAAa,EAAE,YAAY;IAC3BC,OAAO,EAAE;EACX,CAAC;EACDvB,UAAU,EAAE;IACV3H,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVkJ,SAAS,EAAE;EACb;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useState","useRef","Image","Linking","StyleSheet","Text","View","TouchableWithoutFeedback","ActivityIndicator","Dimensions","Video","Adgeist","useAdgeistContext","normalizeUrl","jsx","_jsx","jsxs","_jsxs","BannerAd","dataAdSlot","dataSlotType","width","height","isResponsive","onAdLoadError","onAdLoadSuccess","adData","setAdData","isMuted","setIsMuted","error","setError","isLoading","setIsLoading","hasImpression","setHasImpression","hasView","setHasView","isPaused","setIsPaused","isManuallyControlled","setIsManuallyControlled","renderStartTime","Date","now","adRef","visibilityStartTime","timeToVisible","viewTime","lastCheckTime","currentVisibilityRatio","videoRef","isInitialized","publisherId","apiKey","domain","isTestEnvironment","creativeData","seatBid","bid","ext","bidId","id","campaignId","adSpaceId","fetchAd","response","fetchCreative","creative","data","err","Error","trackImpressionOnMediaLoad","renderTime","current","trackImpression","console","trackView","currentViewTime","currentTimeToVisible","visibility","togglePlayPause","prev","checkVisibility","measure","_x","_y","_width","_pageX","pageY","window","get","windowHeight","adTop","adBottom","windowTop","windowBottom","visibleTop","Math","max","visibleBottom","min","visibleHeight","visibilityRatio","currentTime","deltaTime","handleClick","length","trackClick","openURL","ctaUrl","intervalId","setInterval","clearInterval","style","styles","loadingOverlayContainer","children","size","color","creativeUrl","accessible","accessibilityLabel","ref","adContainer","onPress","source","uri","resizeMode","onLoad","onError","e","nativeEvent","videoCreative","repeat","muted","paused","videoControls","playPauseIcon","soundIcon","adContent","contentContainer","title","numberOfLines","ellipsizeMode","creativeTitle","description","creativeDescription","creativeBrandName","brandName","linkButton","create","backgroundColor","borderRadius","alignItems","justifyContent","borderTopLeftRadius","borderTopRightRadius","position","bottom","left","right","flexDirection","paddingVertical","paddingRight","paddingLeft","borderBottomLeftRadius","borderBottomRightRadius","flex","marginRight","fontSize","fontWeight","marginBottom","textTransform","opacity","objectFit"],"sourceRoot":"../../../src","sources":["components/BannerAd.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BannerAd.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerAd.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAgBxE;;GAEG;AACH,UAAU,MAAM;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,GAAG,EAAE,CAAC;CACZ;AAED;;GAEG;AACH,UAAU,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,YAAY,CAAC;CACnB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAChD,kCAAkC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACvC,mCAAmC;IACnC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA6W5C,CAAC"}
1
+ {"version":3,"file":"BannerAd.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerAd.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAgBxE;;GAEG;AACH,UAAU,MAAM;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,GAAG,EAAE,CAAC;CACZ;AAED;;GAEG;AACH,UAAU,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,YAAY,CAAC;CACnB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAChD,kCAAkC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACvC,mCAAmC;IACnC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAgZ5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thealteroffice/react-native-adgeist",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "description": "Publishers can integrate our SDK to connect their ad spaces to the AdGeist marketplace.",
5
5
  "main": "./lib/module/index.js",
6
6
  "module": "./lib/module/index.js",
@@ -143,6 +143,7 @@
143
143
  "source": "src",
144
144
  "output": "lib",
145
145
  "targets": [
146
+ "codegen",
146
147
  [
147
148
  "module",
148
149
  {
@@ -161,9 +162,14 @@
161
162
  "name": "RNAdgeistSpec",
162
163
  "type": "modules",
163
164
  "jsSrcsDir": "src",
165
+ "outputDir": {
166
+ "ios": "ios/generated",
167
+ "android": "android/generated"
168
+ },
164
169
  "android": {
165
170
  "javaPackageName": "com.adgeist"
166
- }
171
+ },
172
+ "includesGeneratedCode": true
167
173
  },
168
174
  "create-react-native-library": {
169
175
  "type": "turbo-module",
@@ -95,6 +95,9 @@ export const BannerAd: React.FC<AdBannerProps> = ({
95
95
  const [isLoading, setIsLoading] = useState<boolean>(false);
96
96
  const [hasImpression, setHasImpression] = useState<boolean>(false);
97
97
  const [hasView, setHasView] = useState<boolean>(false);
98
+ const [isPaused, setIsPaused] = useState<boolean>(true);
99
+ const [isManuallyControlled, setIsManuallyControlled] =
100
+ useState<boolean>(false);
98
101
  const renderStartTime = useRef(Date.now());
99
102
  const adRef = useRef<View>(null);
100
103
  const visibilityStartTime = useRef<number | null>(null);
@@ -103,8 +106,6 @@ export const BannerAd: React.FC<AdBannerProps> = ({
103
106
  const lastCheckTime = useRef<number>(Date.now());
104
107
  const currentVisibilityRatio = useRef<number>(0);
105
108
  const videoRef = useRef<any>(null);
106
- const lastPausedTime = useRef<number>(0);
107
- const isInView = useRef<boolean>(false);
108
109
 
109
110
  const { isInitialized, publisherId, apiKey, domain, isTestEnvironment } =
110
111
  useAdgeistContext();
@@ -191,7 +192,7 @@ export const BannerAd: React.FC<AdBannerProps> = ({
191
192
  ]);
192
193
 
193
194
  /**
194
- * Tracks view event for banner ads when visible for >=1s and >=50% in viewport
195
+ * Tracks view event for ads when visible for >=1s (banner) or >=2s (video) and >=50% in viewport
195
196
  */
196
197
  const trackView = useCallback(async () => {
197
198
  if (hasView || !hasImpression || !bidId || !campaignId) return;
@@ -237,7 +238,15 @@ export const BannerAd: React.FC<AdBannerProps> = ({
237
238
  ]);
238
239
 
239
240
  /**
240
- * Calculates visibility ratio and updates view metrics
241
+ * Toggles play/pause state manually
242
+ */
243
+ const togglePlayPause = useCallback(() => {
244
+ setIsManuallyControlled(true);
245
+ setIsPaused((prev) => !prev);
246
+ }, []);
247
+
248
+ /**
249
+ * Calculates visibility ratio, updates view metrics, and controls video playback
241
250
  */
242
251
  const checkVisibility = useCallback(() => {
243
252
  if (!adRef.current || !hasImpression) return;
@@ -270,28 +279,34 @@ export const BannerAd: React.FC<AdBannerProps> = ({
270
279
  if (!visibilityStartTime.current) {
271
280
  visibilityStartTime.current = currentTime;
272
281
  }
282
+ if (dataSlotType === 'video' && isPaused && !isManuallyControlled) {
283
+ setIsPaused(false);
284
+ }
273
285
  } else {
274
286
  visibilityStartTime.current = null;
287
+ if (dataSlotType === 'video' && !isPaused) {
288
+ setIsPaused(true);
289
+ setIsManuallyControlled(false);
290
+ }
275
291
  }
276
292
 
293
+ // Only check for view tracking if view event hasn't been tracked yet
277
294
  if (
295
+ !hasView &&
278
296
  viewTime.current >= (dataSlotType === 'video' ? 2000 : 1000) &&
279
297
  visibilityRatio >= 0.5
280
298
  ) {
281
299
  trackView();
282
300
  }
283
-
284
- if (dataSlotType === 'video' && videoRef.current) {
285
- if (visibilityRatio >= 0.5) {
286
- isInView.current = true;
287
- videoRef.current.seek(lastPausedTime.current || 0);
288
- } else {
289
- isInView.current = false;
290
- lastPausedTime.current = videoRef.current.currentTime || 0;
291
- }
292
- }
293
301
  });
294
- }, [hasImpression, trackView, dataSlotType]);
302
+ }, [
303
+ hasImpression,
304
+ trackView,
305
+ dataSlotType,
306
+ isPaused,
307
+ hasView,
308
+ isManuallyControlled,
309
+ ]);
295
310
 
296
311
  /**
297
312
  * Handles ad click and sends click analytics
@@ -331,14 +346,16 @@ export const BannerAd: React.FC<AdBannerProps> = ({
331
346
  }, [fetchAd]);
332
347
 
333
348
  useEffect(() => {
334
- if (!hasImpression || hasView) return;
349
+ if (!hasImpression) return;
350
+
351
+ if (dataSlotType === 'banner' && hasView) return;
335
352
 
336
353
  const intervalId = setInterval(checkVisibility, 200);
337
354
 
338
355
  return () => {
339
356
  clearInterval(intervalId);
340
357
  };
341
- }, [hasImpression, hasView, checkVisibility]);
358
+ }, [hasImpression, checkVisibility, dataSlotType, hasView]);
342
359
 
343
360
  if (isLoading) {
344
361
  return (
@@ -392,23 +409,39 @@ export const BannerAd: React.FC<AdBannerProps> = ({
392
409
  style={{ width: '100%', height: '100%' }}
393
410
  repeat={true}
394
411
  muted={isMuted}
412
+ paused={isPaused}
395
413
  onLoad={trackImpressionOnMediaLoad}
396
414
  onError={() => {
397
415
  setError(new Error('Failed to load ad video'));
398
416
  }}
399
417
  />
400
418
  </TouchableWithoutFeedback>
401
- <TouchableWithoutFeedback onPress={() => setIsMuted(!isMuted)}>
402
- <Image
403
- style={styles.soundIcon}
404
- source={{
405
- uri: isMuted
406
- ? 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Muted.png'
407
- : 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Unmuted.png',
408
- }}
409
- accessibilityLabel={isMuted ? 'Unmute video' : 'Mute video'}
410
- />
411
- </TouchableWithoutFeedback>
419
+ <View style={styles.videoControls}>
420
+ <TouchableWithoutFeedback onPress={togglePlayPause}>
421
+ <Image
422
+ style={styles.playPauseIcon}
423
+ source={{
424
+ uri: isPaused
425
+ ? 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Play.png'
426
+ : 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Pause.png',
427
+ }}
428
+ accessibilityLabel={
429
+ isPaused ? 'Paused video' : 'Playing video'
430
+ }
431
+ />
432
+ </TouchableWithoutFeedback>
433
+ <TouchableWithoutFeedback onPress={() => setIsMuted(!isMuted)}>
434
+ <Image
435
+ style={styles.soundIcon}
436
+ source={{
437
+ uri: isMuted
438
+ ? 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Muted.png'
439
+ : 'https://d2cfeg6k9cklz9.cloudfront.net/ad-icons/Unmuted.png',
440
+ }}
441
+ accessibilityLabel={isMuted ? 'Unmute video' : 'Mute video'}
442
+ />
443
+ </TouchableWithoutFeedback>
444
+ </View>
412
445
  </View>
413
446
  )}
414
447
 
@@ -424,13 +457,15 @@ export const BannerAd: React.FC<AdBannerProps> = ({
424
457
  >
425
458
  {creativeData.creativeDescription}
426
459
  </Text>
427
- <Text
428
- style={styles.brandName}
429
- numberOfLines={1}
430
- ellipsizeMode="tail"
431
- >
432
- {creativeData?.creativeBrandName || 'The Brand Name'}
433
- </Text>
460
+ {creativeData?.creativeBrandName && (
461
+ <Text
462
+ style={styles.brandName}
463
+ numberOfLines={1}
464
+ ellipsizeMode="tail"
465
+ >
466
+ {creativeData?.creativeBrandName || 'The Brand Name'}
467
+ </Text>
468
+ )}
434
469
  </View>
435
470
  <TouchableWithoutFeedback onPress={handleClick}>
436
471
  <Image
@@ -469,6 +504,14 @@ const styles = StyleSheet.create({
469
504
  width: '100%',
470
505
  height: '70%',
471
506
  },
507
+ videoControls: {},
508
+ playPauseIcon: {
509
+ position: 'absolute',
510
+ bottom: 8,
511
+ left: 10,
512
+ width: 30,
513
+ height: 30,
514
+ },
472
515
  soundIcon: {
473
516
  position: 'absolute',
474
517
  bottom: 10,
@@ -1,3 +0,0 @@
1
- import { type ConfigPlugin } from '@expo/config-plugins';
2
- export declare const withRNAdgeistMainApplication: ConfigPlugin;
3
- export declare function ktFileUpdater(originalContents: string): string;
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withRNAdgeistMainApplication = void 0;
4
- exports.ktFileUpdater = ktFileUpdater;
5
- const config_plugins_1 = require("@expo/config-plugins");
6
- const generateCode_1 = require("@expo/config-plugins/build/utils/generateCode");
7
- const withRNAdgeistMainApplication = (config) => {
8
- return (0, config_plugins_1.withAppBuildGradle)((0, config_plugins_1.withMainApplication)(config, readMainApplicationFileAndUpdateContents), readBuildGradleFileAndUpdateContents);
9
- };
10
- exports.withRNAdgeistMainApplication = withRNAdgeistMainApplication;
11
- // 1. MainActivity Modifications
12
- async function readMainApplicationFileAndUpdateContents(config) {
13
- const { modResults: mainApplicationFile } = config;
14
- const worker = getCompatibleFileUpdater(mainApplicationFile.language);
15
- mainApplicationFile.contents = worker(mainApplicationFile.contents);
16
- return config;
17
- }
18
- function readBuildGradleFileAndUpdateContents(config) {
19
- const { modResults } = config;
20
- if (!modResults.contents.includes('implementation "ai.adgeist:adgeistkit:')) {
21
- modResults.contents = modResults.contents.replace(/dependencies\s*{/, `dependencies {
22
- implementation "ai.adgeist:adgeistkit:0.0.1" // AdgeistKit Dependency`);
23
- }
24
- return config;
25
- }
26
- function getCompatibleFileUpdater(language) {
27
- switch (language) {
28
- case 'kt':
29
- return ktFileUpdater;
30
- default:
31
- throw new Error(`Cannot add React Native Orientation Director code to MainActivity of language "${language}"`);
32
- }
33
- }
34
- function ktFileUpdater(originalContents) {
35
- // Safer anchor detection
36
- const anchors = [
37
- /super\.onCreate\(/,
38
- /@Override\s+fun onCreate\(/,
39
- /class \w+ : ReactActivity/,
40
- ].find((anchor) => anchor.test(originalContents));
41
- if (!anchors) {
42
- throw new Error('Could not find suitable insertion point in MainActivity');
43
- }
44
- const packageImportCodeBlock = 'import com.adgeist.AdgeistPackage';
45
- const rightBeforeClassDeclaration = /import com.facebook.react.ReactPackage/;
46
- const importMergeResults = (0, generateCode_1.mergeContents)({
47
- tag: '@react-native-adgeist/package-import',
48
- src: originalContents,
49
- newSrc: packageImportCodeBlock,
50
- anchor: rightBeforeClassDeclaration,
51
- offset: 0,
52
- comment: '// React Native Adgeist',
53
- });
54
- const onConfigurationChangedCodeBlock = `packages.add(AdgeistPackage())`;
55
- const rightBeforeOnReturnStatement = /return packages/;
56
- const implementationMergeResults = (0, generateCode_1.mergeContents)({
57
- tag: '@react-native-adgeist/package-initialization',
58
- src: importMergeResults.contents,
59
- newSrc: onConfigurationChangedCodeBlock,
60
- anchor: rightBeforeOnReturnStatement,
61
- offset: 0,
62
- comment: '// Package Initialization',
63
- });
64
- return implementationMergeResults.contents;
65
- }
@@ -1,3 +0,0 @@
1
- import { type ConfigPlugin } from '@expo/config-plugins';
2
- declare const _default: ConfigPlugin<void>;
3
- export default _default;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const config_plugins_1 = require("@expo/config-plugins");
4
- const withRNAdgeistMainApplication_1 = require("./android/withRNAdgeistMainApplication");
5
- const withRNAdgeistAppDelegate_1 = require("./ios/withRNAdgeistAppDelegate");
6
- /**
7
- * So, expo config plugin are awesome and the documentation is well written, but I still needed to look around to see
8
- * how other projects actually modify the AppDelegate. I've found react-native-firebase to implement a plugin config
9
- * that changes the AppDelegate, so I'll leave their link as reference:
10
- * https://github.com/invertase/react-native-firebase/blob/main/packages/app/plugin/src/ios/appDelegate.ts
11
- *
12
- * Kudos to them, because this stuff is hard!
13
- *
14
- * @param config
15
- */
16
- const withRNAdgeist = (config) => {
17
- return (0, config_plugins_1.withPlugins)(config, [
18
- //Android
19
- withRNAdgeistMainApplication_1.withRNAdgeistMainApplication,
20
- //iOS
21
- withRNAdgeistAppDelegate_1.withRNAdgeistAppDelegate,
22
- ]);
23
- };
24
- const pak = require('@thealteroffice/react-native-adgeist/package.json');
25
- exports.default = (0, config_plugins_1.createRunOncePlugin)(withRNAdgeist, pak.name, pak.version);
@@ -1,4 +0,0 @@
1
- import { type ConfigPlugin } from '@expo/config-plugins';
2
- export declare const withRNAdgeistAppDelegate: ConfigPlugin;
3
- export declare function swiftFileUpdater(originalContents: string): string;
4
- export declare function objCFileUpdater(originalContents: string): string;
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withRNAdgeistAppDelegate = void 0;
4
- exports.swiftFileUpdater = swiftFileUpdater;
5
- exports.objCFileUpdater = objCFileUpdater;
6
- const config_plugins_1 = require("@expo/config-plugins");
7
- const generateCode_1 = require("@expo/config-plugins/build/utils/generateCode");
8
- const withRNAdgeistAppDelegate = (config) => {
9
- return (0, config_plugins_1.withAppDelegate)(config, readAppDelegateFileAndUpdateContents);
10
- };
11
- exports.withRNAdgeistAppDelegate = withRNAdgeistAppDelegate;
12
- async function readAppDelegateFileAndUpdateContents(config) {
13
- const { modResults: appDelegateFile } = config;
14
- const worker = getCompatibleFileUpdater(appDelegateFile.language);
15
- appDelegateFile.contents = worker(appDelegateFile.contents);
16
- return config;
17
- }
18
- function getCompatibleFileUpdater(language) {
19
- switch (language) {
20
- case 'objc':
21
- case 'objcpp': {
22
- return objCFileUpdater;
23
- }
24
- case 'swift':
25
- return swiftFileUpdater;
26
- default:
27
- throw new Error(`Cannot add React Native Adgeist code to AppDelegate of language "${language}"`);
28
- }
29
- }
30
- function swiftFileUpdater(originalContents) {
31
- const wantsToAddAnyCodeBlock = ``;
32
- const rightBeforeLastClosingBrace = /didFinishLaunchingWithOptions:\s*launchOptions\)/g;
33
- const pasteInTheListJustAfterTheClosingBracket = 2;
34
- const results = (0, generateCode_1.mergeContents)({
35
- tag: '@react-native-adgeist/implementation',
36
- src: originalContents,
37
- newSrc: wantsToAddAnyCodeBlock,
38
- anchor: rightBeforeLastClosingBrace,
39
- offset: pasteInTheListJustAfterTheClosingBracket,
40
- comment: '// React Native Ageist',
41
- });
42
- return results.contents;
43
- }
44
- function objCFileUpdater(originalContents) {
45
- const libraryHeaderImportCodeBlock = '#import "Adgeist.h"\n';
46
- const rightBeforeAppDelegateImplementation = /@implementation\s+\w+/g;
47
- const headerImportMergeResults = (0, generateCode_1.mergeContents)({
48
- tag: '@react-native-adgeist/library-header-import',
49
- src: originalContents,
50
- newSrc: libraryHeaderImportCodeBlock,
51
- anchor: rightBeforeAppDelegateImplementation,
52
- offset: 0,
53
- comment: '// React Native Ageist',
54
- });
55
- const wantsToAddAnyCodeBlock = ``;
56
- const rightBeforeLastClosingEnd = /@end[^@]*$/g;
57
- const implementationMergeResults = (0, generateCode_1.mergeContents)({
58
- tag: '@react-native-adgeist/implementation',
59
- src: headerImportMergeResults.contents,
60
- newSrc: wantsToAddAnyCodeBlock,
61
- anchor: rightBeforeLastClosingEnd,
62
- offset: 0,
63
- comment: '// React Native Ageist',
64
- });
65
- return implementationMergeResults.contents;
66
- }