@thealteroffice/react-native-adgeist 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Adgeist.podspec +28 -0
- package/LICENSE +20 -0
- package/README.md +65 -0
- package/android/build.gradle +101 -0
- package/android/generated/java/com/adgeist/NativeAdgeistSpec.java +42 -0
- package/android/generated/jni/CMakeLists.txt +36 -0
- package/android/generated/jni/RNAdgeistSpec-generated.cpp +38 -0
- package/android/generated/jni/RNAdgeistSpec.h +31 -0
- package/android/generated/jni/react/renderer/components/RNAdgeistSpec/RNAdgeistSpecJSI-generated.cpp +38 -0
- package/android/generated/jni/react/renderer/components/RNAdgeistSpec/RNAdgeistSpecJSI.h +80 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/adgeist/AdgeistModule.kt +89 -0
- package/android/src/main/java/com/adgeist/AdgeistPackage.kt +33 -0
- package/ios/Adgeist.h +18 -0
- package/ios/Adgeist.mm +52 -0
- package/ios/AdgeistImpl.swift +57 -0
- package/ios/adgeist-Bridging-Header.h +2 -0
- package/ios/generated/RNAdgeistSpec/RNAdgeistSpec-generated.mm +46 -0
- package/ios/generated/RNAdgeistSpec/RNAdgeistSpec.h +71 -0
- package/ios/generated/RNAdgeistSpecJSI-generated.cpp +38 -0
- package/ios/generated/RNAdgeistSpecJSI.h +80 -0
- package/lib/module/NativeAdgeist.ts +14 -0
- package/lib/module/components/BannerAd.js +176 -0
- package/lib/module/components/BannerAd.js.map +1 -0
- package/lib/module/components/BottomBannerAd.js +150 -0
- package/lib/module/components/BottomBannerAd.js.map +1 -0
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/NativeAdgeist.d.ts +8 -0
- package/lib/typescript/src/NativeAdgeist.d.ts.map +1 -0
- package/lib/typescript/src/components/BannerAd.d.ts +10 -0
- package/lib/typescript/src/components/BannerAd.d.ts.map +1 -0
- package/lib/typescript/src/components/BottomBannerAd.d.ts +8 -0
- package/lib/typescript/src/components/BottomBannerAd.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/package.json +170 -0
- package/react-native.config.js +12 -0
- package/src/NativeAdgeist.ts +14 -0
- package/src/components/BannerAd.tsx +202 -0
- package/src/components/BottomBannerAd.tsx +185 -0
- package/src/index.tsx +2 -0
package/ios/Adgeist.mm
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#import "Adgeist.h"
|
|
2
|
+
|
|
3
|
+
#if __has_include("adgeist-Swift.h")
|
|
4
|
+
#import "adgeist-Swift.h"
|
|
5
|
+
#else
|
|
6
|
+
#import "adgeist/adgeist-Swift.h"
|
|
7
|
+
#endif
|
|
8
|
+
|
|
9
|
+
@implementation Adgeist {
|
|
10
|
+
AdgeistImpl *adgeist;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
- (id)init {
|
|
14
|
+
if (self = [super init]) {
|
|
15
|
+
adgeist = [AdgeistImpl new];
|
|
16
|
+
}
|
|
17
|
+
return self;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
+ (NSString *)moduleName {
|
|
21
|
+
return @"Adgeist";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
- (void)fetchCreative:(NSString *)adSpaceId
|
|
26
|
+
publisherId:(NSString *)publisherId
|
|
27
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
28
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
29
|
+
[adgeist fetchCreativeWithAdSpaceId:adSpaceId publisherId:publisherId resolver:resolve rejecter:reject];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
- (void)sendCreativeAnalytic:(NSString *)campaignId
|
|
33
|
+
adSpaceId:(NSString *)adSpaceId
|
|
34
|
+
publisherId:(NSString *)publisherId
|
|
35
|
+
eventType:(NSString *)eventType
|
|
36
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
37
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
38
|
+
[adgeist sendCreativeAnalyticWithCampaignId:campaignId
|
|
39
|
+
adSpaceId:adSpaceId
|
|
40
|
+
publisherId:publisherId
|
|
41
|
+
eventType:eventType
|
|
42
|
+
resolver:resolve
|
|
43
|
+
rejecter:reject];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
47
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params
|
|
48
|
+
{
|
|
49
|
+
return std::make_shared<facebook::react::NativeAdgeistSpecJSI>(params);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import AdgeistKit
|
|
3
|
+
import React
|
|
4
|
+
|
|
5
|
+
@objc public class AdgeistImpl: NSObject {
|
|
6
|
+
private static let adGeist = AdgeistCore.shared
|
|
7
|
+
@objc public func fetchCreative(
|
|
8
|
+
adSpaceId: String,
|
|
9
|
+
publisherId: String,
|
|
10
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
11
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
12
|
+
) {
|
|
13
|
+
AdgeistImpl.adGeist.getCreative().fetchCreative(adSpaceId: adSpaceId, publisherId: publisherId) { creativeData in
|
|
14
|
+
if let creativeData = creativeData {
|
|
15
|
+
do {
|
|
16
|
+
let encoder = JSONEncoder()
|
|
17
|
+
let data = try encoder.encode(creativeData)
|
|
18
|
+
if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
|
|
19
|
+
resolver(json)
|
|
20
|
+
} else {
|
|
21
|
+
rejecter("JSON_ERROR", "Failed to convert ad data to JSON", nil)
|
|
22
|
+
}
|
|
23
|
+
} catch {
|
|
24
|
+
rejecter("JSON_ERROR", "Failed to encode ad data", error)
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
rejecter("NO_AD", "Ad data not available", nil)
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@objc public func sendCreativeAnalytic(
|
|
33
|
+
campaignId: String,
|
|
34
|
+
adSpaceId: String,
|
|
35
|
+
publisherId: String,
|
|
36
|
+
eventType: String,
|
|
37
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
38
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
39
|
+
) {
|
|
40
|
+
AdgeistImpl.adGeist.postCreativeAnalytics().sendTrackingData(
|
|
41
|
+
campaignId: campaignId,
|
|
42
|
+
adSpaceId: adSpaceId,
|
|
43
|
+
publisherId: publisherId,
|
|
44
|
+
eventType: eventType
|
|
45
|
+
) { response in
|
|
46
|
+
if let response = response {
|
|
47
|
+
resolver(response)
|
|
48
|
+
} else {
|
|
49
|
+
rejecter("NO_AD", "Couldn't find the campaign to update analytics", nil)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@objc public static func requiresMainQueueSetup() -> Bool {
|
|
55
|
+
return true
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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: GenerateModuleObjCpp
|
|
8
|
+
*
|
|
9
|
+
* We create an umbrella header (and corresponding implementation) here since
|
|
10
|
+
* Cxx compilation in BUCK has a limitation: source-code producing genrule()s
|
|
11
|
+
* must have a single output. More files => more genrule()s => slower builds.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#import "RNAdgeistSpec.h"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@implementation NativeAdgeistSpecBase
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper
|
|
21
|
+
{
|
|
22
|
+
_eventEmitterCallback = std::move(eventEmitterCallbackWrapper->_eventEmitterCallback);
|
|
23
|
+
}
|
|
24
|
+
@end
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
namespace facebook::react {
|
|
28
|
+
|
|
29
|
+
static facebook::jsi::Value __hostFunction_NativeAdgeistSpecJSI_fetchCreative(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
30
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "fetchCreative", @selector(fetchCreative:publisherId:resolve:reject:), args, count);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static facebook::jsi::Value __hostFunction_NativeAdgeistSpecJSI_sendCreativeAnalytic(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
34
|
+
return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "sendCreativeAnalytic", @selector(sendCreativeAnalytic:adSpaceId:publisherId:eventType:resolve:reject:), args, count);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
NativeAdgeistSpecJSI::NativeAdgeistSpecJSI(const ObjCTurboModule::InitParams ¶ms)
|
|
38
|
+
: ObjCTurboModule(params) {
|
|
39
|
+
|
|
40
|
+
methodMap_["fetchCreative"] = MethodMetadata {2, __hostFunction_NativeAdgeistSpecJSI_fetchCreative};
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
methodMap_["sendCreativeAnalytic"] = MethodMetadata {4, __hostFunction_NativeAdgeistSpecJSI_sendCreativeAnalytic};
|
|
44
|
+
|
|
45
|
+
}
|
|
46
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,71 @@
|
|
|
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: GenerateModuleObjCpp
|
|
8
|
+
*
|
|
9
|
+
* We create an umbrella header (and corresponding implementation) here since
|
|
10
|
+
* Cxx compilation in BUCK has a limitation: source-code producing genrule()s
|
|
11
|
+
* must have a single output. More files => more genrule()s => slower builds.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef __cplusplus
|
|
15
|
+
#error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
// Avoid multiple includes of RNAdgeistSpec symbols
|
|
19
|
+
#ifndef RNAdgeistSpec_H
|
|
20
|
+
#define RNAdgeistSpec_H
|
|
21
|
+
|
|
22
|
+
#import <Foundation/Foundation.h>
|
|
23
|
+
#import <RCTRequired/RCTRequired.h>
|
|
24
|
+
#import <RCTTypeSafety/RCTConvertHelpers.h>
|
|
25
|
+
#import <RCTTypeSafety/RCTTypedModuleConstants.h>
|
|
26
|
+
#import <React/RCTBridgeModule.h>
|
|
27
|
+
#import <React/RCTCxxConvert.h>
|
|
28
|
+
#import <React/RCTManagedPointer.h>
|
|
29
|
+
#import <ReactCommon/RCTTurboModule.h>
|
|
30
|
+
#import <optional>
|
|
31
|
+
#import <vector>
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
35
|
+
|
|
36
|
+
@protocol NativeAdgeistSpec <RCTBridgeModule, RCTTurboModule>
|
|
37
|
+
|
|
38
|
+
- (void)fetchCreative:(NSString *)adSpaceId
|
|
39
|
+
publisherId:(NSString *)publisherId
|
|
40
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
41
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
42
|
+
- (void)sendCreativeAnalytic:(NSString *)campaignId
|
|
43
|
+
adSpaceId:(NSString *)adSpaceId
|
|
44
|
+
publisherId:(NSString *)publisherId
|
|
45
|
+
eventType:(NSString *)eventType
|
|
46
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
47
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
48
|
+
|
|
49
|
+
@end
|
|
50
|
+
|
|
51
|
+
@interface NativeAdgeistSpecBase : NSObject {
|
|
52
|
+
@protected
|
|
53
|
+
facebook::react::EventEmitterCallback _eventEmitterCallback;
|
|
54
|
+
}
|
|
55
|
+
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper;
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@end
|
|
59
|
+
|
|
60
|
+
namespace facebook::react {
|
|
61
|
+
/**
|
|
62
|
+
* ObjC++ class for module 'NativeAdgeist'
|
|
63
|
+
*/
|
|
64
|
+
class JSI_EXPORT NativeAdgeistSpecJSI : public ObjCTurboModule {
|
|
65
|
+
public:
|
|
66
|
+
NativeAdgeistSpecJSI(const ObjCTurboModule::InitParams ¶ms);
|
|
67
|
+
};
|
|
68
|
+
} // namespace facebook::react
|
|
69
|
+
|
|
70
|
+
NS_ASSUME_NONNULL_END
|
|
71
|
+
#endif // RNAdgeistSpec_H
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
);
|
|
20
|
+
}
|
|
21
|
+
static jsi::Value __hostFunction_NativeAdgeistCxxSpecJSI_sendCreativeAnalytic(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
22
|
+
return static_cast<NativeAdgeistCxxSpecJSI *>(&turboModule)->sendCreativeAnalytic(
|
|
23
|
+
rt,
|
|
24
|
+
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
25
|
+
count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt),
|
|
26
|
+
count <= 2 ? throw jsi::JSError(rt, "Expected argument in position 2 to be passed") : args[2].asString(rt),
|
|
27
|
+
count <= 3 ? throw jsi::JSError(rt, "Expected argument in position 3 to be passed") : args[3].asString(rt)
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
NativeAdgeistCxxSpecJSI::NativeAdgeistCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
|
|
32
|
+
: TurboModule("Adgeist", jsInvoker) {
|
|
33
|
+
methodMap_["fetchCreative"] = MethodMetadata {2, __hostFunction_NativeAdgeistCxxSpecJSI_fetchCreative};
|
|
34
|
+
methodMap_["sendCreativeAnalytic"] = MethodMetadata {4, __hostFunction_NativeAdgeistCxxSpecJSI_sendCreativeAnalytic};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
} // 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 adSpaceId, jsi::String publisherId) = 0;
|
|
24
|
+
virtual jsi::Value sendCreativeAnalytic(jsi::Runtime &rt, jsi::String campaignId, jsi::String adSpaceId, jsi::String publisherId, jsi::String eventType) = 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 adSpaceId, jsi::String publisherId) override {
|
|
56
|
+
static_assert(
|
|
57
|
+
bridging::getParameterCount(&T::fetchCreative) == 3,
|
|
58
|
+
"Expected fetchCreative(...) to have 3 parameters");
|
|
59
|
+
|
|
60
|
+
return bridging::callFromJs<jsi::Value>(
|
|
61
|
+
rt, &T::fetchCreative, jsInvoker_, instance_, std::move(adSpaceId), std::move(publisherId));
|
|
62
|
+
}
|
|
63
|
+
jsi::Value sendCreativeAnalytic(jsi::Runtime &rt, jsi::String campaignId, jsi::String adSpaceId, jsi::String publisherId, jsi::String eventType) override {
|
|
64
|
+
static_assert(
|
|
65
|
+
bridging::getParameterCount(&T::sendCreativeAnalytic) == 5,
|
|
66
|
+
"Expected sendCreativeAnalytic(...) to have 5 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));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private:
|
|
73
|
+
friend class NativeAdgeistCxxSpec;
|
|
74
|
+
T *instance_;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
Delegate delegate_;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export interface Spec extends TurboModule {
|
|
5
|
+
fetchCreative(adSpaceId: string, publisherId: string): Promise<Object>;
|
|
6
|
+
sendCreativeAnalytic(
|
|
7
|
+
campaignId: string,
|
|
8
|
+
adSpaceId: string,
|
|
9
|
+
publisherId: string,
|
|
10
|
+
eventType: string
|
|
11
|
+
): Promise<Object>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('Adgeist');
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useEffect, useState } from 'react';
|
|
4
|
+
import { Dimensions, Image, Linking, StyleSheet, Text, View, TouchableWithoutFeedback } from 'react-native';
|
|
5
|
+
import Adgeist from '../NativeAdgeist';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
export const BannerAd = ({
|
|
8
|
+
dataPublisherId,
|
|
9
|
+
dataAdSlot,
|
|
10
|
+
width,
|
|
11
|
+
height
|
|
12
|
+
}) => {
|
|
13
|
+
const [adData, setAdData] = useState(null);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
(async () => {
|
|
16
|
+
try {
|
|
17
|
+
const response = await Adgeist.fetchCreative(dataAdSlot, dataPublisherId);
|
|
18
|
+
const creative = response;
|
|
19
|
+
setAdData(creative.data);
|
|
20
|
+
await Adgeist.sendCreativeAnalytic(creative.data._id, dataAdSlot, dataPublisherId, 'impression');
|
|
21
|
+
} catch (error) {
|
|
22
|
+
console.error('Ad load failed:', error);
|
|
23
|
+
}
|
|
24
|
+
})();
|
|
25
|
+
}, [dataPublisherId, dataAdSlot]);
|
|
26
|
+
const handleClick = async () => {
|
|
27
|
+
if (adData?.creative?.ctaUrl) {
|
|
28
|
+
await Adgeist.sendCreativeAnalytic(adData._id, dataAdSlot, dataPublisherId, 'click');
|
|
29
|
+
Linking.openURL(adData.creative.ctaUrl).catch(err => console.error('Failed to open URL:', err));
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
if (!adData?.creative?.fileUrl) return null;
|
|
33
|
+
return /*#__PURE__*/_jsx(TouchableWithoutFeedback, {
|
|
34
|
+
accessible: true,
|
|
35
|
+
accessibilityLabel: "Ad Banner",
|
|
36
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
37
|
+
style: styles.container,
|
|
38
|
+
children: [/*#__PURE__*/_jsx(Image, {
|
|
39
|
+
style: [styles.creative, {
|
|
40
|
+
width,
|
|
41
|
+
height
|
|
42
|
+
}],
|
|
43
|
+
source: {
|
|
44
|
+
uri: adData.creative.fileUrl
|
|
45
|
+
}
|
|
46
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
47
|
+
style: styles.options,
|
|
48
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
49
|
+
style: styles.option,
|
|
50
|
+
children: "x"
|
|
51
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
52
|
+
style: styles.option,
|
|
53
|
+
children: "i"
|
|
54
|
+
})]
|
|
55
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
56
|
+
style: styles.adContent,
|
|
57
|
+
children: [/*#__PURE__*/_jsx(Image, {
|
|
58
|
+
style: styles.logo,
|
|
59
|
+
source: {
|
|
60
|
+
uri: adData.creative.fileUrl
|
|
61
|
+
}
|
|
62
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
63
|
+
style: styles.textContainer,
|
|
64
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
65
|
+
style: styles.titleRow,
|
|
66
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
67
|
+
style: styles.adBadge,
|
|
68
|
+
children: "AD"
|
|
69
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
70
|
+
style: styles.title,
|
|
71
|
+
numberOfLines: 1,
|
|
72
|
+
ellipsizeMode: "tail",
|
|
73
|
+
children: adData.creative.title
|
|
74
|
+
})]
|
|
75
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
76
|
+
style: styles.description,
|
|
77
|
+
numberOfLines: 1,
|
|
78
|
+
ellipsizeMode: "tail",
|
|
79
|
+
children: adData.creative.description
|
|
80
|
+
})]
|
|
81
|
+
}), /*#__PURE__*/_jsx(TouchableWithoutFeedback, {
|
|
82
|
+
onPress: handleClick,
|
|
83
|
+
accessible: true,
|
|
84
|
+
accessibilityLabel: "Visit Site Button",
|
|
85
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
86
|
+
style: styles.button,
|
|
87
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
88
|
+
style: styles.buttonText,
|
|
89
|
+
children: "Visit Site"
|
|
90
|
+
})
|
|
91
|
+
})
|
|
92
|
+
})]
|
|
93
|
+
})]
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
const styles = StyleSheet.create({
|
|
98
|
+
container: {
|
|
99
|
+
backgroundColor: 'white',
|
|
100
|
+
borderRadius: 10
|
|
101
|
+
},
|
|
102
|
+
creative: {
|
|
103
|
+
resizeMode: 'contain',
|
|
104
|
+
borderTopLeftRadius: 10,
|
|
105
|
+
borderTopRightRadius: 10
|
|
106
|
+
},
|
|
107
|
+
options: {
|
|
108
|
+
flexDirection: 'row',
|
|
109
|
+
gap: 2,
|
|
110
|
+
position: 'absolute',
|
|
111
|
+
top: 5,
|
|
112
|
+
left: 5
|
|
113
|
+
},
|
|
114
|
+
option: {
|
|
115
|
+
color: 'green',
|
|
116
|
+
backgroundColor: '#00000022',
|
|
117
|
+
width: 20,
|
|
118
|
+
height: 20,
|
|
119
|
+
textAlign: 'center'
|
|
120
|
+
},
|
|
121
|
+
adContent: {
|
|
122
|
+
width: '100%',
|
|
123
|
+
backgroundColor: 'white',
|
|
124
|
+
flexDirection: 'row',
|
|
125
|
+
justifyContent: 'space-between',
|
|
126
|
+
paddingHorizontal: 10,
|
|
127
|
+
paddingVertical: 10,
|
|
128
|
+
alignItems: 'center',
|
|
129
|
+
borderBottomLeftRadius: 10,
|
|
130
|
+
borderBottomRightRadius: 10,
|
|
131
|
+
borderTopColor: '#00000022',
|
|
132
|
+
borderTopWidth: 1
|
|
133
|
+
},
|
|
134
|
+
logo: {
|
|
135
|
+
width: 35,
|
|
136
|
+
height: 35,
|
|
137
|
+
resizeMode: 'contain',
|
|
138
|
+
borderRadius: 2
|
|
139
|
+
},
|
|
140
|
+
textContainer: {
|
|
141
|
+
width: Dimensions.get('window').width - 150
|
|
142
|
+
},
|
|
143
|
+
titleRow: {
|
|
144
|
+
flexDirection: 'row',
|
|
145
|
+
alignItems: 'center',
|
|
146
|
+
gap: 5,
|
|
147
|
+
width: Dimensions.get('window').width - 200
|
|
148
|
+
},
|
|
149
|
+
adBadge: {
|
|
150
|
+
color: 'white',
|
|
151
|
+
backgroundColor: 'green',
|
|
152
|
+
width: 40,
|
|
153
|
+
borderRadius: 4,
|
|
154
|
+
textAlign: 'center'
|
|
155
|
+
},
|
|
156
|
+
title: {
|
|
157
|
+
color: 'black'
|
|
158
|
+
},
|
|
159
|
+
description: {
|
|
160
|
+
color: 'black'
|
|
161
|
+
},
|
|
162
|
+
button: {
|
|
163
|
+
paddingHorizontal: 10,
|
|
164
|
+
paddingVertical: 5,
|
|
165
|
+
borderWidth: 1,
|
|
166
|
+
borderColor: 'green',
|
|
167
|
+
borderRadius: 5,
|
|
168
|
+
alignItems: 'center',
|
|
169
|
+
justifyContent: 'center',
|
|
170
|
+
height: 40
|
|
171
|
+
},
|
|
172
|
+
buttonText: {
|
|
173
|
+
color: 'green'
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
//# sourceMappingURL=BannerAd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","Dimensions","Image","Linking","StyleSheet","Text","View","TouchableWithoutFeedback","Adgeist","jsx","_jsx","jsxs","_jsxs","BannerAd","dataPublisherId","dataAdSlot","width","height","adData","setAdData","response","fetchCreative","creative","data","sendCreativeAnalytic","_id","error","console","handleClick","ctaUrl","openURL","catch","err","fileUrl","accessible","accessibilityLabel","children","style","styles","container","source","uri","options","option","adContent","logo","textContainer","titleRow","adBadge","title","numberOfLines","ellipsizeMode","description","onPress","button","buttonText","create","backgroundColor","borderRadius","resizeMode","borderTopLeftRadius","borderTopRightRadius","flexDirection","gap","position","top","left","color","textAlign","justifyContent","paddingHorizontal","paddingVertical","alignItems","borderBottomLeftRadius","borderBottomRightRadius","borderTopColor","borderTopWidth","get","borderWidth","borderColor"],"sourceRoot":"../../../src","sources":["components/BannerAd.tsx"],"mappings":"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","ignoreList":[]}
|