@thealteroffice/react-native-adgeist 0.0.4 → 0.0.5
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.
- package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeAdgeistSpec.java +42 -0
- package/android/app/build/generated/source/codegen/jni/CMakeLists.txt +36 -0
- package/android/app/build/generated/source/codegen/jni/RNAdgeistSpec-generated.cpp +38 -0
- package/android/app/build/generated/source/codegen/jni/RNAdgeistSpec.h +31 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNAdgeistSpec/RNAdgeistSpecJSI-generated.cpp +45 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNAdgeistSpec/RNAdgeistSpecJSI.h +80 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/adgeist/implementation/AdgeistModuleImpl.kt +53 -39
- package/ios/Adgeist.mm +26 -9
- package/ios/AdgeistImpl.swift +7 -0
- package/lib/module/components/BannerAd.js +19 -1
- package/lib/module/components/BannerAd.js.map +1 -1
- package/lib/typescript/src/components/BannerAd.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/BannerAd.tsx +18 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateModuleJavaSpec.js
|
|
9
|
+
*
|
|
10
|
+
* @nolint
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
package com.facebook.fbreact.specs;
|
|
14
|
+
|
|
15
|
+
import com.facebook.proguard.annotations.DoNotStrip;
|
|
16
|
+
import com.facebook.react.bridge.Promise;
|
|
17
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
18
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
19
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
20
|
+
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
|
21
|
+
import javax.annotation.Nonnull;
|
|
22
|
+
|
|
23
|
+
public abstract class NativeAdgeistSpec extends ReactContextBaseJavaModule implements TurboModule {
|
|
24
|
+
public static final String NAME = "Adgeist";
|
|
25
|
+
|
|
26
|
+
public NativeAdgeistSpec(ReactApplicationContext reactContext) {
|
|
27
|
+
super(reactContext);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@Override
|
|
31
|
+
public @Nonnull String getName() {
|
|
32
|
+
return NAME;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@ReactMethod
|
|
36
|
+
@DoNotStrip
|
|
37
|
+
public abstract void fetchCreative(String apiKey, String origin, String adSpaceId, String publisherId, boolean isTestEnvironment, Promise promise);
|
|
38
|
+
|
|
39
|
+
@ReactMethod
|
|
40
|
+
@DoNotStrip
|
|
41
|
+
public abstract void sendCreativeAnalytic(String campaignId, String adSpaceId, String publisherId, String eventType, String origin, String apiKey, String bidId, boolean isTestEnvironment, Promise promise);
|
|
42
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
#
|
|
3
|
+
# This source code is licensed under the MIT license found in the
|
|
4
|
+
# LICENSE file in the root directory of this source tree.
|
|
5
|
+
|
|
6
|
+
cmake_minimum_required(VERSION 3.13)
|
|
7
|
+
set(CMAKE_VERBOSE_MAKEFILE on)
|
|
8
|
+
|
|
9
|
+
file(GLOB react_codegen_SRCS CONFIGURE_DEPENDS *.cpp react/renderer/components/RNAdgeistSpec/*.cpp)
|
|
10
|
+
|
|
11
|
+
add_library(
|
|
12
|
+
react_codegen_RNAdgeistSpec
|
|
13
|
+
OBJECT
|
|
14
|
+
${react_codegen_SRCS}
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
target_include_directories(react_codegen_RNAdgeistSpec PUBLIC . react/renderer/components/RNAdgeistSpec)
|
|
18
|
+
|
|
19
|
+
target_link_libraries(
|
|
20
|
+
react_codegen_RNAdgeistSpec
|
|
21
|
+
fbjni
|
|
22
|
+
jsi
|
|
23
|
+
# We need to link different libraries based on whether we are building rncore or not, that's necessary
|
|
24
|
+
# because we want to break a circular dependency between react_codegen_rncore and reactnative
|
|
25
|
+
reactnative
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
target_compile_options(
|
|
29
|
+
react_codegen_RNAdgeistSpec
|
|
30
|
+
PRIVATE
|
|
31
|
+
-DLOG_TAG=\"ReactNative\"
|
|
32
|
+
-fexceptions
|
|
33
|
+
-frtti
|
|
34
|
+
-std=c++20
|
|
35
|
+
-Wall
|
|
36
|
+
)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateModuleJniCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "RNAdgeistSpec.h"
|
|
12
|
+
|
|
13
|
+
namespace facebook::react {
|
|
14
|
+
|
|
15
|
+
static facebook::jsi::Value __hostFunction_NativeAdgeistSpecJSI_fetchCreative(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
16
|
+
static jmethodID cachedMethodId = nullptr;
|
|
17
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "fetchCreative", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static facebook::jsi::Value __hostFunction_NativeAdgeistSpecJSI_sendCreativeAnalytic(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
21
|
+
static jmethodID cachedMethodId = nullptr;
|
|
22
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "sendCreativeAnalytic", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
NativeAdgeistSpecJSI::NativeAdgeistSpecJSI(const JavaTurboModule::InitParams ¶ms)
|
|
26
|
+
: JavaTurboModule(params) {
|
|
27
|
+
methodMap_["fetchCreative"] = MethodMetadata {5, __hostFunction_NativeAdgeistSpecJSI_fetchCreative};
|
|
28
|
+
methodMap_["sendCreativeAnalytic"] = MethodMetadata {8, __hostFunction_NativeAdgeistSpecJSI_sendCreativeAnalytic};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
std::shared_ptr<TurboModule> RNAdgeistSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms) {
|
|
32
|
+
if (moduleName == "Adgeist") {
|
|
33
|
+
return std::make_shared<NativeAdgeistSpecJSI>(params);
|
|
34
|
+
}
|
|
35
|
+
return nullptr;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateModuleJniH.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#pragma once
|
|
12
|
+
|
|
13
|
+
#include <ReactCommon/JavaTurboModule.h>
|
|
14
|
+
#include <ReactCommon/TurboModule.h>
|
|
15
|
+
#include <jsi/jsi.h>
|
|
16
|
+
|
|
17
|
+
namespace facebook::react {
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* JNI C++ class for module 'NativeAdgeist'
|
|
21
|
+
*/
|
|
22
|
+
class JSI_EXPORT NativeAdgeistSpecJSI : public JavaTurboModule {
|
|
23
|
+
public:
|
|
24
|
+
NativeAdgeistSpecJSI(const JavaTurboModule::InitParams ¶ms);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
JSI_EXPORT
|
|
29
|
+
std::shared_ptr<TurboModule> RNAdgeistSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms);
|
|
30
|
+
|
|
31
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleCpp.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#include "RNAdgeistSpecJSI.h"
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
static jsi::Value __hostFunction_NativeAdgeistCxxSpecJSI_fetchCreative(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
15
|
+
return static_cast<NativeAdgeistCxxSpecJSI *>(&turboModule)->fetchCreative(
|
|
16
|
+
rt,
|
|
17
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
18
|
+
count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt),
|
|
19
|
+
count <= 2 ? throw jsi::JSError(rt, "Expected argument in position 2 to be passed") : args[2].asString(rt),
|
|
20
|
+
count <= 3 ? throw jsi::JSError(rt, "Expected argument in position 3 to be passed") : args[3].asString(rt),
|
|
21
|
+
count <= 4 ? throw jsi::JSError(rt, "Expected argument in position 4 to be passed") : args[4].asBool()
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
static jsi::Value __hostFunction_NativeAdgeistCxxSpecJSI_sendCreativeAnalytic(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
25
|
+
return static_cast<NativeAdgeistCxxSpecJSI *>(&turboModule)->sendCreativeAnalytic(
|
|
26
|
+
rt,
|
|
27
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
28
|
+
count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt),
|
|
29
|
+
count <= 2 ? throw jsi::JSError(rt, "Expected argument in position 2 to be passed") : args[2].asString(rt),
|
|
30
|
+
count <= 3 ? throw jsi::JSError(rt, "Expected argument in position 3 to be passed") : args[3].asString(rt),
|
|
31
|
+
count <= 4 ? throw jsi::JSError(rt, "Expected argument in position 4 to be passed") : args[4].asString(rt),
|
|
32
|
+
count <= 5 ? throw jsi::JSError(rt, "Expected argument in position 5 to be passed") : args[5].asString(rt),
|
|
33
|
+
count <= 6 ? throw jsi::JSError(rt, "Expected argument in position 6 to be passed") : args[6].asString(rt),
|
|
34
|
+
count <= 7 ? throw jsi::JSError(rt, "Expected argument in position 7 to be passed") : args[7].asBool()
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
NativeAdgeistCxxSpecJSI::NativeAdgeistCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
|
|
39
|
+
: TurboModule("Adgeist", jsInvoker) {
|
|
40
|
+
methodMap_["fetchCreative"] = MethodMetadata {5, __hostFunction_NativeAdgeistCxxSpecJSI_fetchCreative};
|
|
41
|
+
methodMap_["sendCreativeAnalytic"] = MethodMetadata {8, __hostFunction_NativeAdgeistCxxSpecJSI_sendCreativeAnalytic};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleH.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#pragma once
|
|
11
|
+
|
|
12
|
+
#include <ReactCommon/TurboModule.h>
|
|
13
|
+
#include <react/bridging/Bridging.h>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class JSI_EXPORT NativeAdgeistCxxSpecJSI : public TurboModule {
|
|
19
|
+
protected:
|
|
20
|
+
NativeAdgeistCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
|
|
21
|
+
|
|
22
|
+
public:
|
|
23
|
+
virtual jsi::Value fetchCreative(jsi::Runtime &rt, jsi::String apiKey, jsi::String origin, jsi::String adSpaceId, jsi::String publisherId, bool isTestEnvironment) = 0;
|
|
24
|
+
virtual jsi::Value sendCreativeAnalytic(jsi::Runtime &rt, jsi::String campaignId, jsi::String adSpaceId, jsi::String publisherId, jsi::String eventType, jsi::String origin, jsi::String apiKey, jsi::String bidId, bool isTestEnvironment) = 0;
|
|
25
|
+
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
template <typename T>
|
|
29
|
+
class JSI_EXPORT NativeAdgeistCxxSpec : public TurboModule {
|
|
30
|
+
public:
|
|
31
|
+
jsi::Value create(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
|
|
32
|
+
return delegate_.create(rt, propName);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& runtime) override {
|
|
36
|
+
return delegate_.getPropertyNames(runtime);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static constexpr std::string_view kModuleName = "Adgeist";
|
|
40
|
+
|
|
41
|
+
protected:
|
|
42
|
+
NativeAdgeistCxxSpec(std::shared_ptr<CallInvoker> jsInvoker)
|
|
43
|
+
: TurboModule(std::string{NativeAdgeistCxxSpec::kModuleName}, jsInvoker),
|
|
44
|
+
delegate_(reinterpret_cast<T*>(this), jsInvoker) {}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
private:
|
|
48
|
+
class Delegate : public NativeAdgeistCxxSpecJSI {
|
|
49
|
+
public:
|
|
50
|
+
Delegate(T *instance, std::shared_ptr<CallInvoker> jsInvoker) :
|
|
51
|
+
NativeAdgeistCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
jsi::Value fetchCreative(jsi::Runtime &rt, jsi::String apiKey, jsi::String origin, jsi::String adSpaceId, jsi::String publisherId, bool isTestEnvironment) override {
|
|
56
|
+
static_assert(
|
|
57
|
+
bridging::getParameterCount(&T::fetchCreative) == 6,
|
|
58
|
+
"Expected fetchCreative(...) to have 6 parameters");
|
|
59
|
+
|
|
60
|
+
return bridging::callFromJs<jsi::Value>(
|
|
61
|
+
rt, &T::fetchCreative, jsInvoker_, instance_, std::move(apiKey), std::move(origin), std::move(adSpaceId), std::move(publisherId), std::move(isTestEnvironment));
|
|
62
|
+
}
|
|
63
|
+
jsi::Value sendCreativeAnalytic(jsi::Runtime &rt, jsi::String campaignId, jsi::String adSpaceId, jsi::String publisherId, jsi::String eventType, jsi::String origin, jsi::String apiKey, jsi::String bidId, bool isTestEnvironment) override {
|
|
64
|
+
static_assert(
|
|
65
|
+
bridging::getParameterCount(&T::sendCreativeAnalytic) == 9,
|
|
66
|
+
"Expected sendCreativeAnalytic(...) to have 9 parameters");
|
|
67
|
+
|
|
68
|
+
return bridging::callFromJs<jsi::Value>(
|
|
69
|
+
rt, &T::sendCreativeAnalytic, jsInvoker_, instance_, std::move(campaignId), std::move(adSpaceId), std::move(publisherId), std::move(eventType), std::move(origin), std::move(apiKey), std::move(bidId), std::move(isTestEnvironment));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private:
|
|
73
|
+
friend class NativeAdgeistCxxSpec;
|
|
74
|
+
T *instance_;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
Delegate delegate_;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
} // namespace facebook::react
|
package/android/build.gradle
CHANGED
|
@@ -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.
|
|
104
|
+
implementation "ai.adgeist:adgeistkit:0.0.6"
|
|
105
105
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -46,43 +46,57 @@ class AdgeistModuleImpl internal constructor(private val context: ReactApplicati
|
|
|
46
46
|
|
|
47
47
|
// Extension function to convert CreativeDataModel to WritableMap
|
|
48
48
|
fun CreativeDataModel.toWritableMap(): WritableMap {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
49
|
+
val map = Arguments.createMap()
|
|
50
|
+
|
|
51
|
+
map.putBoolean("success", this.success)
|
|
52
|
+
map.putString("message", this.message)
|
|
53
|
+
|
|
54
|
+
// Handle null data - store in local variable for smart casting
|
|
55
|
+
val dataValue = this.data
|
|
56
|
+
if (dataValue != null) {
|
|
57
|
+
val dataMap = Arguments.createMap()
|
|
58
|
+
dataMap.putString("id", dataValue.id)
|
|
59
|
+
dataMap.putString("bidId", dataValue.bidId)
|
|
60
|
+
dataMap.putString("cur", dataValue.cur)
|
|
61
|
+
|
|
62
|
+
// Handle null seatBid list - store in local variable
|
|
63
|
+
val seatBidArray = Arguments.createArray()
|
|
64
|
+
val seatBidList = dataValue.seatBid
|
|
65
|
+
if (seatBidList != null) {
|
|
66
|
+
for (seatBid in seatBidList) {
|
|
67
|
+
val seatBidMap = Arguments.createMap()
|
|
68
|
+
seatBidMap.putString("bidId", seatBid.bidId)
|
|
69
|
+
|
|
70
|
+
// Handle null bid list - store in local variable
|
|
71
|
+
val bidArray = Arguments.createArray()
|
|
72
|
+
val bidList = seatBid.bid
|
|
73
|
+
if (bidList != null) {
|
|
74
|
+
for (bid in bidList) {
|
|
75
|
+
val bidMap = Arguments.createMap()
|
|
76
|
+
bidMap.putString("id", bid.id)
|
|
77
|
+
bidMap.putString("impId", bid.impId)
|
|
78
|
+
bidMap.putDouble("price", bid.price)
|
|
79
|
+
|
|
80
|
+
// Handle extension
|
|
81
|
+
val extMap = Arguments.createMap()
|
|
82
|
+
extMap.putString("creativeUrl", bid.ext.creativeUrl)
|
|
83
|
+
extMap.putString("ctaUrl", bid.ext.ctaUrl)
|
|
84
|
+
extMap.putString("creativeTitle", bid.ext.creativeTitle)
|
|
85
|
+
extMap.putString("creativeDescription", bid.ext.creativeDescription)
|
|
86
|
+
|
|
87
|
+
bidMap.putMap("ext", extMap)
|
|
88
|
+
bidArray.pushMap(bidMap)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
seatBidMap.putArray("bid", bidArray)
|
|
92
|
+
seatBidArray.pushMap(seatBidMap)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
dataMap.putArray("seatBid", seatBidArray)
|
|
96
|
+
map.putMap("data", dataMap)
|
|
97
|
+
} else {
|
|
98
|
+
map.putNull("data")
|
|
82
99
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
map.putMap("data", dataMap)
|
|
87
|
-
return map
|
|
88
|
-
}
|
|
100
|
+
|
|
101
|
+
return map
|
|
102
|
+
}
|
package/ios/Adgeist.mm
CHANGED
|
@@ -22,25 +22,42 @@ RCT_EXPORT_MODULE(Adgeist)
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
// Exported methods for JS
|
|
25
|
-
RCT_EXPORT_METHOD(fetchCreative:(NSString *)
|
|
25
|
+
RCT_EXPORT_METHOD(fetchCreative:(NSString *)apiKey
|
|
26
|
+
origin:(NSString *)origin
|
|
27
|
+
adSpaceId:(NSString *)adSpaceId
|
|
26
28
|
publisherId:(NSString *)publisherId
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
isTestEnvironment:(BOOL)isTestEnvironment
|
|
30
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
31
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
29
32
|
{
|
|
30
|
-
[adgeist
|
|
33
|
+
[adgeist fetchCreativeWithApiKey:apiKey
|
|
34
|
+
origin:origin
|
|
35
|
+
adSpaceId:adSpaceId
|
|
36
|
+
publisherId:publisherId
|
|
37
|
+
isTestEnvironment:isTestEnvironment
|
|
38
|
+
resolver:resolve
|
|
39
|
+
rejecter:reject];
|
|
31
40
|
}
|
|
32
41
|
|
|
33
42
|
RCT_EXPORT_METHOD(sendCreativeAnalytic:(NSString *)campaignId
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
adSpaceId:(NSString *)adSpaceId
|
|
44
|
+
publisherId:(NSString *)publisherId
|
|
45
|
+
eventType:(NSString *)eventType
|
|
46
|
+
origin:(NSString *)origin
|
|
47
|
+
apiKey:(NSString *)apiKey
|
|
48
|
+
bidId:(NSString *)bidId
|
|
49
|
+
isTestEnvironment:(BOOL)isTestEnvironment
|
|
50
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
51
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
39
52
|
{
|
|
40
53
|
[adgeist sendCreativeAnalyticWithCampaignId:campaignId
|
|
41
54
|
adSpaceId:adSpaceId
|
|
42
55
|
publisherId:publisherId
|
|
43
56
|
eventType:eventType
|
|
57
|
+
origin:origin
|
|
58
|
+
apiKey:apiKey
|
|
59
|
+
bidId:bidId
|
|
60
|
+
isTestEnvironment:isTestEnvironment
|
|
44
61
|
resolver:resolve
|
|
45
62
|
rejecter:reject];
|
|
46
63
|
}
|
package/ios/AdgeistImpl.swift
CHANGED
|
@@ -5,8 +5,11 @@ import React
|
|
|
5
5
|
@objc public class AdgeistImpl: NSObject {
|
|
6
6
|
private static let adGeist = AdgeistCore.shared
|
|
7
7
|
@objc public func fetchCreative(
|
|
8
|
+
apiKey: String,
|
|
9
|
+
origin: String,
|
|
8
10
|
adSpaceId: String,
|
|
9
11
|
publisherId: String,
|
|
12
|
+
isTestEnvironment: Boolean,
|
|
10
13
|
resolver: @escaping RCTPromiseResolveBlock,
|
|
11
14
|
rejecter: @escaping RCTPromiseRejectBlock
|
|
12
15
|
) {
|
|
@@ -34,6 +37,10 @@ import React
|
|
|
34
37
|
adSpaceId: String,
|
|
35
38
|
publisherId: String,
|
|
36
39
|
eventType: String,
|
|
40
|
+
origin: String,
|
|
41
|
+
apiKey: String,
|
|
42
|
+
bidId: String,
|
|
43
|
+
isTestEnvironment: Boolean,
|
|
37
44
|
resolver: @escaping RCTPromiseResolveBlock,
|
|
38
45
|
rejecter: @escaping RCTPromiseRejectBlock
|
|
39
46
|
) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { useEffect, useState } from 'react';
|
|
4
|
-
import { Dimensions, Image, Linking, StyleSheet, Text, View, TouchableWithoutFeedback } from 'react-native';
|
|
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
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -9,6 +9,7 @@ export const BannerAd = ({
|
|
|
9
9
|
dataAdSlot
|
|
10
10
|
}) => {
|
|
11
11
|
const [adData, setAdData] = useState(null);
|
|
12
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
12
13
|
const {
|
|
13
14
|
publisherId,
|
|
14
15
|
apiKey,
|
|
@@ -19,9 +20,11 @@ export const BannerAd = ({
|
|
|
19
20
|
useEffect(() => {
|
|
20
21
|
(async () => {
|
|
21
22
|
try {
|
|
23
|
+
setIsLoading(true);
|
|
22
24
|
const response = await Adgeist.fetchCreative(apiKey, domain, dataAdSlot, publisherId, isTestEnvironment);
|
|
23
25
|
const creative = response;
|
|
24
26
|
setAdData(creative.data);
|
|
27
|
+
setIsLoading(false);
|
|
25
28
|
if (creative.data.seatBid.length > 0) {
|
|
26
29
|
await Adgeist.sendCreativeAnalytic(creative.data.seatBid?.[0]?.bid?.[0]?.id || '', dataAdSlot, publisherId, 'IMPRESSION', domain, apiKey, creative.data.id, isTestEnvironment);
|
|
27
30
|
}
|
|
@@ -36,6 +39,15 @@ export const BannerAd = ({
|
|
|
36
39
|
Linking.openURL(creativeData.ctaUrl).catch(err => console.error('Failed to open URL:', err));
|
|
37
40
|
}
|
|
38
41
|
};
|
|
42
|
+
if (isLoading) {
|
|
43
|
+
return /*#__PURE__*/_jsx(View, {
|
|
44
|
+
style: styles.loadingOverlayContainer,
|
|
45
|
+
children: /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
46
|
+
size: "large",
|
|
47
|
+
color: "#63AA75"
|
|
48
|
+
})
|
|
49
|
+
});
|
|
50
|
+
}
|
|
39
51
|
if (!creativeData?.creativeUrl) return null;
|
|
40
52
|
return /*#__PURE__*/_jsx(TouchableWithoutFeedback, {
|
|
41
53
|
accessible: true,
|
|
@@ -93,6 +105,12 @@ const styles = StyleSheet.create({
|
|
|
93
105
|
backgroundColor: 'white',
|
|
94
106
|
borderRadius: 5
|
|
95
107
|
},
|
|
108
|
+
loadingOverlayContainer: {
|
|
109
|
+
width: '100%',
|
|
110
|
+
height: 375,
|
|
111
|
+
alignItems: 'center',
|
|
112
|
+
justifyContent: 'center'
|
|
113
|
+
},
|
|
96
114
|
creative: {
|
|
97
115
|
resizeMode: 'cover',
|
|
98
116
|
borderTopLeftRadius: 5,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","Dimensions","Image","Linking","StyleSheet","Text","View","TouchableWithoutFeedback","Adgeist","useAdgeistContext","jsx","_jsx","jsxs","_jsxs","BannerAd","dataAdSlot","adData","setAdData","publisherId","apiKey","domain","isTestEnvironment","creativeData","seatBid","bid","ext","response","fetchCreative","creative","data","length","sendCreativeAnalytic","id","error","console","handleClick","openURL","ctaUrl","catch","err","
|
|
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":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BannerAd.d.ts","sourceRoot":"","sources":["../../../../src/components/BannerAd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thealteroffice/react-native-adgeist",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
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",
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
Text,
|
|
8
8
|
View,
|
|
9
9
|
TouchableWithoutFeedback,
|
|
10
|
+
ActivityIndicator,
|
|
10
11
|
} from 'react-native';
|
|
11
12
|
import Adgeist from '../NativeAdgeist';
|
|
12
13
|
import { useAdgeistContext } from './AdgeistProvider';
|
|
@@ -45,6 +46,7 @@ interface AdBannerTypes {
|
|
|
45
46
|
|
|
46
47
|
export const BannerAd: React.FC<AdBannerTypes> = ({ dataAdSlot }) => {
|
|
47
48
|
const [adData, setAdData] = useState<AdData | null>(null);
|
|
49
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
48
50
|
const { publisherId, apiKey, domain, isTestEnvironment } =
|
|
49
51
|
useAdgeistContext();
|
|
50
52
|
|
|
@@ -53,6 +55,7 @@ export const BannerAd: React.FC<AdBannerTypes> = ({ dataAdSlot }) => {
|
|
|
53
55
|
useEffect(() => {
|
|
54
56
|
(async () => {
|
|
55
57
|
try {
|
|
58
|
+
setIsLoading(true);
|
|
56
59
|
const response: Object = await Adgeist.fetchCreative(
|
|
57
60
|
apiKey,
|
|
58
61
|
domain,
|
|
@@ -63,6 +66,7 @@ export const BannerAd: React.FC<AdBannerTypes> = ({ dataAdSlot }) => {
|
|
|
63
66
|
|
|
64
67
|
const creative: { data: AdData } = response as { data: AdData };
|
|
65
68
|
setAdData(creative.data);
|
|
69
|
+
setIsLoading(false);
|
|
66
70
|
|
|
67
71
|
if (creative.data.seatBid.length > 0) {
|
|
68
72
|
await Adgeist.sendCreativeAnalytic(
|
|
@@ -100,6 +104,14 @@ export const BannerAd: React.FC<AdBannerTypes> = ({ dataAdSlot }) => {
|
|
|
100
104
|
}
|
|
101
105
|
};
|
|
102
106
|
|
|
107
|
+
if (isLoading) {
|
|
108
|
+
return (
|
|
109
|
+
<View style={styles.loadingOverlayContainer}>
|
|
110
|
+
<ActivityIndicator size="large" color="#63AA75" />
|
|
111
|
+
</View>
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
103
115
|
if (!creativeData?.creativeUrl) return null;
|
|
104
116
|
|
|
105
117
|
return (
|
|
@@ -157,6 +169,12 @@ const styles = StyleSheet.create({
|
|
|
157
169
|
backgroundColor: 'white',
|
|
158
170
|
borderRadius: 5,
|
|
159
171
|
},
|
|
172
|
+
loadingOverlayContainer: {
|
|
173
|
+
width: '100%',
|
|
174
|
+
height: 375,
|
|
175
|
+
alignItems: 'center',
|
|
176
|
+
justifyContent: 'center',
|
|
177
|
+
},
|
|
160
178
|
creative: {
|
|
161
179
|
resizeMode: 'cover',
|
|
162
180
|
borderTopLeftRadius: 5,
|