@thealteroffice/react-native-adgeist 0.0.6 → 0.0.7

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.
@@ -101,7 +101,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion")
101
101
 
102
102
  dependencies {
103
103
  implementation "com.facebook.react:react-android"
104
- implementation "ai.adgeist:adgeistkit:0.0.6"
104
+ implementation "ai.adgeist:adgeistkit:0.0.7"
105
105
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
106
106
  }
107
107
 
@@ -5,6 +5,8 @@ import com.facebook.react.bridge.ReactApplicationContext
5
5
  import com.facebook.react.bridge.Arguments
6
6
  import com.facebook.react.bridge.WritableMap
7
7
  import com.adgeistkit.AdgeistCore
8
+ import com.adgeistkit.FetchCreative
9
+ import com.adgeistkit.CreativeAnalytics
8
10
  import com.adgeistkit.CreativeDataModel
9
11
  import com.adgeistkit.BidResponseData
10
12
  import com.adgeistkit.SeatBid
@@ -14,33 +16,43 @@ import com.adgeistkit.BidExtension
14
16
 
15
17
  class AdgeistModuleImpl internal constructor(private val context: ReactApplicationContext) {
16
18
 
17
- private val adgeistInstanceFromLibrary = AdgeistCore.initialize(context.applicationContext)
18
- private val getAd = adgeistInstanceFromLibrary.getCreative()
19
- private val postCreativeAnalytic = adgeistInstanceFromLibrary.postCreativeAnalytics()
19
+ private var adgeistInstance: AdgeistCore? = null
20
+ private var getAd: FetchCreative? = null
21
+ private var postCreativeAnalytic: CreativeAnalytics? = null
22
+
23
+ fun initializeSdk(customDomain: String?, promise: Promise) {
24
+ try {
25
+ adgeistInstance = AdgeistCore.initialize(context.applicationContext, customDomain)
26
+ getAd = adgeistInstance?.getCreative()
27
+ postCreativeAnalytic = adgeistInstance?.postCreativeAnalytics()
28
+ promise.resolve("SDK initialized with domain: ${customDomain ?: "default"}")
29
+ } catch (e: Exception) {
30
+ promise.reject("INIT_FAILED", "SDK initialization failed", e)
31
+ }
32
+ }
20
33
 
21
34
  fun fetchCreative(apiKey: String, origin: String, adSpaceId: String, publisherId: String, isTestEnvironment: Boolean, promise: Promise) {
22
- getAd.fetchCreative(apiKey, origin, adSpaceId, publisherId, isTestEnvironment) { adData ->
35
+ getAd?.fetchCreative(apiKey, origin, adSpaceId, publisherId, isTestEnvironment) { adData ->
23
36
  if (adData != null) {
24
37
  promise.resolve(adData.toWritableMap())
25
38
  } else {
26
39
  promise.reject("NO_AD", "Ad data not available")
27
40
  }
28
- }
41
+ } ?: promise.reject("NOT_INITIALIZED", "SDK not initialized")
29
42
  }
30
43
 
31
44
  fun sendCreativeAnalytic(campaignId: String, adSpaceId: String, publisherId: String, eventType: String, origin: String, apiKey: String, bidId: String, isTestEnvironment: Boolean = true, promise: Promise) {
32
- postCreativeAnalytic.sendTrackingData(campaignId, adSpaceId, publisherId, eventType, origin, apiKey, bidId, isTestEnvironment) { adData ->
45
+ postCreativeAnalytic?.sendTrackingData(campaignId, adSpaceId, publisherId, eventType, origin, apiKey, bidId, isTestEnvironment) { adData ->
33
46
  if (adData != null) {
34
47
  promise.resolve(adData)
35
48
  } else {
36
49
  promise.reject("NO_AD", "Couldn't find the campaign to update analytics")
37
50
  }
38
- }
51
+ } ?: promise.reject("NOT_INITIALIZED", "SDK not initialized")
39
52
  }
40
53
 
41
54
  companion object {
42
55
  const val NAME = "Adgeist"
43
-
44
56
  }
45
57
  }
46
58
 
@@ -11,6 +11,10 @@ class AdgeistModule internal constructor(reactContext: ReactApplicationContext)
11
11
 
12
12
  override fun getName(): String = AdgeistModuleImpl.NAME
13
13
 
14
+ override fun initializeSdk(customDomain: String, promise: Promise) {
15
+ implementation.initializeSdk(customDomain, promise)
16
+ }
17
+
14
18
  override fun fetchCreative(apiKey: String, origin: String, adSpaceId: String, publisherId: String, isTestEnvironment: Boolean, promise: Promise) {
15
19
  implementation.fetchCreative(apiKey, origin, adSpaceId, publisherId, isTestEnvironment, promise)
16
20
  }
@@ -13,6 +13,11 @@ class AdgeistModule internal constructor(reactContext: ReactApplicationContext)
13
13
 
14
14
  override fun getName(): String = AdgeistModuleImpl.NAME
15
15
 
16
+ @ReactMethod
17
+ fun initializeSdk(customDomain: String, promise: Promise) {
18
+ implementation.initializeSdk(customDomain, promise)
19
+ }
20
+
16
21
  @ReactMethod
17
22
  fun fetchCreative(apiKey: String, origin: String, adSpaceId: String, publisherId: String, isTestEnvironment: Boolean, promise: Promise) {
18
23
  implementation.fetchCreative(apiKey, origin, adSpaceId, publisherId, isTestEnvironment, promise)
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAdgeist.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAsBlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAdgeist.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAuBlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
@@ -1,26 +1,43 @@
1
1
  "use strict";
2
2
 
3
- import React, { createContext, useContext } from 'react';
3
+ import React, { createContext, useContext, useEffect, useState } from 'react';
4
+ import Adgeist from "../NativeAdgeist.js";
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
6
  const AdgeistContext = /*#__PURE__*/createContext({
6
7
  publisherId: '',
7
8
  apiKey: '',
8
9
  domain: '',
9
- isTestEnvironment: true
10
+ isTestEnvironment: true,
11
+ isInitialized: false
10
12
  });
11
13
  export const AdgeistProvider = ({
12
14
  children,
13
15
  publisherId = '',
14
16
  apiKey = '',
15
17
  domain = '',
18
+ customAdgeistApiOrigin = 'bg-services-qa-api.adgeist.ai',
16
19
  isTestEnvironment = true
17
20
  }) => {
21
+ const [isInitialized, setIsInitialized] = useState(false);
22
+ useEffect(() => {
23
+ const initializeAdgeist = async () => {
24
+ try {
25
+ await Adgeist.initializeSdk(customAdgeistApiOrigin);
26
+ setIsInitialized(true);
27
+ } catch (error) {
28
+ console.error('Error initializing Adgeist SDK:', error);
29
+ setIsInitialized(false);
30
+ }
31
+ };
32
+ initializeAdgeist();
33
+ }, [customAdgeistApiOrigin]);
18
34
  return /*#__PURE__*/_jsx(AdgeistContext.Provider, {
19
35
  value: {
20
36
  publisherId,
21
37
  apiKey,
22
38
  domain,
23
- isTestEnvironment
39
+ isTestEnvironment,
40
+ isInitialized
24
41
  },
25
42
  children: children
26
43
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useContext","jsx","_jsx","AdgeistContext","publisherId","apiKey","domain","isTestEnvironment","AdgeistProvider","children","Provider","value","useAdgeistContext"],"sourceRoot":"../../../src","sources":["components/AdgeistProvider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiBzD,MAAMC,cAAc,gBAAGJ,aAAa,CAAqB;EACvDK,WAAW,EAAE,EAAE;EACfC,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE,EAAE;EACVC,iBAAiB,EAAE;AACrB,CAAC,CAAC;AAEF,OAAO,MAAMC,eAAmD,GAAGA,CAAC;EAClEC,QAAQ;EACRL,WAAW,GAAG,EAAE;EAChBC,MAAM,GAAG,EAAE;EACXC,MAAM,GAAG,EAAE;EACXC,iBAAiB,GAAG;AACtB,CAAC,KAAK;EACJ,oBACEL,IAAA,CAACC,cAAc,CAACO,QAAQ;IACtBC,KAAK,EAAE;MAAEP,WAAW;MAAEC,MAAM;MAAEC,MAAM;MAAEC;IAAkB,CAAE;IAAAE,QAAA,EAEzDA;EAAQ,CACc,CAAC;AAE9B,CAAC;AAED,OAAO,MAAMG,iBAAiB,GAAGA,CAAA,KAAMZ,UAAU,CAACG,cAAc,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","useContext","useEffect","useState","Adgeist","jsx","_jsx","AdgeistContext","publisherId","apiKey","domain","isTestEnvironment","isInitialized","AdgeistProvider","children","customAdgeistApiOrigin","setIsInitialized","initializeAdgeist","initializeSdk","error","console","Provider","value","useAdgeistContext"],"sourceRoot":"../../../src","sources":["components/AdgeistProvider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC7E,OAAOC,OAAO,MAAM,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAmBvC,MAAMC,cAAc,gBAAGP,aAAa,CAAqB;EACvDQ,WAAW,EAAE,EAAE;EACfC,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE,EAAE;EACVC,iBAAiB,EAAE,IAAI;EACvBC,aAAa,EAAE;AACjB,CAAC,CAAC;AAEF,OAAO,MAAMC,eAAmD,GAAGA,CAAC;EAClEC,QAAQ;EACRN,WAAW,GAAG,EAAE;EAChBC,MAAM,GAAG,EAAE;EACXC,MAAM,GAAG,EAAE;EACXK,sBAAsB,GAAG,+BAA+B;EACxDJ,iBAAiB,GAAG;AACtB,CAAC,KAAK;EACJ,MAAM,CAACC,aAAa,EAAEI,gBAAgB,CAAC,GAAGb,QAAQ,CAAC,KAAK,CAAC;EAEzDD,SAAS,CAAC,MAAM;IACd,MAAMe,iBAAiB,GAAG,MAAAA,CAAA,KAAY;MACpC,IAAI;QACF,MAAMb,OAAO,CAACc,aAAa,CAACH,sBAAsB,CAAC;QACnDC,gBAAgB,CAAC,IAAI,CAAC;MACxB,CAAC,CAAC,OAAOG,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,iCAAiC,EAAEA,KAAK,CAAC;QACvDH,gBAAgB,CAAC,KAAK,CAAC;MACzB;IACF,CAAC;IAEDC,iBAAiB,CAAC,CAAC;EACrB,CAAC,EAAE,CAACF,sBAAsB,CAAC,CAAC;EAE5B,oBACET,IAAA,CAACC,cAAc,CAACc,QAAQ;IACtBC,KAAK,EAAE;MAAEd,WAAW;MAAEC,MAAM;MAAEC,MAAM;MAAEC,iBAAiB;MAAEC;IAAc,CAAE;IAAAE,QAAA,EAExEA;EAAQ,CACc,CAAC;AAE9B,CAAC;AAED,OAAO,MAAMS,iBAAiB,GAAGA,CAAA,KAAMtB,UAAU,CAACM,cAAc,CAAC","ignoreList":[]}
@@ -4,13 +4,16 @@ import React, { useEffect, useState } from 'react';
4
4
  import { Dimensions, Image, Linking, StyleSheet, Text, View, TouchableWithoutFeedback, ActivityIndicator } from 'react-native';
5
5
  import Adgeist from "../NativeAdgeist.js";
6
6
  import { useAdgeistContext } from "./AdgeistProvider.js";
7
+ import Video from 'react-native-video';
7
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
9
  export const BannerAd = ({
9
- dataAdSlot
10
+ dataAdSlot,
11
+ dataSlotType = 'banner'
10
12
  }) => {
11
13
  const [adData, setAdData] = useState(null);
12
14
  const [isLoading, setIsLoading] = useState(false);
13
15
  const {
16
+ isInitialized,
14
17
  publisherId,
15
18
  apiKey,
16
19
  domain,
@@ -20,19 +23,21 @@ export const BannerAd = ({
20
23
  useEffect(() => {
21
24
  (async () => {
22
25
  try {
23
- setIsLoading(true);
24
- const response = await Adgeist.fetchCreative(apiKey, domain, dataAdSlot, publisherId, isTestEnvironment);
25
- const creative = response;
26
- setAdData(creative.data);
27
- setIsLoading(false);
28
- if (creative.data.seatBid.length > 0) {
29
- await Adgeist.sendCreativeAnalytic(creative.data.seatBid?.[0]?.bid?.[0]?.id || '', dataAdSlot, publisherId, 'IMPRESSION', domain, apiKey, creative.data.id, isTestEnvironment);
26
+ if (isInitialized) {
27
+ setIsLoading(true);
28
+ const response = await Adgeist.fetchCreative(apiKey, domain, dataAdSlot, publisherId, isTestEnvironment);
29
+ const creative = response;
30
+ setAdData(creative.data);
31
+ setIsLoading(false);
32
+ if (creative.data.seatBid.length > 0) {
33
+ await Adgeist.sendCreativeAnalytic(creative.data.seatBid?.[0]?.bid?.[0]?.id || '', dataAdSlot, publisherId, 'IMPRESSION', domain, apiKey, creative.data.id, isTestEnvironment);
34
+ }
30
35
  }
31
36
  } catch (error) {
32
37
  console.error('Ad load failed:', error);
33
38
  }
34
39
  })();
35
- }, [publisherId, dataAdSlot, apiKey, domain, isTestEnvironment]);
40
+ }, [isInitialized, publisherId, dataAdSlot, apiKey, domain, isTestEnvironment]);
36
41
  const handleClick = async () => {
37
42
  if (adData && adData?.seatBid.length > 0) {
38
43
  await Adgeist.sendCreativeAnalytic(adData?.seatBid?.[0]?.bid?.[0]?.id || '', dataAdSlot, publisherId, 'CLICK', domain, apiKey, adData.id, isTestEnvironment);
@@ -54,7 +59,7 @@ export const BannerAd = ({
54
59
  accessibilityLabel: "Ad Banner",
55
60
  children: /*#__PURE__*/_jsxs(View, {
56
61
  style: styles.adContainer,
57
- children: [/*#__PURE__*/_jsx(Image, {
62
+ children: [dataSlotType == 'banner' ? /*#__PURE__*/_jsx(Image, {
58
63
  style: [styles.creative, {
59
64
  width: '100%',
60
65
  height: 300
@@ -62,6 +67,15 @@ export const BannerAd = ({
62
67
  source: {
63
68
  uri: creativeData.creativeUrl
64
69
  }
70
+ }) : /*#__PURE__*/_jsx(Video, {
71
+ source: {
72
+ uri: creativeData.creativeUrl
73
+ },
74
+ style: {
75
+ width: '100%',
76
+ aspectRatio: 16 / 9,
77
+ height: 300
78
+ }
65
79
  }), /*#__PURE__*/_jsxs(View, {
66
80
  style: styles.adContent,
67
81
  children: [/*#__PURE__*/_jsxs(View, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useState","Dimensions","Image","Linking","StyleSheet","Text","View","TouchableWithoutFeedback","ActivityIndicator","Adgeist","useAdgeistContext","jsx","_jsx","jsxs","_jsxs","BannerAd","dataAdSlot","adData","setAdData","isLoading","setIsLoading","publisherId","apiKey","domain","isTestEnvironment","creativeData","seatBid","bid","ext","response","fetchCreative","creative","data","length","sendCreativeAnalytic","id","error","console","handleClick","openURL","ctaUrl","catch","err","style","styles","loadingOverlayContainer","children","size","color","creativeUrl","accessible","accessibilityLabel","adContainer","width","height","source","uri","adContent","contentContainer","title","numberOfLines","ellipsizeMode","creativeTitle","description","creativeDescription","brandName","creativeBrandName","onPress","linkButton","create","get","backgroundColor","borderRadius","alignItems","justifyContent","resizeMode","borderTopLeftRadius","borderTopRightRadius","flexDirection","paddingVertical","paddingHorizontal","borderBottomLeftRadius","borderBottomRightRadius","fontSize","fontWeight","opacity","marginTop"],"sourceRoot":"../../../src","sources":["components/BannerAd.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAClD,SACEC,UAAU,EACVC,KAAK,EACLC,OAAO,EACPC,UAAU,EACVC,IAAI,EACJC,IAAI,EACJC,wBAAwB,EACxBC,iBAAiB,QACZ,cAAc;AACrB,OAAOC,OAAO,MAAM,qBAAkB;AACtC,SAASC,iBAAiB,QAAQ,sBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAkCtD,OAAO,MAAMC,QAAiC,GAAGA,CAAC;EAAEC;AAAW,CAAC,KAAK;EACnE,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGlB,QAAQ,CAAgB,IAAI,CAAC;EACzD,MAAM,CAACmB,SAAS,EAAEC,YAAY,CAAC,GAAGpB,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM;IAAEqB,WAAW;IAAEC,MAAM;IAAEC,MAAM;IAAEC;EAAkB,CAAC,GACtDd,iBAAiB,CAAC,CAAC;EAErB,MAAMe,YAAY,GAAGR,MAAM,EAAES,OAAO,GAAG,CAAC,CAAC,EAAEC,GAAG,GAAG,CAAC,CAAC,EAAEC,GAAmB;EAExE7B,SAAS,CAAC,MAAM;IACd,CAAC,YAAY;MACX,IAAI;QACFqB,YAAY,CAAC,IAAI,CAAC;QAClB,MAAMS,QAAgB,GAAG,MAAMpB,OAAO,CAACqB,aAAa,CAClDR,MAAM,EACNC,MAAM,EACNP,UAAU,EACVK,WAAW,EACXG,iBACF,CAAC;QAED,MAAMO,QAA0B,GAAGF,QAA4B;QAC/DX,SAAS,CAACa,QAAQ,CAACC,IAAI,CAAC;QACxBZ,YAAY,CAAC,KAAK,CAAC;QAEnB,IAAIW,QAAQ,CAACC,IAAI,CAACN,OAAO,CAACO,MAAM,GAAG,CAAC,EAAE;UACpC,MAAMxB,OAAO,CAACyB,oBAAoB,CAChCH,QAAQ,CAACC,IAAI,CAACN,OAAO,GAAG,CAAC,CAAC,EAAEC,GAAG,GAAG,CAAC,CAAC,EAAEQ,EAAE,IAAI,EAAE,EAC9CnB,UAAU,EACVK,WAAW,EACX,YAAY,EACZE,MAAM,EACND,MAAM,EACNS,QAAQ,CAACC,IAAI,CAACG,EAAE,EAChBX,iBACF,CAAC;QACH;MACF,CAAC,CAAC,OAAOY,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,iBAAiB,EAAEA,KAAK,CAAC;MACzC;IACF,CAAC,EAAE,CAAC;EACN,CAAC,EAAE,CAACf,WAAW,EAAEL,UAAU,EAAEM,MAAM,EAAEC,MAAM,EAAEC,iBAAiB,CAAC,CAAC;EAEhE,MAAMc,WAAW,GAAG,MAAAA,CAAA,KAAY;IAC9B,IAAIrB,MAAM,IAAIA,MAAM,EAAES,OAAO,CAACO,MAAM,GAAG,CAAC,EAAE;MACxC,MAAMxB,OAAO,CAACyB,oBAAoB,CAChCjB,MAAM,EAAES,OAAO,GAAG,CAAC,CAAC,EAAEC,GAAG,GAAG,CAAC,CAAC,EAAEQ,EAAE,IAAI,EAAE,EACxCnB,UAAU,EACVK,WAAW,EACX,OAAO,EACPE,MAAM,EACND,MAAM,EACNL,MAAM,CAACkB,EAAE,EACTX,iBACF,CAAC;MACDrB,OAAO,CAACoC,OAAO,CAACd,YAAY,CAACe,MAAM,CAAC,CAACC,KAAK,CAAEC,GAAG,IAC7CL,OAAO,CAACD,KAAK,CAAC,qBAAqB,EAAEM,GAAG,CAC1C,CAAC;IACH;EACF,CAAC;EAED,IAAIvB,SAAS,EAAE;IACb,oBACEP,IAAA,CAACN,IAAI;MAACqC,KAAK,EAAEC,MAAM,CAACC,uBAAwB;MAAAC,QAAA,eAC1ClC,IAAA,CAACJ,iBAAiB;QAACuC,IAAI,EAAC,OAAO;QAACC,KAAK,EAAC;MAAS,CAAE;IAAC,CAC9C,CAAC;EAEX;EAEA,IAAI,CAACvB,YAAY,EAAEwB,WAAW,EAAE,OAAO,IAAI;EAE3C,oBACErC,IAAA,CAACL,wBAAwB;IAAC2C,UAAU;IAACC,kBAAkB,EAAC,WAAW;IAAAL,QAAA,eACjEhC,KAAA,CAACR,IAAI;MAACqC,KAAK,EAAEC,MAAM,CAACQ,WAAY;MAAAN,QAAA,gBAC9BlC,IAAA,CAACV,KAAK;QACJyC,KAAK,EAAE,CAACC,MAAM,CAACb,QAAQ,EAAE;UAAEsB,KAAK,EAAE,MAAM;UAAEC,MAAM,EAAE;QAAI,CAAC,CAAE;QACzDC,MAAM,EAAE;UAAEC,GAAG,EAAE/B,YAAY,CAACwB;QAAY;MAAE,CAC3C,CAAC,eACFnC,KAAA,CAACR,IAAI;QAACqC,KAAK,EAAEC,MAAM,CAACa,SAAU;QAAAX,QAAA,gBAC5BhC,KAAA,CAACR,IAAI;UAACqC,KAAK,EAAEC,MAAM,CAACc,gBAAiB;UAAAZ,QAAA,gBACnClC,IAAA,CAACP,IAAI;YAACsC,KAAK,EAAEC,MAAM,CAACe,KAAM;YAACC,aAAa,EAAE,CAAE;YAACC,aAAa,EAAC,MAAM;YAAAf,QAAA,EAC9DrB,YAAY,CAACqC;UAAa,CACvB,CAAC,eAEPlD,IAAA,CAACP,IAAI;YACHsC,KAAK,EAAEC,MAAM,CAACmB,WAAY;YAC1BH,aAAa,EAAE,CAAE;YACjBC,aAAa,EAAC,MAAM;YAAAf,QAAA,EAEnBrB,YAAY,CAACuC;UAAmB,CAC7B,CAAC,eAEPpD,IAAA,CAACP,IAAI;YACHsC,KAAK,EAAEC,MAAM,CAACqB,SAAU;YACxBL,aAAa,EAAE,CAAE;YACjBC,aAAa,EAAC,MAAM;YAAAf,QAAA,EAEnBrB,YAAY,EAAEyC,iBAAiB,IAAI;UAAY,CAC5C,CAAC;QAAA,CACH,CAAC,eACPtD,IAAA,CAACL,wBAAwB;UACvB4D,OAAO,EAAEA,CAAA,KAAM;YACb7B,WAAW,CAAC,CAAC;UACf,CAAE;UACFY,UAAU;UACVC,kBAAkB,EAAC,mBAAmB;UAAAL,QAAA,eAEtClC,IAAA,CAACV,KAAK;YACJyC,KAAK,EAAE,CAACC,MAAM,CAACwB,UAAU,CAAE;YAC3Bb,MAAM,EAAE;cACNC,GAAG,EAAE;YACP;UAAE,CACH;QAAC,CACsB,CAAC;MAAA,CACvB,CAAC;IAAA,CACH;EAAC,CACiB,CAAC;AAE/B,CAAC;AAED,MAAMZ,MAAM,GAAGxC,UAAU,CAACiE,MAAM,CAAC;EAC/BjB,WAAW,EAAE;IACXC,KAAK,EAAEpD,UAAU,CAACqE,GAAG,CAAC,QAAQ,CAAC,CAACjB,KAAK;IACrCkB,eAAe,EAAE,OAAO;IACxBC,YAAY,EAAE;EAChB,CAAC;EACD3B,uBAAuB,EAAE;IACvBQ,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,GAAG;IACXmB,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACD3C,QAAQ,EAAE;IACR4C,UAAU,EAAE,OAAO;IACnBC,mBAAmB,EAAE,CAAC;IACtBC,oBAAoB,EAAE;EACxB,CAAC;EACDpB,SAAS,EAAE;IACTJ,KAAK,EAAE,MAAM;IACbkB,eAAe,EAAE,OAAO;IACxBO,aAAa,EAAE,KAAK;IACpBJ,cAAc,EAAE,eAAe;IAC/BK,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE,EAAE;IACrBP,UAAU,EAAE,QAAQ;IACpBQ,sBAAsB,EAAE,CAAC;IACzBC,uBAAuB,EAAE;EAC3B,CAAC;EACDxB,gBAAgB,EAAE;IAChBL,KAAK,EAAEpD,UAAU,CAACqE,GAAG,CAAC,QAAQ,CAAC,CAACjB,KAAK,GAAG;EAC1C,CAAC;EACDM,KAAK,EAAE;IACLX,KAAK,EAAE,OAAO;IACdmC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDrB,WAAW,EAAE;IACXf,KAAK,EAAE,OAAO;IACdmC,QAAQ,EAAE;EACZ,CAAC;EACDlB,SAAS,EAAE;IACTjB,KAAK,EAAE,OAAO;IACdmC,QAAQ,EAAE,EAAE;IACZE,OAAO,EAAE,GAAG;IACZC,SAAS,EAAE,CAAC;IACZF,UAAU,EAAE;EACd,CAAC;EACDhB,UAAU,EAAE;IACVf,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useState","Dimensions","Image","Linking","StyleSheet","Text","View","TouchableWithoutFeedback","ActivityIndicator","Adgeist","useAdgeistContext","Video","jsx","_jsx","jsxs","_jsxs","BannerAd","dataAdSlot","dataSlotType","adData","setAdData","isLoading","setIsLoading","isInitialized","publisherId","apiKey","domain","isTestEnvironment","creativeData","seatBid","bid","ext","response","fetchCreative","creative","data","length","sendCreativeAnalytic","id","error","console","handleClick","openURL","ctaUrl","catch","err","style","styles","loadingOverlayContainer","children","size","color","creativeUrl","accessible","accessibilityLabel","adContainer","width","height","source","uri","aspectRatio","adContent","contentContainer","title","numberOfLines","ellipsizeMode","creativeTitle","description","creativeDescription","brandName","creativeBrandName","onPress","linkButton","create","get","backgroundColor","borderRadius","alignItems","justifyContent","resizeMode","borderTopLeftRadius","borderTopRightRadius","flexDirection","paddingVertical","paddingHorizontal","borderBottomLeftRadius","borderBottomRightRadius","fontSize","fontWeight","opacity","marginTop"],"sourceRoot":"../../../src","sources":["components/BannerAd.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import type { TurboModule } from 'react-native';
2
2
  export interface Spec extends TurboModule {
3
+ initializeSdk(customDomain: string): Promise<boolean>;
3
4
  fetchCreative(apiKey: string, origin: string, adSpaceId: string, publisherId: string, isTestEnvironment: boolean): Promise<Object>;
4
5
  sendCreativeAnalytic(campaignId: string, adSpaceId: string, publisherId: string, eventType: string, origin: string, apiKey: string, bidId: string, isTestEnvironment: boolean): Promise<Object>;
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NativeAdgeist.d.ts","sourceRoot":"","sources":["../../../src/NativeAdgeist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,aAAa,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,oBAAoB,CAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;;AAED,wBAAiE"}
1
+ {"version":3,"file":"NativeAdgeist.d.ts","sourceRoot":"","sources":["../../../src/NativeAdgeist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,aAAa,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,oBAAoB,CAClB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,OAAO,GACzB,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;;AAED,wBAAiE"}
@@ -4,9 +4,11 @@ interface AdgeistContextType {
4
4
  apiKey: string;
5
5
  domain: string;
6
6
  isTestEnvironment: boolean;
7
+ isInitialized: boolean;
7
8
  }
8
9
  interface AdgeistProviderPropsType {
9
10
  children: React.ReactNode;
11
+ customAdgeistApiOrigin?: string;
10
12
  publisherId: string;
11
13
  apiKey: string;
12
14
  domain: string;
@@ -1 +1 @@
1
- {"version":3,"file":"AdgeistProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/AdgeistProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,UAAU,wBAAwB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AASD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAc9D,CAAC;AAEF,eAAO,MAAM,iBAAiB,0BAAmC,CAAC"}
1
+ {"version":3,"file":"AdgeistProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/AdgeistProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAG9E,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,wBAAwB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAUD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA+B9D,CAAC;AAEF,eAAO,MAAM,iBAAiB,0BAAmC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  interface AdBannerTypes {
3
3
  dataAdSlot: string;
4
+ dataSlotType: 'banner' | 'video';
4
5
  width: number;
5
6
  height: number;
6
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BannerAd.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerAd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAwCnD,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAqH5C,CAAC"}
1
+ {"version":3,"file":"BannerAd.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerAd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAyCnD,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAyI5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thealteroffice/react-native-adgeist",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
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",
@@ -167,5 +167,8 @@
167
167
  "type": "turbo-module",
168
168
  "languages": "kotlin-objc",
169
169
  "version": "0.49.8"
170
+ },
171
+ "dependencies": {
172
+ "react-native-video": "^6.16.0"
170
173
  }
171
174
  }
@@ -2,6 +2,7 @@ import type { TurboModule } from 'react-native';
2
2
  import { TurboModuleRegistry } from 'react-native';
3
3
 
4
4
  export interface Spec extends TurboModule {
5
+ initializeSdk(customDomain: string): Promise<boolean>;
5
6
  fetchCreative(
6
7
  apiKey: string,
7
8
  origin: string,
@@ -1,14 +1,17 @@
1
- import React, { createContext, useContext } from 'react';
1
+ import React, { createContext, useContext, useEffect, useState } from 'react';
2
+ import Adgeist from '../NativeAdgeist';
2
3
 
3
4
  interface AdgeistContextType {
4
5
  publisherId: string;
5
6
  apiKey: string;
6
7
  domain: string;
7
8
  isTestEnvironment: boolean;
9
+ isInitialized: boolean;
8
10
  }
9
11
 
10
12
  interface AdgeistProviderPropsType {
11
13
  children: React.ReactNode;
14
+ customAdgeistApiOrigin?: string;
12
15
  publisherId: string;
13
16
  apiKey: string;
14
17
  domain: string;
@@ -20,6 +23,7 @@ const AdgeistContext = createContext<AdgeistContextType>({
20
23
  apiKey: '',
21
24
  domain: '',
22
25
  isTestEnvironment: true,
26
+ isInitialized: false,
23
27
  });
24
28
 
25
29
  export const AdgeistProvider: React.FC<AdgeistProviderPropsType> = ({
@@ -27,11 +31,28 @@ export const AdgeistProvider: React.FC<AdgeistProviderPropsType> = ({
27
31
  publisherId = '',
28
32
  apiKey = '',
29
33
  domain = '',
34
+ customAdgeistApiOrigin = 'bg-services-qa-api.adgeist.ai',
30
35
  isTestEnvironment = true,
31
36
  }) => {
37
+ const [isInitialized, setIsInitialized] = useState(false);
38
+
39
+ useEffect(() => {
40
+ const initializeAdgeist = async () => {
41
+ try {
42
+ await Adgeist.initializeSdk(customAdgeistApiOrigin);
43
+ setIsInitialized(true);
44
+ } catch (error) {
45
+ console.error('Error initializing Adgeist SDK:', error);
46
+ setIsInitialized(false);
47
+ }
48
+ };
49
+
50
+ initializeAdgeist();
51
+ }, [customAdgeistApiOrigin]);
52
+
32
53
  return (
33
54
  <AdgeistContext.Provider
34
- value={{ publisherId, apiKey, domain, isTestEnvironment }}
55
+ value={{ publisherId, apiKey, domain, isTestEnvironment, isInitialized }}
35
56
  >
36
57
  {children}
37
58
  </AdgeistContext.Provider>
@@ -11,6 +11,7 @@ import {
11
11
  } from 'react-native';
12
12
  import Adgeist from '../NativeAdgeist';
13
13
  import { useAdgeistContext } from './AdgeistProvider';
14
+ import Video from 'react-native-video';
14
15
 
15
16
  interface AdData {
16
17
  id: string;
@@ -40,14 +41,18 @@ interface BidExtension {
40
41
  }
41
42
  interface AdBannerTypes {
42
43
  dataAdSlot: string;
44
+ dataSlotType: 'banner' | 'video';
43
45
  width: number;
44
46
  height: number;
45
47
  }
46
48
 
47
- export const BannerAd: React.FC<AdBannerTypes> = ({ dataAdSlot }) => {
49
+ export const BannerAd: React.FC<AdBannerTypes> = ({
50
+ dataAdSlot,
51
+ dataSlotType = 'banner',
52
+ }) => {
48
53
  const [adData, setAdData] = useState<AdData | null>(null);
49
54
  const [isLoading, setIsLoading] = useState(false);
50
- const { publisherId, apiKey, domain, isTestEnvironment } =
55
+ const { isInitialized, publisherId, apiKey, domain, isTestEnvironment } =
51
56
  useAdgeistContext();
52
57
 
53
58
  const creativeData = adData?.seatBid?.[0]?.bid?.[0]?.ext as BidExtension;
@@ -55,36 +60,45 @@ export const BannerAd: React.FC<AdBannerTypes> = ({ dataAdSlot }) => {
55
60
  useEffect(() => {
56
61
  (async () => {
57
62
  try {
58
- setIsLoading(true);
59
- const response: Object = await Adgeist.fetchCreative(
60
- apiKey,
61
- domain,
62
- dataAdSlot,
63
- publisherId,
64
- isTestEnvironment
65
- );
66
-
67
- const creative: { data: AdData } = response as { data: AdData };
68
- setAdData(creative.data);
69
- setIsLoading(false);
70
-
71
- if (creative.data.seatBid.length > 0) {
72
- await Adgeist.sendCreativeAnalytic(
73
- creative.data.seatBid?.[0]?.bid?.[0]?.id || '',
63
+ if (isInitialized) {
64
+ setIsLoading(true);
65
+ const response: Object = await Adgeist.fetchCreative(
66
+ apiKey,
67
+ domain,
74
68
  dataAdSlot,
75
69
  publisherId,
76
- 'IMPRESSION',
77
- domain,
78
- apiKey,
79
- creative.data.id,
80
70
  isTestEnvironment
81
71
  );
72
+
73
+ const creative: { data: AdData } = response as { data: AdData };
74
+ setAdData(creative.data);
75
+ setIsLoading(false);
76
+
77
+ if (creative.data.seatBid.length > 0) {
78
+ await Adgeist.sendCreativeAnalytic(
79
+ creative.data.seatBid?.[0]?.bid?.[0]?.id || '',
80
+ dataAdSlot,
81
+ publisherId,
82
+ 'IMPRESSION',
83
+ domain,
84
+ apiKey,
85
+ creative.data.id,
86
+ isTestEnvironment
87
+ );
88
+ }
82
89
  }
83
90
  } catch (error) {
84
91
  console.error('Ad load failed:', error);
85
92
  }
86
93
  })();
87
- }, [publisherId, dataAdSlot, apiKey, domain, isTestEnvironment]);
94
+ }, [
95
+ isInitialized,
96
+ publisherId,
97
+ dataAdSlot,
98
+ apiKey,
99
+ domain,
100
+ isTestEnvironment,
101
+ ]);
88
102
 
89
103
  const handleClick = async () => {
90
104
  if (adData && adData?.seatBid.length > 0) {
@@ -117,10 +131,18 @@ export const BannerAd: React.FC<AdBannerTypes> = ({ dataAdSlot }) => {
117
131
  return (
118
132
  <TouchableWithoutFeedback accessible accessibilityLabel="Ad Banner">
119
133
  <View style={styles.adContainer}>
120
- <Image
121
- style={[styles.creative, { width: '100%', height: 300 }]}
122
- source={{ uri: creativeData.creativeUrl }}
123
- />
134
+ {dataSlotType == 'banner' ? (
135
+ <Image
136
+ style={[styles.creative, { width: '100%', height: 300 }]}
137
+ source={{ uri: creativeData.creativeUrl }}
138
+ />
139
+ ) : (
140
+ <Video
141
+ source={{ uri: creativeData.creativeUrl }}
142
+ style={{ width: '100%', aspectRatio: 16 / 9, height: 300 }}
143
+ />
144
+ )}
145
+
124
146
  <View style={styles.adContent}>
125
147
  <View style={styles.contentContainer}>
126
148
  <Text style={styles.title} numberOfLines={1} ellipsizeMode="tail">