react-native-daro 1.0.12-beta01 → 1.0.13
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/build.gradle +1 -1
- package/android/src/main/java/com/darom/DaroMModule.kt +1 -1
- package/android/src/main/java/com/darom/impl/DaroMRewardedAdModuleImpl.kt +8 -2
- package/ios/DaroMAdBannerViewManager.swift +4 -0
- package/lib/commonjs/AppOpenAd.js +129 -70
- package/lib/commonjs/AppOpenAd.js.map +1 -1
- package/lib/commonjs/EventEmitter.js +39 -11
- package/lib/commonjs/EventEmitter.js.map +1 -1
- package/lib/commonjs/InterstitialAd.js +129 -70
- package/lib/commonjs/InterstitialAd.js.map +1 -1
- package/lib/commonjs/LightPopupAd.js +143 -80
- package/lib/commonjs/LightPopupAd.js.map +1 -1
- package/lib/commonjs/RewardedAd.js +138 -80
- package/lib/commonjs/RewardedAd.js.map +1 -1
- package/lib/commonjs/index.js +0 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types/AdEvent.js +17 -0
- package/lib/commonjs/types/AdEvent.js.map +1 -1
- package/lib/module/AppOpenAd.js +129 -71
- package/lib/module/AppOpenAd.js.map +1 -1
- package/lib/module/EventEmitter.js +37 -10
- package/lib/module/EventEmitter.js.map +1 -1
- package/lib/module/InterstitialAd.js +130 -72
- package/lib/module/InterstitialAd.js.map +1 -1
- package/lib/module/LightPopupAd.js +145 -83
- package/lib/module/LightPopupAd.js.map +1 -1
- package/lib/module/RewardedAd.js +139 -82
- package/lib/module/RewardedAd.js.map +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/types/AdEvent.js +18 -1
- package/lib/module/types/AdEvent.js.map +1 -1
- package/lib/typescript/commonjs/src/AppOpenAd.d.ts +47 -2
- package/lib/typescript/commonjs/src/AppOpenAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/EventEmitter.d.ts +9 -1
- package/lib/typescript/commonjs/src/EventEmitter.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/InterstitialAd.d.ts +47 -2
- package/lib/typescript/commonjs/src/InterstitialAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/LightPopupAd.d.ts +51 -2
- package/lib/typescript/commonjs/src/LightPopupAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/RewardedAd.d.ts +51 -2
- package/lib/typescript/commonjs/src/RewardedAd.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +1 -1
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/AdEvent.d.ts +24 -0
- package/lib/typescript/commonjs/src/types/AdEvent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/LightPopupAd.d.ts +1 -5
- package/lib/typescript/commonjs/src/types/LightPopupAd.d.ts.map +1 -1
- package/lib/typescript/module/src/AppOpenAd.d.ts +47 -2
- package/lib/typescript/module/src/AppOpenAd.d.ts.map +1 -1
- package/lib/typescript/module/src/EventEmitter.d.ts +9 -1
- package/lib/typescript/module/src/EventEmitter.d.ts.map +1 -1
- package/lib/typescript/module/src/InterstitialAd.d.ts +47 -2
- package/lib/typescript/module/src/InterstitialAd.d.ts.map +1 -1
- package/lib/typescript/module/src/LightPopupAd.d.ts +51 -2
- package/lib/typescript/module/src/LightPopupAd.d.ts.map +1 -1
- package/lib/typescript/module/src/RewardedAd.d.ts +51 -2
- package/lib/typescript/module/src/RewardedAd.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +1 -1
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/types/AdEvent.d.ts +24 -0
- package/lib/typescript/module/src/types/AdEvent.d.ts.map +1 -1
- package/lib/typescript/module/src/types/LightPopupAd.d.ts +1 -5
- package/lib/typescript/module/src/types/LightPopupAd.d.ts.map +1 -1
- package/package.json +6 -2
- package/react-native-daro-m.podspec +1 -1
- package/src/AppOpenAd.ts +172 -104
- package/src/EventEmitter.ts +60 -14
- package/src/InterstitialAd.ts +159 -103
- package/src/LightPopupAd.ts +183 -97
- package/src/RewardedAd.ts +181 -122
- package/src/index.tsx +19 -11
- package/src/types/AdEvent.ts +39 -2
- package/src/types/LightPopupAd.ts +2 -7
- package/lib/commonjs/types/AppOpenAd.js +0 -6
- package/lib/commonjs/types/AppOpenAd.js.map +0 -1
- package/lib/commonjs/types/FullScreenAd.js +0 -6
- package/lib/commonjs/types/FullScreenAd.js.map +0 -1
- package/lib/commonjs/types/InterstitialAd.js +0 -6
- package/lib/commonjs/types/InterstitialAd.js.map +0 -1
- package/lib/commonjs/types/RewardedAd.js +0 -6
- package/lib/commonjs/types/RewardedAd.js.map +0 -1
- package/lib/module/types/AppOpenAd.js +0 -4
- package/lib/module/types/AppOpenAd.js.map +0 -1
- package/lib/module/types/FullScreenAd.js +0 -4
- package/lib/module/types/FullScreenAd.js.map +0 -1
- package/lib/module/types/InterstitialAd.js +0 -4
- package/lib/module/types/InterstitialAd.js.map +0 -1
- package/lib/module/types/RewardedAd.js +0 -4
- package/lib/module/types/RewardedAd.js.map +0 -1
- package/lib/typescript/commonjs/src/types/AppOpenAd.d.ts +0 -3
- package/lib/typescript/commonjs/src/types/AppOpenAd.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/types/FullScreenAd.d.ts +0 -21
- package/lib/typescript/commonjs/src/types/FullScreenAd.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/types/InterstitialAd.d.ts +0 -3
- package/lib/typescript/commonjs/src/types/InterstitialAd.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/types/RewardedAd.d.ts +0 -9
- package/lib/typescript/commonjs/src/types/RewardedAd.d.ts.map +0 -1
- package/lib/typescript/module/src/types/AppOpenAd.d.ts +0 -3
- package/lib/typescript/module/src/types/AppOpenAd.d.ts.map +0 -1
- package/lib/typescript/module/src/types/FullScreenAd.d.ts +0 -21
- package/lib/typescript/module/src/types/FullScreenAd.d.ts.map +0 -1
- package/lib/typescript/module/src/types/InterstitialAd.d.ts +0 -3
- package/lib/typescript/module/src/types/InterstitialAd.d.ts.map +0 -1
- package/lib/typescript/module/src/types/RewardedAd.d.ts +0 -9
- package/lib/typescript/module/src/types/RewardedAd.d.ts.map +0 -1
- package/src/types/AppOpenAd.ts +0 -3
- package/src/types/FullScreenAd.ts +0 -28
- package/src/types/InterstitialAd.ts +0 -3
- package/src/types/RewardedAd.ts +0 -15
package/src/InterstitialAd.ts
CHANGED
|
@@ -1,113 +1,169 @@
|
|
|
1
|
-
import { NativeModules } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { NativeModules } from 'react-native';
|
|
2
|
+
import {
|
|
3
|
+
addEventListener,
|
|
4
|
+
removeEventListener,
|
|
5
|
+
AdEventEmitter,
|
|
6
|
+
} from './EventEmitter';
|
|
7
|
+
import type {
|
|
8
|
+
AdDisplayFailedInfo,
|
|
9
|
+
AdInfo,
|
|
10
|
+
AdLoadFailedInfo,
|
|
11
|
+
} from './types/AdInfo';
|
|
12
|
+
import { AdEventType, type AdEventPayloadMap } from './types/AdEvent';
|
|
5
13
|
|
|
6
14
|
const { DaroMModule } = NativeModules;
|
|
7
15
|
|
|
8
16
|
const {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
ON_INTERSTITIAL_LOADED_EVENT,
|
|
18
|
+
ON_INTERSTITIAL_LOAD_FAILED_EVENT,
|
|
19
|
+
ON_INTERSTITIAL_CLICKED_EVENT,
|
|
20
|
+
ON_INTERSTITIAL_DISPLAYED_EVENT,
|
|
21
|
+
ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
|
|
22
|
+
ON_INTERSTITIAL_HIDDEN_EVENT,
|
|
23
|
+
ON_INTERSTITIAL_AD_IMPRESSION_RECORDED,
|
|
16
24
|
} = DaroMModule.getConstants();
|
|
17
25
|
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
const NATIVE_EVENT_BY_TYPE: Record<AdEventType, string> = {
|
|
27
|
+
[AdEventType.LOADED]: ON_INTERSTITIAL_LOADED_EVENT,
|
|
28
|
+
[AdEventType.LOAD_FAILED]: ON_INTERSTITIAL_LOAD_FAILED_EVENT,
|
|
29
|
+
[AdEventType.CLICKED]: ON_INTERSTITIAL_CLICKED_EVENT,
|
|
30
|
+
[AdEventType.DISPLAYED]: ON_INTERSTITIAL_DISPLAYED_EVENT,
|
|
31
|
+
[AdEventType.FAILED_TO_DISPLAY]: ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
|
|
32
|
+
[AdEventType.HIDDEN]: ON_INTERSTITIAL_HIDDEN_EVENT,
|
|
33
|
+
[AdEventType.IMPRESSION_RECORDED]: ON_INTERSTITIAL_AD_IMPRESSION_RECORDED,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export class InterstitialAd {
|
|
37
|
+
private readonly eventEmitter = new AdEventEmitter();
|
|
38
|
+
|
|
39
|
+
private constructor(private readonly adUnitId: string) {}
|
|
40
|
+
|
|
41
|
+
static createForAdRequest(adUnitId: string): InterstitialAd {
|
|
42
|
+
return new InterstitialAd(adUnitId);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
isAdReady(): Promise<boolean> {
|
|
46
|
+
return DaroMModule.isInterstitialReady(this.adUnitId);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
load(): void {
|
|
50
|
+
DaroMModule.loadInterstitial(this.adUnitId);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
show(): void {
|
|
54
|
+
DaroMModule.showInterstitial(this.adUnitId);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
addAdEventListener<T extends AdEventType>(
|
|
58
|
+
type: T,
|
|
59
|
+
listener: (info: AdEventPayloadMap[T]) => void
|
|
60
|
+
): () => void {
|
|
61
|
+
const nativeEvent = NATIVE_EVENT_BY_TYPE[type];
|
|
62
|
+
const adUnitId = this.adUnitId;
|
|
63
|
+
return this.eventEmitter.addEventListener(nativeEvent, (payload: any) => {
|
|
64
|
+
if (payload?.adUnitId !== undefined && payload.adUnitId !== adUnitId) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
listener(payload);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
removeAllListeners(): void {
|
|
72
|
+
this.eventEmitter.removeAllListeners();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// ---- Deprecated static API (backward compatibility) ----
|
|
76
|
+
|
|
77
|
+
/** @deprecated `InterstitialAd.createForAdRequest(adUnitId)` 인스턴스의 `isAdReady()`를 사용하세요. */
|
|
78
|
+
static isAdReady(adUnitId: string): Promise<boolean> {
|
|
79
|
+
return DaroMModule.isInterstitialReady(adUnitId);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** @deprecated `InterstitialAd.createForAdRequest(adUnitId)` 인스턴스의 `load()`를 사용하세요. */
|
|
83
|
+
static loadAd(adUnitId: string): void {
|
|
84
|
+
DaroMModule.loadInterstitial(adUnitId);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** @deprecated `InterstitialAd.createForAdRequest(adUnitId)` 인스턴스의 `show()`를 사용하세요. */
|
|
88
|
+
static showAd(adUnitId: string): void {
|
|
27
89
|
DaroMModule.showInterstitial(adUnitId);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
addAdHiddenEventListener,
|
|
107
|
-
removeAdHiddenEventListener,
|
|
108
|
-
|
|
109
|
-
addAdImpressionRecordedListener,
|
|
110
|
-
removeAdImpressionRecordedListener,
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** @deprecated `addAdEventListener(AdEventType.LOADED, ...)`를 인스턴스에서 사용하세요. */
|
|
93
|
+
static addAdLoadedEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
94
|
+
addEventListener(ON_INTERSTITIAL_LOADED_EVENT, listener);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
98
|
+
static removeAdLoadedEventListener(): void {
|
|
99
|
+
removeEventListener(ON_INTERSTITIAL_LOADED_EVENT);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** @deprecated `addAdEventListener(AdEventType.LOAD_FAILED, ...)`를 인스턴스에서 사용하세요. */
|
|
103
|
+
static addAdLoadFailedEventListener(
|
|
104
|
+
listener: (errorInfo: AdLoadFailedInfo) => void
|
|
105
|
+
): void {
|
|
106
|
+
addEventListener(ON_INTERSTITIAL_LOAD_FAILED_EVENT, listener);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
110
|
+
static removeAdLoadFailedEventListener(): void {
|
|
111
|
+
removeEventListener(ON_INTERSTITIAL_LOAD_FAILED_EVENT);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** @deprecated `addAdEventListener(AdEventType.CLICKED, ...)`를 인스턴스에서 사용하세요. */
|
|
115
|
+
static addAdClickedEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
116
|
+
addEventListener(ON_INTERSTITIAL_CLICKED_EVENT, listener);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
120
|
+
static removeAdClickedEventListener(): void {
|
|
121
|
+
removeEventListener(ON_INTERSTITIAL_CLICKED_EVENT);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** @deprecated `addAdEventListener(AdEventType.DISPLAYED, ...)`를 인스턴스에서 사용하세요. */
|
|
125
|
+
static addAdDisplayedEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
126
|
+
addEventListener(ON_INTERSTITIAL_DISPLAYED_EVENT, listener);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
130
|
+
static removeAdDisplayedEventListener(): void {
|
|
131
|
+
removeEventListener(ON_INTERSTITIAL_DISPLAYED_EVENT);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** @deprecated `addAdEventListener(AdEventType.FAILED_TO_DISPLAY, ...)`를 인스턴스에서 사용하세요. */
|
|
135
|
+
static addAdFailedToDisplayEventListener(
|
|
136
|
+
listener: (errorInfo: AdDisplayFailedInfo) => void
|
|
137
|
+
): void {
|
|
138
|
+
addEventListener(ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT, listener);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
142
|
+
static removeAdFailedToDisplayEventListener(): void {
|
|
143
|
+
removeEventListener(ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/** @deprecated `addAdEventListener(AdEventType.HIDDEN, ...)`를 인스턴스에서 사용하세요. */
|
|
147
|
+
static addAdHiddenEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
148
|
+
addEventListener(ON_INTERSTITIAL_HIDDEN_EVENT, listener);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
152
|
+
static removeAdHiddenEventListener(): void {
|
|
153
|
+
removeEventListener(ON_INTERSTITIAL_HIDDEN_EVENT);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** @deprecated `addAdEventListener(AdEventType.IMPRESSION_RECORDED, ...)`를 인스턴스에서 사용하세요. */
|
|
157
|
+
static addAdImpressionRecordedListener(
|
|
158
|
+
listener: (adInfo: AdInfo) => void
|
|
159
|
+
): void {
|
|
160
|
+
addEventListener(ON_INTERSTITIAL_AD_IMPRESSION_RECORDED, listener);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
164
|
+
static removeAdImpressionRecordedListener(): void {
|
|
165
|
+
removeEventListener(ON_INTERSTITIAL_AD_IMPRESSION_RECORDED);
|
|
166
|
+
}
|
|
111
167
|
}
|
|
112
168
|
|
|
113
169
|
export default InterstitialAd;
|
package/src/LightPopupAd.ts
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import { NativeModules } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { NativeModules } from 'react-native';
|
|
2
|
+
import {
|
|
3
|
+
addEventListener,
|
|
4
|
+
removeEventListener,
|
|
5
|
+
AdEventEmitter,
|
|
6
|
+
} from './EventEmitter';
|
|
7
|
+
import type {
|
|
8
|
+
AdDisplayFailedInfo,
|
|
9
|
+
AdInfo,
|
|
10
|
+
AdLoadFailedInfo,
|
|
11
|
+
} from './types/AdInfo';
|
|
12
|
+
import type { LightPopupAdConfiguration } from './types/LightPopupAd';
|
|
13
|
+
import { AdEventType, type AdEventPayloadMap } from './types/AdEvent';
|
|
14
|
+
import tinycolor from 'tinycolor2';
|
|
6
15
|
|
|
7
16
|
const { DaroMModule } = NativeModules;
|
|
8
17
|
|
|
@@ -16,25 +25,23 @@ const {
|
|
|
16
25
|
ON_LIGHTPOPUP_AD_IMPRESSION_RECORDED,
|
|
17
26
|
} = DaroMModule.getConstants();
|
|
18
27
|
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const showAd = (adUnitId: string): void => {
|
|
28
|
-
DaroMModule.showLightPopup(adUnitId);
|
|
28
|
+
const NATIVE_EVENT_BY_TYPE: Record<AdEventType, string> = {
|
|
29
|
+
[AdEventType.LOADED]: ON_LIGHTPOPUP_LOADED_EVENT,
|
|
30
|
+
[AdEventType.LOAD_FAILED]: ON_LIGHTPOPUP_LOAD_FAILED_EVENT,
|
|
31
|
+
[AdEventType.CLICKED]: ON_LIGHTPOPUP_CLICKED_EVENT,
|
|
32
|
+
[AdEventType.DISPLAYED]: ON_LIGHTPOPUP_DISPLAYED_EVENT,
|
|
33
|
+
[AdEventType.FAILED_TO_DISPLAY]: ON_LIGHTPOPUP_AD_FAILED_TO_DISPLAY_EVENT,
|
|
34
|
+
[AdEventType.HIDDEN]: ON_LIGHTPOPUP_HIDDEN_EVENT,
|
|
35
|
+
[AdEventType.IMPRESSION_RECORDED]: ON_LIGHTPOPUP_AD_IMPRESSION_RECORDED,
|
|
29
36
|
};
|
|
30
37
|
|
|
31
38
|
function colorToHex(color: any): string | undefined {
|
|
32
|
-
if (typeof color ===
|
|
39
|
+
if (typeof color === 'number') {
|
|
33
40
|
// react-native에서 number로 오는 경우 (ex: processColor)
|
|
34
41
|
// #AARRGGBB로 변환
|
|
35
|
-
return `#${color.toString(16).padStart(8,
|
|
42
|
+
return `#${color.toString(16).padStart(8, '0')}`.toUpperCase();
|
|
36
43
|
}
|
|
37
|
-
if (typeof color ===
|
|
44
|
+
if (typeof color === 'string') {
|
|
38
45
|
const tc = tinycolor(color);
|
|
39
46
|
if (tc.isValid()) {
|
|
40
47
|
// alpha가 1이면 #RRGGBB, 아니면 #AARRGGBB
|
|
@@ -43,10 +50,9 @@ function colorToHex(color: any): string | undefined {
|
|
|
43
50
|
if (alpha === 255) {
|
|
44
51
|
return hex;
|
|
45
52
|
} else {
|
|
46
|
-
// #AARRGGBB
|
|
47
53
|
return (
|
|
48
|
-
|
|
49
|
-
alpha.toString(16).padStart(2,
|
|
54
|
+
'#' +
|
|
55
|
+
alpha.toString(16).padStart(2, '0').toUpperCase() +
|
|
50
56
|
tc.toHex().toUpperCase()
|
|
51
57
|
);
|
|
52
58
|
}
|
|
@@ -55,107 +61,187 @@ function colorToHex(color: any): string | undefined {
|
|
|
55
61
|
return undefined;
|
|
56
62
|
}
|
|
57
63
|
|
|
58
|
-
|
|
64
|
+
function normalizeConfiguration(
|
|
65
|
+
configuration: LightPopupAdConfiguration
|
|
66
|
+
): LightPopupAdConfiguration {
|
|
59
67
|
const config = { ...configuration };
|
|
60
68
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (config.cardViewBackgroundColor)
|
|
64
|
-
|
|
65
|
-
if (config.
|
|
69
|
+
if (config.backgroundColor)
|
|
70
|
+
config.backgroundColor = colorToHex(config.backgroundColor);
|
|
71
|
+
if (config.cardViewBackgroundColor)
|
|
72
|
+
config.cardViewBackgroundColor = colorToHex(config.cardViewBackgroundColor);
|
|
73
|
+
if (config.adMarkLabelTextColor)
|
|
74
|
+
config.adMarkLabelTextColor = colorToHex(config.adMarkLabelTextColor);
|
|
75
|
+
if (config.adMarkLabelBackgroundColor)
|
|
76
|
+
config.adMarkLabelBackgroundColor = colorToHex(
|
|
77
|
+
config.adMarkLabelBackgroundColor
|
|
78
|
+
);
|
|
66
79
|
if (config.closeButtonText) config.closeButtonText = config.closeButtonText;
|
|
67
|
-
if (config.closeButtonTextColor)
|
|
68
|
-
|
|
69
|
-
if (config.
|
|
70
|
-
|
|
71
|
-
if (config.
|
|
80
|
+
if (config.closeButtonTextColor)
|
|
81
|
+
config.closeButtonTextColor = colorToHex(config.closeButtonTextColor);
|
|
82
|
+
if (config.titleTextColor)
|
|
83
|
+
config.titleTextColor = colorToHex(config.titleTextColor);
|
|
84
|
+
if (config.bodyTextColor)
|
|
85
|
+
config.bodyTextColor = colorToHex(config.bodyTextColor);
|
|
86
|
+
if (config.ctaButtonTextColor)
|
|
87
|
+
config.ctaButtonTextColor = colorToHex(config.ctaButtonTextColor);
|
|
88
|
+
if (config.ctaButtonBackgroundColor)
|
|
89
|
+
config.ctaButtonBackgroundColor = colorToHex(
|
|
90
|
+
config.ctaButtonBackgroundColor
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
return config;
|
|
94
|
+
}
|
|
72
95
|
|
|
73
|
-
|
|
74
|
-
|
|
96
|
+
export class LightPopupAd {
|
|
97
|
+
private readonly eventEmitter = new AdEventEmitter();
|
|
75
98
|
|
|
76
|
-
|
|
77
|
-
addEventListener(ON_LIGHTPOPUP_LOADED_EVENT, listener);
|
|
78
|
-
};
|
|
99
|
+
private constructor(private readonly adUnitId: string) {}
|
|
79
100
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
101
|
+
static createForAdRequest(adUnitId: string): LightPopupAd {
|
|
102
|
+
return new LightPopupAd(adUnitId);
|
|
103
|
+
}
|
|
83
104
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
105
|
+
isAdReady(): Promise<boolean> {
|
|
106
|
+
return DaroMModule.isLightPopupReady(this.adUnitId);
|
|
107
|
+
}
|
|
87
108
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
109
|
+
load(): void {
|
|
110
|
+
DaroMModule.loadLightPopup(this.adUnitId);
|
|
111
|
+
}
|
|
91
112
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
113
|
+
show(): void {
|
|
114
|
+
DaroMModule.showLightPopup(this.adUnitId);
|
|
115
|
+
}
|
|
95
116
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
117
|
+
setConfiguration(configuration: LightPopupAdConfiguration): void {
|
|
118
|
+
DaroMModule.setLightPopupAdConfiguration(
|
|
119
|
+
this.adUnitId,
|
|
120
|
+
normalizeConfiguration(configuration)
|
|
121
|
+
);
|
|
122
|
+
}
|
|
99
123
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
124
|
+
addAdEventListener<T extends AdEventType>(
|
|
125
|
+
type: T,
|
|
126
|
+
listener: (info: AdEventPayloadMap[T]) => void
|
|
127
|
+
): () => void {
|
|
128
|
+
const nativeEvent = NATIVE_EVENT_BY_TYPE[type];
|
|
129
|
+
const adUnitId = this.adUnitId;
|
|
130
|
+
return this.eventEmitter.addEventListener(nativeEvent, (payload: any) => {
|
|
131
|
+
if (payload?.adUnitId !== undefined && payload.adUnitId !== adUnitId) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
listener(payload);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
103
137
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
138
|
+
removeAllListeners(): void {
|
|
139
|
+
this.eventEmitter.removeAllListeners();
|
|
140
|
+
}
|
|
107
141
|
|
|
108
|
-
|
|
109
|
-
addEventListener(ON_LIGHTPOPUP_AD_FAILED_TO_DISPLAY_EVENT, listener);
|
|
110
|
-
};
|
|
142
|
+
// ---- Deprecated static API (backward compatibility) ----
|
|
111
143
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
144
|
+
/** @deprecated `LightPopupAd.createForAdRequest(adUnitId)` 인스턴스의 `isAdReady()`를 사용하세요. */
|
|
145
|
+
static isAdReady(adUnitId: string): Promise<boolean> {
|
|
146
|
+
return DaroMModule.isLightPopupReady(adUnitId);
|
|
147
|
+
}
|
|
115
148
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
149
|
+
/** @deprecated `LightPopupAd.createForAdRequest(adUnitId)` 인스턴스의 `load()`를 사용하세요. */
|
|
150
|
+
static loadAd(adUnitId: string): void {
|
|
151
|
+
DaroMModule.loadLightPopup(adUnitId);
|
|
152
|
+
}
|
|
119
153
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
154
|
+
/** @deprecated `LightPopupAd.createForAdRequest(adUnitId)` 인스턴스의 `show()`를 사용하세요. */
|
|
155
|
+
static showAd(adUnitId: string): void {
|
|
156
|
+
DaroMModule.showLightPopup(adUnitId);
|
|
157
|
+
}
|
|
123
158
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
159
|
+
/** @deprecated 인스턴스의 `setConfiguration()`을 사용하세요. */
|
|
160
|
+
static setLightPopupAdConfiguration(
|
|
161
|
+
adUnitId: string,
|
|
162
|
+
configuration: LightPopupAdConfiguration
|
|
163
|
+
): void {
|
|
164
|
+
DaroMModule.setLightPopupAdConfiguration(
|
|
165
|
+
adUnitId,
|
|
166
|
+
normalizeConfiguration(configuration)
|
|
167
|
+
);
|
|
168
|
+
}
|
|
127
169
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
170
|
+
/** @deprecated `addAdEventListener(AdEventType.LOADED, ...)`를 인스턴스에서 사용하세요. */
|
|
171
|
+
static addAdLoadedEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
172
|
+
addEventListener(ON_LIGHTPOPUP_LOADED_EVENT, listener);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
176
|
+
static removeAdLoadedEventListener(): void {
|
|
177
|
+
removeEventListener(ON_LIGHTPOPUP_LOADED_EVENT);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** @deprecated `addAdEventListener(AdEventType.LOAD_FAILED, ...)`를 인스턴스에서 사용하세요. */
|
|
181
|
+
static addAdLoadFailedEventListener(
|
|
182
|
+
listener: (errorInfo: AdLoadFailedInfo) => void
|
|
183
|
+
): void {
|
|
184
|
+
addEventListener(ON_LIGHTPOPUP_LOAD_FAILED_EVENT, listener);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
188
|
+
static removeAdLoadFailedEventListener(): void {
|
|
189
|
+
removeEventListener(ON_LIGHTPOPUP_LOAD_FAILED_EVENT);
|
|
190
|
+
}
|
|
131
191
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
192
|
+
/** @deprecated `addAdEventListener(AdEventType.CLICKED, ...)`를 인스턴스에서 사용하세요. */
|
|
193
|
+
static addAdClickedEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
194
|
+
addEventListener(ON_LIGHTPOPUP_CLICKED_EVENT, listener);
|
|
195
|
+
}
|
|
136
196
|
|
|
137
|
-
|
|
138
|
-
|
|
197
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
198
|
+
static removeAdClickedEventListener(): void {
|
|
199
|
+
removeEventListener(ON_LIGHTPOPUP_CLICKED_EVENT);
|
|
200
|
+
}
|
|
139
201
|
|
|
140
|
-
|
|
141
|
-
|
|
202
|
+
/** @deprecated `addAdEventListener(AdEventType.DISPLAYED, ...)`를 인스턴스에서 사용하세요. */
|
|
203
|
+
static addAdDisplayedEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
204
|
+
addEventListener(ON_LIGHTPOPUP_DISPLAYED_EVENT, listener);
|
|
205
|
+
}
|
|
142
206
|
|
|
143
|
-
|
|
144
|
-
|
|
207
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
208
|
+
static removeAdDisplayedEventListener(): void {
|
|
209
|
+
removeEventListener(ON_LIGHTPOPUP_DISPLAYED_EVENT);
|
|
210
|
+
}
|
|
145
211
|
|
|
146
|
-
|
|
147
|
-
|
|
212
|
+
/** @deprecated `addAdEventListener(AdEventType.FAILED_TO_DISPLAY, ...)`를 인스턴스에서 사용하세요. */
|
|
213
|
+
static addAdFailedToDisplayEventListener(
|
|
214
|
+
listener: (errorInfo: AdDisplayFailedInfo) => void
|
|
215
|
+
): void {
|
|
216
|
+
addEventListener(ON_LIGHTPOPUP_AD_FAILED_TO_DISPLAY_EVENT, listener);
|
|
217
|
+
}
|
|
148
218
|
|
|
149
|
-
|
|
150
|
-
removeAdFailedToDisplayEventListener
|
|
219
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
220
|
+
static removeAdFailedToDisplayEventListener(): void {
|
|
221
|
+
removeEventListener(ON_LIGHTPOPUP_AD_FAILED_TO_DISPLAY_EVENT);
|
|
222
|
+
}
|
|
151
223
|
|
|
152
|
-
|
|
153
|
-
|
|
224
|
+
/** @deprecated `addAdEventListener(AdEventType.HIDDEN, ...)`를 인스턴스에서 사용하세요. */
|
|
225
|
+
static addAdHiddenEventListener(listener: (adInfo: AdInfo) => void): void {
|
|
226
|
+
addEventListener(ON_LIGHTPOPUP_HIDDEN_EVENT, listener);
|
|
227
|
+
}
|
|
154
228
|
|
|
155
|
-
|
|
156
|
-
|
|
229
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
230
|
+
static removeAdHiddenEventListener(): void {
|
|
231
|
+
removeEventListener(ON_LIGHTPOPUP_HIDDEN_EVENT);
|
|
232
|
+
}
|
|
157
233
|
|
|
158
|
-
|
|
159
|
-
|
|
234
|
+
/** @deprecated `addAdEventListener(AdEventType.IMPRESSION_RECORDED, ...)`를 인스턴스에서 사용하세요. */
|
|
235
|
+
static addAdImpressionRecordedListener(
|
|
236
|
+
listener: (adInfo: AdInfo) => void
|
|
237
|
+
): void {
|
|
238
|
+
addEventListener(ON_LIGHTPOPUP_AD_IMPRESSION_RECORDED, listener);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/** @deprecated 인스턴스의 `addAdEventListener` disposer를 사용하세요. */
|
|
242
|
+
static removeAdImpressionRecordedListener(): void {
|
|
243
|
+
removeEventListener(ON_LIGHTPOPUP_AD_IMPRESSION_RECORDED);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
160
246
|
|
|
161
|
-
export default LightPopupAd;
|
|
247
|
+
export default LightPopupAd;
|