react-native-moengage 10.3.0 → 11.1.0
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/CHANGELOG.md +16 -0
- package/ReactNativeMoEngage.podspec +1 -1
- package/android/build.gradle +3 -3
- package/android/src/main/java/com/moengage/react/MoEReactBridgeHandler.kt +270 -257
- package/android/src/newarch/com/moengage/react/MoEReactBridge.kt +8 -0
- package/iOS/MoEReactBridge/MoEReactBridge.mm +8 -0
- package/iOS/MoEReactBridge/MoEReactNativeHandler.h +2 -0
- package/iOS/MoEReactBridge/MoEReactNativeHandler.m +22 -0
- package/package.json +1 -1
- package/src/NativeMoEngage.ts +13 -0
- package/src/index.ts +31 -11
- package/src/models/MoEAnalyticsConfig.ts +25 -0
- package/src/models/MoEInAppRules.ts +20 -0
- package/src/models/MoEInitConfig.ts +9 -3
- package/src/models/MoESelfHandledCampaign.ts +5 -2
- package/src/models/MoESelfHandledCampaignsData.ts +15 -0
- package/src/moeParser/MoEInAppParser.ts +42 -3
- package/src/utils/MoEConstants.ts +6 -0
- package/src/utils/MoECoreHandler.ts +15 -0
- package/src/utils/MoEJsonBuilder.ts +35 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
# 30-09-2024
|
|
2
|
+
|
|
3
|
+
## 11.1.0
|
|
4
|
+
- Added support for Multiple SelfHandled InApps.
|
|
5
|
+
- iOS
|
|
6
|
+
- Added support for Provisional Push.
|
|
7
|
+
- MoEngage-iOS-SDK version updated to `9.20.0`.
|
|
8
|
+
|
|
9
|
+
# 07-08-2024
|
|
10
|
+
|
|
11
|
+
## 11.0.0
|
|
12
|
+
- iOS
|
|
13
|
+
- BugFix: Resolved the issue of tracking User Attribute TRUE/FALSE as 0/1.
|
|
14
|
+
- Pinned plugin dependency version
|
|
15
|
+
- MoEngage-iOS-SDK version updated to `9.18.1`.
|
|
16
|
+
|
|
1
17
|
# 31-07-2024
|
|
2
18
|
|
|
3
19
|
## 10.3.0
|
|
@@ -15,7 +15,7 @@ Pod::Spec.new do |s|
|
|
|
15
15
|
s.platforms = { :ios => "11.0", :tvos => "11.0" }
|
|
16
16
|
s.source_files = 'iOS/MoEReactBridge/**/*.{h,m,mm}'
|
|
17
17
|
s.dependency 'React'
|
|
18
|
-
s.dependency 'MoEngagePluginBase','
|
|
18
|
+
s.dependency 'MoEngagePluginBase','5.1.0'
|
|
19
19
|
s.ios.dependency 'MoEngage-iOS-SDK/RichNotification'
|
|
20
20
|
|
|
21
21
|
s.prepare_command = <<-CMD
|
package/android/build.gradle
CHANGED
|
@@ -20,9 +20,9 @@ rootProject.allprojects {
|
|
|
20
20
|
|
|
21
21
|
ext {
|
|
22
22
|
//dependency version
|
|
23
|
-
moengageCoreVersion = "13.
|
|
24
|
-
moengageInAppVersion = "8.
|
|
25
|
-
basePluginVersion = "4.
|
|
23
|
+
moengageCoreVersion = "13.05.00"
|
|
24
|
+
moengageInAppVersion = "8.6.0"
|
|
25
|
+
basePluginVersion = "4.2.0"
|
|
26
26
|
//build versions
|
|
27
27
|
minimumVersion = 21
|
|
28
28
|
compileVersion = 34
|
|
@@ -11,260 +11,273 @@
|
|
|
11
11
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
package com.moengage.react
|
|
15
|
-
|
|
16
|
-
import android.content.Context
|
|
17
|
-
import com.facebook.react.bridge.Promise
|
|
18
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
19
|
-
import com.moengage.core.LogLevel
|
|
20
|
-
import com.moengage.core.MoECoreHelper
|
|
21
|
-
import com.moengage.core.internal.logger.Logger
|
|
22
|
-
import com.moengage.core.listeners.AppBackgroundListener
|
|
23
|
-
import com.moengage.plugin.base.internal.PluginHelper
|
|
24
|
-
import com.moengage.plugin.base.internal.
|
|
25
|
-
import com.moengage.plugin.base.internal.
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
}
|
|
14
|
+
package com.moengage.react
|
|
15
|
+
|
|
16
|
+
import android.content.Context
|
|
17
|
+
import com.facebook.react.bridge.Promise
|
|
18
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
19
|
+
import com.moengage.core.LogLevel
|
|
20
|
+
import com.moengage.core.MoECoreHelper
|
|
21
|
+
import com.moengage.core.internal.logger.Logger
|
|
22
|
+
import com.moengage.core.listeners.AppBackgroundListener
|
|
23
|
+
import com.moengage.plugin.base.internal.PluginHelper
|
|
24
|
+
import com.moengage.plugin.base.internal.selfHandledInAppsToJson
|
|
25
|
+
import com.moengage.plugin.base.internal.setEventEmitter
|
|
26
|
+
import com.moengage.plugin.base.internal.userDeletionDataToJson
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Class to handle all the request from the [MoEReactBridge] from both old and new arch
|
|
30
|
+
*
|
|
31
|
+
* @author Abhishek Kumar
|
|
32
|
+
* @since Todo: Add Version
|
|
33
|
+
*/
|
|
34
|
+
internal class MoEReactBridgeHandler(private val reactContext: ReactApplicationContext) {
|
|
35
|
+
|
|
36
|
+
private val tag = "${MODULE_TAG}MoEReactBridgeHandler"
|
|
37
|
+
|
|
38
|
+
private val context: Context = reactContext.applicationContext
|
|
39
|
+
private val pluginHelper = PluginHelper()
|
|
40
|
+
|
|
41
|
+
private val backgroundStateListener =
|
|
42
|
+
AppBackgroundListener { _, _ -> pluginHelper.onFrameworkDetached() }
|
|
43
|
+
|
|
44
|
+
fun getName() = NAME
|
|
45
|
+
|
|
46
|
+
fun setAppStatus(payload: String) {
|
|
47
|
+
try {
|
|
48
|
+
Logger.print { "$tag setAppStatus() : Payload: $payload" }
|
|
49
|
+
pluginHelper.setAppStatus(context, payload)
|
|
50
|
+
} catch (t: Throwable) {
|
|
51
|
+
Logger.print(LogLevel.ERROR, t) { "$tag setAppStatus() : " }
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
fun trackEvent(payload: String) {
|
|
56
|
+
try {
|
|
57
|
+
Logger.print { "$tag trackEvent() : Payload: $payload" }
|
|
58
|
+
pluginHelper.trackEvent(context, payload)
|
|
59
|
+
} catch (t: Throwable) {
|
|
60
|
+
Logger.print(LogLevel.ERROR, t) { "$tag trackEvent() : " }
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
fun setUserAttribute(payload: String) {
|
|
65
|
+
try {
|
|
66
|
+
Logger.print { "$tag setUserAttribute() : Payload: $payload" }
|
|
67
|
+
pluginHelper.setUserAttribute(context, payload)
|
|
68
|
+
} catch (t: Throwable) {
|
|
69
|
+
Logger.print(LogLevel.ERROR, t) { "$tag setUserAttribute() : " }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
fun logout(payload: String) {
|
|
74
|
+
try {
|
|
75
|
+
Logger.print { "$tag logout() : $payload" }
|
|
76
|
+
pluginHelper.logout(context, payload)
|
|
77
|
+
} catch (t: Throwable) {
|
|
78
|
+
Logger.print(LogLevel.ERROR, t) { "$tag logout() : " }
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
fun setAlias(payload: String) {
|
|
83
|
+
try {
|
|
84
|
+
Logger.print { "$tag setAlias() : Payload: $payload" }
|
|
85
|
+
pluginHelper.setAlias(context, payload)
|
|
86
|
+
} catch (t: Throwable) {
|
|
87
|
+
Logger.print(LogLevel.ERROR, t) { "$tag setAlias() : " }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
fun setAppContext(payload: String) {
|
|
92
|
+
try {
|
|
93
|
+
Logger.print { "$tag setAppContext() : Payload: $payload" }
|
|
94
|
+
pluginHelper.setAppContext(context, payload)
|
|
95
|
+
} catch (t: Throwable) {
|
|
96
|
+
Logger.print(LogLevel.ERROR, t) { "$tag setAppContext() : " }
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
fun resetAppContext(payload: String) {
|
|
101
|
+
try {
|
|
102
|
+
Logger.print { "$tag resetAppContext() : $payload" }
|
|
103
|
+
pluginHelper.resetAppContext(context, payload)
|
|
104
|
+
} catch (t: Throwable) {
|
|
105
|
+
Logger.print(LogLevel.ERROR, t) { "$tag resetAppContext() : " }
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
fun showInApp(payload: String) {
|
|
110
|
+
try {
|
|
111
|
+
Logger.print { "$tag showInApp() : $payload" }
|
|
112
|
+
pluginHelper.showInApp(context, payload)
|
|
113
|
+
} catch (t: Throwable) {
|
|
114
|
+
Logger.print(LogLevel.ERROR, t) { "$tag showInApp() : " }
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
fun getSelfHandledInApp(payload: String) {
|
|
119
|
+
try {
|
|
120
|
+
Logger.print { "$tag getSelfHandledInApp() : $payload" }
|
|
121
|
+
pluginHelper.getSelfHandledInApp(context, payload)
|
|
122
|
+
} catch (t: Throwable) {
|
|
123
|
+
Logger.print(LogLevel.ERROR, t) { "$tag getSelfHandledInApp() : " }
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
fun passPushToken(payload: String) {
|
|
128
|
+
try {
|
|
129
|
+
Logger.print { "$tag passPushToken() : $payload" }
|
|
130
|
+
pluginHelper.passPushToken(context, payload)
|
|
131
|
+
} catch (t: Throwable) {
|
|
132
|
+
Logger.print(LogLevel.ERROR, t) { "$tag passPushToken() : " }
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
fun passPushPayload(payload: String) {
|
|
137
|
+
try {
|
|
138
|
+
Logger.print { "$tag passPushPayload() : $payload" }
|
|
139
|
+
pluginHelper.passPushPayload(context, payload)
|
|
140
|
+
} catch (t: Throwable) {
|
|
141
|
+
Logger.print(LogLevel.ERROR, t) { "$tag passPushPayload() : " }
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
fun initialize(payload: String) {
|
|
146
|
+
try {
|
|
147
|
+
Logger.print { "$tag initialize() : $payload" }
|
|
148
|
+
pluginHelper.initialise(payload)
|
|
149
|
+
setEventEmitter(EventEmitterImpl(reactContext))
|
|
150
|
+
if (GlobalCache.lifecycleAwareCallbackEnabled) {
|
|
151
|
+
MoECoreHelper.addAppBackgroundListener(backgroundStateListener)
|
|
152
|
+
}
|
|
153
|
+
} catch (t: Throwable) {
|
|
154
|
+
Logger.print(LogLevel.ERROR, t) { "$tag initialize() : " }
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
fun selfHandledCallback(payload: String) {
|
|
159
|
+
try {
|
|
160
|
+
Logger.print { "$tag selfHandledCallback() : $payload" }
|
|
161
|
+
pluginHelper.selfHandledCallback(context, payload)
|
|
162
|
+
} catch (t: Throwable) {
|
|
163
|
+
Logger.print(LogLevel.ERROR, t) { "$tag selfHandledCallback() : " }
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
fun optOutTracking(payload: String) {
|
|
168
|
+
try {
|
|
169
|
+
pluginHelper.optOutTracking(context, payload)
|
|
170
|
+
} catch (t: Throwable) {
|
|
171
|
+
Logger.print(LogLevel.ERROR, t) { "$tag optOutTracking() : " }
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
fun updateSdkState(payload: String) {
|
|
176
|
+
try {
|
|
177
|
+
Logger.print { "$tag updateSdkState() : $payload" }
|
|
178
|
+
pluginHelper.storeFeatureStatus(context, payload)
|
|
179
|
+
} catch (t: Throwable) {
|
|
180
|
+
Logger.print(LogLevel.ERROR, t) { "$tag updateSdkState() : " }
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
fun onOrientationChanged() {
|
|
185
|
+
try {
|
|
186
|
+
Logger.print { "$tag onOrientationChanged() : " }
|
|
187
|
+
pluginHelper.onConfigurationChanged()
|
|
188
|
+
} catch (t: Throwable) {
|
|
189
|
+
Logger.print(LogLevel.ERROR, t) { "$tag onOrientationChanged() : " }
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
fun deviceIdentifierTrackingStatusUpdate(payload: String) {
|
|
194
|
+
try {
|
|
195
|
+
Logger.print { "$tag deviceIdentifierTrackingStatusUpdate() : $payload" }
|
|
196
|
+
pluginHelper.deviceIdentifierTrackingStatusUpdate(context, payload)
|
|
197
|
+
} catch (t: Throwable) {
|
|
198
|
+
Logger.print(LogLevel.ERROR, t) { "$tag deviceIdentifierTrackingStatusUpdate() : " }
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
fun setupNotificationChannels() {
|
|
203
|
+
try {
|
|
204
|
+
Logger.print { "$tag setupNotificationChannels() : " }
|
|
205
|
+
pluginHelper.setUpNotificationChannels(context)
|
|
206
|
+
} catch (t: Throwable) {
|
|
207
|
+
Logger.print(LogLevel.ERROR, t) { "$tag setupNotificationChannel() :" }
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
fun navigateToSettings() {
|
|
212
|
+
try {
|
|
213
|
+
Logger.print { "$tag navigateToSettings() : " }
|
|
214
|
+
pluginHelper.navigateToSettings(context)
|
|
215
|
+
} catch (t: Throwable) {
|
|
216
|
+
Logger.print(LogLevel.ERROR, t) { "$tag navigateToSettings() :" }
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
fun requestPushPermission() {
|
|
221
|
+
try {
|
|
222
|
+
Logger.print { "$tag requestPushPermission() : " }
|
|
223
|
+
pluginHelper.requestPushPermission(context)
|
|
224
|
+
} catch (t: Throwable) {
|
|
225
|
+
Logger.print(LogLevel.ERROR, t) { "$tag requestPushPermission() :" }
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
fun permissionResponse(payload: String) {
|
|
230
|
+
try {
|
|
231
|
+
Logger.print { "$tag permissionResponse() : Payload: $payload" }
|
|
232
|
+
pluginHelper.permissionResponse(context, payload)
|
|
233
|
+
} catch (t: Throwable) {
|
|
234
|
+
Logger.print(LogLevel.ERROR, t) { "$tag permissionResponse() :" }
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
fun updatePushPermissionRequestCount(payload: String) {
|
|
239
|
+
try {
|
|
240
|
+
Logger.print { "$tag updatePushPermissionRequestCount() : Payload: $payload" }
|
|
241
|
+
pluginHelper.updatePushPermissionRequestCount(context, payload)
|
|
242
|
+
} catch (t: Throwable) {
|
|
243
|
+
Logger.print(LogLevel.ERROR, t) { "$tag updatePushPermissionRequestCount() :" }
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
fun deleteUser(payload: String, promise: Promise) {
|
|
248
|
+
try {
|
|
249
|
+
Logger.print { "$tag deleteUser() : Payload: $payload" }
|
|
250
|
+
pluginHelper.deleteUser(context, payload) { userDeletionData ->
|
|
251
|
+
promise.resolve(userDeletionDataToJson(userDeletionData).toString())
|
|
252
|
+
}
|
|
253
|
+
} catch (t: Throwable) {
|
|
254
|
+
Logger.print(LogLevel.ERROR, t) { "$tag deleteUser() :" }
|
|
255
|
+
promise.reject(t)
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
fun showNudge(payload: String) {
|
|
260
|
+
try {
|
|
261
|
+
Logger.print { "$tag showNudge() : Payload: $payload" }
|
|
262
|
+
pluginHelper.showNudge(context, payload)
|
|
263
|
+
} catch (t: Throwable) {
|
|
264
|
+
Logger.print(LogLevel.ERROR, t) { "$tag showNudge() :" }
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
companion object {
|
|
269
|
+
const val NAME = "MoEReactBridge"
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
fun getSelfHandledInApps(payload: String, promise: Promise) {
|
|
273
|
+
try {
|
|
274
|
+
Logger.print { "$tag getSelfHandledInApps() : Payload: $payload" }
|
|
275
|
+
pluginHelper.getSelfHandledInApps(context, payload) { data ->
|
|
276
|
+
promise.resolve(selfHandledInAppsToJson(data).toString())
|
|
277
|
+
}
|
|
278
|
+
} catch (t: Throwable) {
|
|
279
|
+
Logger.print(LogLevel.ERROR, t) { "$tag getSelfHandledInApps() :" }
|
|
280
|
+
promise.reject(t)
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
@@ -140,4 +140,12 @@ class MoEReactBridge(reactContext: ReactApplicationContext) : NativeMoEngageSpec
|
|
|
140
140
|
override fun registerForPush() {
|
|
141
141
|
// iOS only
|
|
142
142
|
}
|
|
143
|
+
|
|
144
|
+
override fun getSelfHandledInApps(payload: String, promise: Promise) {
|
|
145
|
+
bridgeHandler.getSelfHandledInApps(payload, promise)
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
override fun registerForProvisionalPush() {
|
|
149
|
+
//iOS only
|
|
150
|
+
}
|
|
143
151
|
}
|
|
@@ -118,6 +118,10 @@ RCT_EXPORT_METHOD(registerForPush) {
|
|
|
118
118
|
[[MoEReactNativeHandler sharedInstance] registerForPush];
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
+
RCT_EXPORT_METHOD(registerForProvisionalPush) {
|
|
122
|
+
[[MoEReactNativeHandler sharedInstance] registerForProvisionalPush];
|
|
123
|
+
}
|
|
124
|
+
|
|
121
125
|
#pragma mark Show InApp
|
|
122
126
|
|
|
123
127
|
RCT_EXPORT_METHOD(showInApp:(NSString *)payload) {
|
|
@@ -130,6 +134,10 @@ RCT_EXPORT_METHOD(getSelfHandledInApp:(NSString *)payload) {
|
|
|
130
134
|
[[MoEReactNativeHandler sharedInstance] getSelfHandledInApp:payload];
|
|
131
135
|
}
|
|
132
136
|
|
|
137
|
+
RCT_EXPORT_METHOD(getSelfHandledInApps:(NSString *)payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject) {
|
|
138
|
+
[[MoEReactNativeHandler sharedInstance] getSelfHandledInApps:payload resolve:resolve reject:reject];
|
|
139
|
+
}
|
|
140
|
+
|
|
133
141
|
RCT_EXPORT_METHOD(updateSelfHandledInAppStatus:(NSString *)payload) {
|
|
134
142
|
[[MoEReactNativeHandler sharedInstance] updateSelfHandledInAppStatus:payload];
|
|
135
143
|
}
|
|
@@ -27,10 +27,12 @@
|
|
|
27
27
|
-(void)showInApp:(NSString *)payload;
|
|
28
28
|
-(void)showNudge:(NSString *)payload ;
|
|
29
29
|
-(void)getSelfHandledInApp:(NSString *)payload;
|
|
30
|
+
-(void)getSelfHandledInApps:(NSString *)payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject;
|
|
30
31
|
-(void)updateSelfHandledInAppStatus:(NSString *)payload;
|
|
31
32
|
-(void)setAppContext:(NSString *)payload;
|
|
32
33
|
-(void)resetAppContext:(NSString *)payload;
|
|
33
34
|
-(void)logout:(NSString *)payload;
|
|
34
35
|
-(void)optOutDataTracking:(NSString *)payload;
|
|
35
36
|
-(void)updateSdkState:(NSString *)payload;
|
|
37
|
+
-(void)registerForProvisionalPush;
|
|
36
38
|
@end
|
|
@@ -66,6 +66,14 @@
|
|
|
66
66
|
[[MoEngagePluginBridge sharedInstance] registerForPush];
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
-(void)registerForProvisionalPush {
|
|
70
|
+
if (@available(iOS 12, *)) {
|
|
71
|
+
[[MoEngagePluginBridge sharedInstance] registerForProvisionalPush];
|
|
72
|
+
} else {
|
|
73
|
+
NSLog(@"registerForProvisionalPush is not available below iOS 12.");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
69
77
|
#pragma mark Show InApp
|
|
70
78
|
-(void)showInApp:(NSString *)payload {
|
|
71
79
|
NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
|
|
@@ -78,6 +86,20 @@
|
|
|
78
86
|
[[MoEngagePluginBridge sharedInstance] getSelfHandledInApp:jsonPayload];
|
|
79
87
|
}
|
|
80
88
|
|
|
89
|
+
-(void)getSelfHandledInApps:(NSString *)payload resolve:(RCTPromiseResolveBlock) resolve reject:(RCTPromiseRejectBlock)reject {
|
|
90
|
+
NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
|
|
91
|
+
[[MoEngagePluginBridge sharedInstance] getSelfHandledInApps:jsonPayload completionBlock:^(NSDictionary<NSString *,id> * _Nonnull campaignPayload) {
|
|
92
|
+
NSError *err;
|
|
93
|
+
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:campaignPayload options:0 error:&err];
|
|
94
|
+
if (jsonData) {
|
|
95
|
+
NSString *strPayload = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
|
|
96
|
+
resolve(strPayload);
|
|
97
|
+
} else {
|
|
98
|
+
reject(@"Error", @"Error in parsing Self Handled Campaign Payload", [NSError errorWithDomain:@"" code:400 userInfo:@{@"Error reason": @"Error in parsing Self Handled Campaign Payload"}]);
|
|
99
|
+
}
|
|
100
|
+
}];
|
|
101
|
+
}
|
|
102
|
+
|
|
81
103
|
-(void)updateSelfHandledInAppStatus:(NSString *)payload {
|
|
82
104
|
NSDictionary* jsonPayload = [MoEngageReactUtils getJSONRepresentation:payload];
|
|
83
105
|
[[MoEngagePluginBridge sharedInstance] updateSelfHandledImpression:jsonPayload];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-moengage",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "11.1.0",
|
|
4
4
|
"description": "MoEngage is a mobile marketing automation company. This react-native SDK helps you track events, trigger smart notifications and in-apps, provides a drop-in Inbox Controller for notifications.",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"files": [
|
package/src/NativeMoEngage.ts
CHANGED
|
@@ -76,6 +76,13 @@ export interface Spec extends TurboModule {
|
|
|
76
76
|
*/
|
|
77
77
|
getSelfHandledInApp: (payload: string) => void;
|
|
78
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Call this method to get the multiple eligible Self Handled Campaigns.
|
|
81
|
+
* @param payload : Stringified JSON payload
|
|
82
|
+
* @returns Stringified list of Self Handled campaigns
|
|
83
|
+
*/
|
|
84
|
+
getSelfHandledInApps: (payload: string) => Promise<string>;
|
|
85
|
+
|
|
79
86
|
/**
|
|
80
87
|
* Call this method to update the impressions of self handled inapps.
|
|
81
88
|
*
|
|
@@ -192,6 +199,12 @@ export interface Spec extends TurboModule {
|
|
|
192
199
|
/// ios specific
|
|
193
200
|
registerForPush: () => void;
|
|
194
201
|
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Registers for iOS Provisional Push.
|
|
205
|
+
*/
|
|
206
|
+
registerForProvisionalPush: () => void;
|
|
207
|
+
|
|
195
208
|
addListener: (eventType: string) => void;
|
|
196
209
|
removeListeners: (count: number) => void;
|
|
197
210
|
}
|
package/src/index.ts
CHANGED
|
@@ -56,7 +56,9 @@ import MoEPushPayload from "../src/models/MoEPushPayload";
|
|
|
56
56
|
import MoEInAppData from "../src/models/MoEInAppData";
|
|
57
57
|
import { getUserDeletionData } from "../src/moeParser/MoEngagePayloadParser";
|
|
58
58
|
import { MoEngageNudgePosition } from "../src/models/MoEngageNudgePosition";
|
|
59
|
+
import MoEAnalyticsConfig from "../src/models/MoEAnalyticsConfig";
|
|
59
60
|
import { MoESupportedAttributes } from "./models/MoESupportedAttributes";
|
|
61
|
+
import * as MoECoreHandler from "./utils/MoECoreHandler";
|
|
60
62
|
|
|
61
63
|
const PLATFORM_IOS = "ios";
|
|
62
64
|
const PLATFORM_ANDROID = "android";
|
|
@@ -160,13 +162,7 @@ var ReactMoE = {
|
|
|
160
162
|
initialize: function (appId: string, initConfig: MoEInitConfig = MoEInitConfig.defaultConfig()) {
|
|
161
163
|
moeAppId = appId;
|
|
162
164
|
MoEngageGlobalCache.updateInitConfig(initConfig);
|
|
163
|
-
let payload: string =
|
|
164
|
-
if (Platform.OS == PLATFORM_ANDROID) {
|
|
165
|
-
payload = getInitConfigJson(appId, initConfig);
|
|
166
|
-
} else if (Platform.OS == PLATFORM_IOS) {
|
|
167
|
-
payload = getAppIdJson(appId);
|
|
168
|
-
}
|
|
169
|
-
|
|
165
|
+
let payload: string = getInitConfigJson(appId, initConfig);
|
|
170
166
|
MoEngageLogger.verbose("Initializing the MoEngage Plugin");
|
|
171
167
|
MoEReactBridge.initialize(payload);
|
|
172
168
|
},
|
|
@@ -389,7 +385,7 @@ var ReactMoE = {
|
|
|
389
385
|
|
|
390
386
|
/**
|
|
391
387
|
* Call this method when you show the self handled in-app so we can update impressions.
|
|
392
|
-
* @param {MoESelfHandledCampaignData}
|
|
388
|
+
* @param {MoESelfHandledCampaignData}inAppCampaign : campaign information object
|
|
393
389
|
*/
|
|
394
390
|
selfHandledShown: function (inAppCampaign: MoESelfHandledCampaignData) {
|
|
395
391
|
if (!(inAppCampaign instanceof MoESelfHandledCampaignData)) {
|
|
@@ -402,7 +398,7 @@ var ReactMoE = {
|
|
|
402
398
|
|
|
403
399
|
/**
|
|
404
400
|
* Call this method to track when self handled in app widget(other than Primary Widget) is clicked.
|
|
405
|
-
* @param {MoESelfHandledCampaignData}
|
|
401
|
+
* @param {MoESelfHandledCampaignData}moEClickData : campaign information object
|
|
406
402
|
*/
|
|
407
403
|
selfHandledClicked: function (moEClickData: MoESelfHandledCampaignData) {
|
|
408
404
|
if (!(moEClickData instanceof MoESelfHandledCampaignData)) {
|
|
@@ -415,7 +411,7 @@ var ReactMoE = {
|
|
|
415
411
|
|
|
416
412
|
/**
|
|
417
413
|
* Call this method to track dismiss actions on the inApp.
|
|
418
|
-
* @param {MoESelfHandledCampaignData}
|
|
414
|
+
* @param {MoESelfHandledCampaignData}inAppCampaign : campaign information object
|
|
419
415
|
*/
|
|
420
416
|
selfHandledDismissed: function (inAppCampaign: MoESelfHandledCampaignData) {
|
|
421
417
|
if (!(inAppCampaign instanceof MoESelfHandledCampaignData)) {
|
|
@@ -428,7 +424,7 @@ var ReactMoE = {
|
|
|
428
424
|
|
|
429
425
|
/**
|
|
430
426
|
* Call this method to the current context for inApp module.
|
|
431
|
-
* @param
|
|
427
|
+
* @param{Array{String}}contexts : Name of all the contexts
|
|
432
428
|
*/
|
|
433
429
|
setCurrentContext: function (contexts: Array<String>) {
|
|
434
430
|
if (!MoEHelper.validateArrayOfString(contexts)) {
|
|
@@ -731,6 +727,29 @@ var ReactMoE = {
|
|
|
731
727
|
|
|
732
728
|
return new UserDeletionData(new MoEAccountMeta(moeAppId), false)
|
|
733
729
|
},
|
|
730
|
+
|
|
731
|
+
/**
|
|
732
|
+
* Call this method to get the multiple self handled campaigns.
|
|
733
|
+
* @since TODO
|
|
734
|
+
*/
|
|
735
|
+
getSelfHandledInApps: async function () {
|
|
736
|
+
MoEngageLogger.verbose("Will try to fetch multiple self handled inapps", moeAppId);
|
|
737
|
+
return await MoECoreHandler.getSelfHandledInApps(moeAppId);
|
|
738
|
+
},
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* Call this method to register for provisional push notification in iOS
|
|
742
|
+
* Note: This API is only for iOS platform and is a no-operation method for other plaforms.
|
|
743
|
+
* @since TODO
|
|
744
|
+
*/
|
|
745
|
+
registerForProvisionalPush: function () {
|
|
746
|
+
if (Platform.OS == PLATFORM_IOS) {
|
|
747
|
+
MoEngageLogger.verbose("Will call registerForProvisionalPush");
|
|
748
|
+
MoEReactBridge.registerForProvisionalPush();
|
|
749
|
+
} else {
|
|
750
|
+
MoEngageLogger.debug("This api is not supported on Android platform.");
|
|
751
|
+
}
|
|
752
|
+
},
|
|
734
753
|
};
|
|
735
754
|
|
|
736
755
|
export {
|
|
@@ -746,6 +765,7 @@ export {
|
|
|
746
765
|
MoEngageLogLevel,
|
|
747
766
|
MoEngageLogger,
|
|
748
767
|
MoEngageNudgePosition,
|
|
768
|
+
MoEAnalyticsConfig
|
|
749
769
|
};
|
|
750
770
|
export default ReactMoE;
|
|
751
771
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config class for Analytics
|
|
3
|
+
* Note: This Config is only for iOS platform and is a no-operation method for other plaforms.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export default class MoEAnalyticsConfig {
|
|
7
|
+
|
|
8
|
+
shouldTrackUserAttributeBoolAsNumber: boolean;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Create an instance of {@link MoEAnalyticsConfig}
|
|
12
|
+
*
|
|
13
|
+
* @param shouldTrackUserAttributeBoolAsNumber true to track User attribute TRUE/FALSE as 0/1
|
|
14
|
+
*/
|
|
15
|
+
constructor (shouldTrackUserAttributeBoolAsNumber: boolean) {
|
|
16
|
+
this.shouldTrackUserAttributeBoolAsNumber = shouldTrackUserAttributeBoolAsNumber;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Default Config for {@link MoEAnalyticsConfig}
|
|
21
|
+
*/
|
|
22
|
+
static defaultConfig() {
|
|
23
|
+
return new MoEAnalyticsConfig(false);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DisplayRules for Campaign
|
|
3
|
+
* @since TODO
|
|
4
|
+
*/
|
|
5
|
+
export default class MoEInAppRules {
|
|
6
|
+
/**
|
|
7
|
+
* Screenname for which InApp was configured to be shown.
|
|
8
|
+
*/
|
|
9
|
+
screenName: string | null
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* contexts for which InApp was configured to be shown.
|
|
13
|
+
*/
|
|
14
|
+
contexts: Array<string>
|
|
15
|
+
|
|
16
|
+
constructor(screenName: string, contexts: Array<string> = []) {
|
|
17
|
+
this.screenName = screenName;
|
|
18
|
+
this.contexts = contexts;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import MoEngageLogConfig from "./MoEngageLogConfig";
|
|
2
2
|
import MoEPushConfig from "./MoEPushConfig";
|
|
3
|
+
import MoEAnalyticsConfig from "./MoEAnalyticsConfig"
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Config class for MoEngage SDK
|
|
6
|
-
* Note: This Config is only for Android platform and is a no-operation method for other plaforms.
|
|
7
7
|
*/
|
|
8
8
|
export default class MoEInitConfig {
|
|
9
9
|
|
|
@@ -11,17 +11,22 @@ export default class MoEInitConfig {
|
|
|
11
11
|
|
|
12
12
|
logConfig: MoEngageLogConfig = MoEngageLogConfig.defaultConfig();
|
|
13
13
|
|
|
14
|
+
analyticsConfig = MoEAnalyticsConfig.defaultConfig();
|
|
15
|
+
|
|
14
16
|
/**
|
|
15
17
|
* Create an instance of {@link MoEInitConfig}
|
|
16
18
|
*
|
|
17
19
|
* @param pushConfig instance of {@link MoEPushConfig}
|
|
18
20
|
* @param logConfig instance of {@link MoEngageLogConfig}
|
|
21
|
+
* @param analyticsConfig instance of {@link MoEAnalyticsConfig}
|
|
19
22
|
*/
|
|
20
23
|
constructor(pushConfig: MoEPushConfig = MoEPushConfig.defaultConfig(),
|
|
21
|
-
logConfig: MoEngageLogConfig = MoEngageLogConfig.defaultConfig()
|
|
24
|
+
logConfig: MoEngageLogConfig = MoEngageLogConfig.defaultConfig(),
|
|
25
|
+
analyticsConfig: MoEAnalyticsConfig = MoEAnalyticsConfig.defaultConfig()
|
|
22
26
|
) {
|
|
23
27
|
this.pushConfig = pushConfig;
|
|
24
28
|
this.logConfig = logConfig;
|
|
29
|
+
this.analyticsConfig = analyticsConfig;
|
|
25
30
|
}
|
|
26
31
|
|
|
27
32
|
/**
|
|
@@ -30,7 +35,8 @@ export default class MoEInitConfig {
|
|
|
30
35
|
static defaultConfig() {
|
|
31
36
|
return new MoEInitConfig(
|
|
32
37
|
MoEPushConfig.defaultConfig(),
|
|
33
|
-
MoEngageLogConfig.defaultConfig()
|
|
38
|
+
MoEngageLogConfig.defaultConfig(),
|
|
39
|
+
MoEAnalyticsConfig.defaultConfig()
|
|
34
40
|
);
|
|
35
41
|
}
|
|
36
42
|
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
import MoEInAppRules from "../models/MoEInAppRules";
|
|
2
|
+
|
|
1
3
|
export default class MoESelfHandledCampaign {
|
|
2
4
|
payload: string;
|
|
3
5
|
dismissInterval: Number;
|
|
6
|
+
displayRules: MoEInAppRules
|
|
4
7
|
|
|
5
|
-
constructor(payload: string, dismissInterval: Number) {
|
|
8
|
+
constructor(payload: string, dismissInterval: Number, displayRules: MoEInAppRules) {
|
|
6
9
|
this.payload = payload;
|
|
7
10
|
this.dismissInterval = dismissInterval;
|
|
11
|
+
this.displayRules = displayRules;
|
|
8
12
|
}
|
|
9
|
-
|
|
10
13
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import MoEAccountMeta from "./MoEAccountMeta";
|
|
2
|
+
import MoESelfHandledCampaignData from "./MoESelfHandledCampaignData";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Model for Multiple SelfHandled Data
|
|
6
|
+
*/
|
|
7
|
+
export default class MoESelfHandledCampaignsData {
|
|
8
|
+
accountMeta: MoEAccountMeta;
|
|
9
|
+
campaigns: Array<MoESelfHandledCampaignData>
|
|
10
|
+
|
|
11
|
+
constructor(accountMeta: MoEAccountMeta, campaigns: Array<MoESelfHandledCampaignData>) {
|
|
12
|
+
this.accountMeta = accountMeta;
|
|
13
|
+
this.campaigns = campaigns;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -5,8 +5,11 @@ import MoEClickData from "../models/MoEClickData";
|
|
|
5
5
|
import MoEInAppCustomAction from "../models/MoEInAppCustomAction";
|
|
6
6
|
import MoEInAppData from "../models/MoEInAppData";
|
|
7
7
|
import MoEInAppNavigation from "../models/MoEInAppNavigation";
|
|
8
|
+
import MoEInAppRules from "../models/MoEInAppRules";
|
|
8
9
|
import MoESelfHandledCampaign from "../models/MoESelfHandledCampaign";
|
|
9
10
|
import MoESelfHandledCampaignData from "../models/MoESelfHandledCampaignData";
|
|
11
|
+
import MoESelfHandledCampaignsData from "../models/MoESelfHandledCampaignsData";
|
|
12
|
+
|
|
10
13
|
import {
|
|
11
14
|
ACTION_TYPE,
|
|
12
15
|
FORMATTED_CAMPAIGN_ID,
|
|
@@ -24,7 +27,12 @@ import {
|
|
|
24
27
|
MOE_PAYLOAD,
|
|
25
28
|
MOE_PLATFORM,
|
|
26
29
|
MOE_SELF_HANDLED,
|
|
27
|
-
MOE_NAVIGATION_VALUE
|
|
30
|
+
MOE_NAVIGATION_VALUE,
|
|
31
|
+
MOE_INAPP_DISPLAY_RULES,
|
|
32
|
+
MOE_INAPP_SCREEN_NAME,
|
|
33
|
+
MOE_INAPP_CONTEXTS,
|
|
34
|
+
MOE_DATA,
|
|
35
|
+
ACCOUNT_META
|
|
28
36
|
} from "../utils/MoEConstants";
|
|
29
37
|
import { isValidObject } from "../utils/MoEHelper";
|
|
30
38
|
import { getMoEAccountMeta } from "./MoEngagePayloadParser";
|
|
@@ -64,7 +72,19 @@ function getMoESelfHandledCampaign(json: { [k: string]: any }) {
|
|
|
64
72
|
var selfHandled = json[MOE_SELF_HANDLED];
|
|
65
73
|
var payload = selfHandled[MOE_PAYLOAD];
|
|
66
74
|
var dismissInterval = selfHandled[MOE_DISMISSINTERVAL];
|
|
67
|
-
|
|
75
|
+
let displayRulesPayload = selfHandled[MOE_INAPP_DISPLAY_RULES];
|
|
76
|
+
let displayRules = getMoEInAppRules(displayRulesPayload);
|
|
77
|
+
|
|
78
|
+
return new MoESelfHandledCampaign(payload, dismissInterval, displayRules);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function getMoEInAppRules(json: { [k: string]: any }) {
|
|
82
|
+
var screenName = null;
|
|
83
|
+
if (json[MOE_INAPP_SCREEN_NAME] != undefined) {
|
|
84
|
+
screenName = json[MOE_INAPP_SCREEN_NAME];
|
|
85
|
+
}
|
|
86
|
+
var contexts = json[MOE_INAPP_CONTEXTS];
|
|
87
|
+
return new MoEInAppRules(screenName, contexts);
|
|
68
88
|
}
|
|
69
89
|
|
|
70
90
|
function getMoEInAppCustomAction(json: { [k: string]: any }) {
|
|
@@ -203,7 +223,26 @@ export function getNavigationObj(json: { [k: string]: any }, accountMetaPayload:
|
|
|
203
223
|
var accountMeta = getMoEAccountMeta(accountMetaPayload);
|
|
204
224
|
var action = getMoEInAppNavigation(json);
|
|
205
225
|
return new MoEClickData(accountMeta, platform, campaignData, action);
|
|
206
|
-
|
|
207
226
|
}
|
|
208
227
|
else return undefined
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export function getMoESelfHandledCampaignsDataObj(payload: string) {
|
|
231
|
+
const jsonPayload = JSON.parse(payload);
|
|
232
|
+
const accountMeta = getMoEAccountMeta(jsonPayload[ACCOUNT_META]);
|
|
233
|
+
const selfHandledCampaigns: Array<MoESelfHandledCampaignData> = [];
|
|
234
|
+
|
|
235
|
+
for (let i = 0; i < jsonPayload.campaigns.length; i++) {
|
|
236
|
+
const campaignJson = jsonPayload.campaigns[i];
|
|
237
|
+
const campaignPayload = campaignJson[MOE_DATA];
|
|
238
|
+
|
|
239
|
+
if (isSelfHandledCampaignValid(campaignPayload)) {
|
|
240
|
+
const campaign = getMoESelfHandledCampaign(campaignPayload);
|
|
241
|
+
var platform = campaignPayload[MOE_PLATFORM];
|
|
242
|
+
const campaignData = getMoECampaignData(campaignPayload);
|
|
243
|
+
const campaignInfo = new MoESelfHandledCampaignData(accountMeta, platform, campaign, campaignData);
|
|
244
|
+
selfHandledCampaigns.push(campaignInfo);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return new MoESelfHandledCampaignsData(accountMeta, selfHandledCampaigns);
|
|
209
248
|
}
|
|
@@ -26,6 +26,12 @@ export const MOE_KEY_VALUE_PAIR = 'kvPair'
|
|
|
26
26
|
//IN APP SELF HANDLED
|
|
27
27
|
export const MOE_DISMISSINTERVAL = 'dismissInterval'
|
|
28
28
|
export const MOE_IS_CANCELLABLE = 'isCancellable'
|
|
29
|
+
export const MOE_CAMPAIGNS = 'campaigns'
|
|
30
|
+
|
|
31
|
+
// INAPP DISPLAY RULES
|
|
32
|
+
export const MOE_INAPP_DISPLAY_RULES = 'displayRules'
|
|
33
|
+
export const MOE_INAPP_SCREEN_NAME = 'screenName'
|
|
34
|
+
export const MOE_INAPP_CONTEXTS = 'contexts'
|
|
29
35
|
|
|
30
36
|
//IN APP NAVIGATION
|
|
31
37
|
export const MOE_NAVIGATION_TYPE = 'navigationType'
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { getMoESelfHandledCampaignsDataObj } from "../../src/moeParser/MoEInAppParser";
|
|
2
|
+
import MoEngageLogger from "../logger/MoEngageLogger";
|
|
3
|
+
import MoEReactBridge from "../NativeMoEngage";
|
|
4
|
+
import { getAppIdJson } from "../utils/MoEJsonBuilder";
|
|
5
|
+
|
|
6
|
+
export const getSelfHandledInApps = async (appId: string) => {
|
|
7
|
+
try {
|
|
8
|
+
const selfHandledCampaignsData = await MoEReactBridge.getSelfHandledInApps(getAppIdJson(appId));
|
|
9
|
+
const retVal = getMoESelfHandledCampaignsDataObj(selfHandledCampaignsData);
|
|
10
|
+
return retVal;
|
|
11
|
+
} catch (error) {
|
|
12
|
+
MoEngageLogger.error("getSelfHandledInApps: error parsing $error", error);
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -3,13 +3,14 @@ import MoEInAppData from "../models/MoEInAppData";
|
|
|
3
3
|
import MoEProperties from "../models/MoEProperties";
|
|
4
4
|
import MoESelfHandledCampaignData from "../models/MoESelfHandledCampaignData";
|
|
5
5
|
import { MOE_LOCATION } from "./MoEConstants";
|
|
6
|
-
import { MoEPropertiesToJson} from "./MoEObjectToJson";
|
|
7
|
-
import {MoEngagePermissionType} from "../models/MoEngagePermissionType";
|
|
6
|
+
import { MoEPropertiesToJson } from "./MoEObjectToJson";
|
|
7
|
+
import { MoEngagePermissionType } from "../models/MoEngagePermissionType";
|
|
8
8
|
import MoEInitConfig from "../models/MoEInitConfig";
|
|
9
9
|
import MoEngageLogger from "../logger/MoEngageLogger";
|
|
10
|
-
import {MoEngageNudgePosition} from "../models/MoEngageNudgePosition";
|
|
10
|
+
import { MoEngageNudgePosition } from "../models/MoEngageNudgePosition";
|
|
11
11
|
import { MoESupportedAttributes } from "../models/MoESupportedAttributes";
|
|
12
|
-
|
|
12
|
+
import MoESelfHandledCampaign from "../models/MoESelfHandledCampaign";
|
|
13
|
+
import MoEInAppRules from "../models/MoEInAppRules";
|
|
13
14
|
|
|
14
15
|
export function getInAppCampaignJson(moEInAppData: MoEInAppData, type: string, appId: String) {
|
|
15
16
|
var json: { [k: string]: any } = {
|
|
@@ -37,7 +38,7 @@ export function getSelfHandledJson(moESelfHandledCampaignData: MoESelfHandledCam
|
|
|
37
38
|
campaignName: moESelfHandledCampaignData.campaignData.campaignName,
|
|
38
39
|
campaignId: moESelfHandledCampaignData.campaignData.campaignId,
|
|
39
40
|
campaignContext: moESelfHandledCampaignData.campaignData.context.attributes,
|
|
40
|
-
selfHandled: moESelfHandledCampaignData.campaign,
|
|
41
|
+
selfHandled: getSelfHandledCampaignJson(moESelfHandledCampaignData.campaign),
|
|
41
42
|
platform: moESelfHandledCampaignData.platform
|
|
42
43
|
}
|
|
43
44
|
}
|
|
@@ -81,14 +82,14 @@ export function getMoEPushCampaignJson(pushPayload: object, service: string, app
|
|
|
81
82
|
},
|
|
82
83
|
data: {
|
|
83
84
|
payload: pushPayload,
|
|
84
|
-
service:service
|
|
85
|
+
service: service
|
|
85
86
|
}
|
|
86
87
|
}
|
|
87
88
|
return JSON.stringify(json);
|
|
88
89
|
}
|
|
89
90
|
|
|
90
91
|
export function getMoEPushTokenJson(pushToken: string, pushService: string, platform: string, appId: String) {
|
|
91
|
-
var json: { [k: string]: any} = {
|
|
92
|
+
var json: { [k: string]: any } = {
|
|
92
93
|
accountMeta: {
|
|
93
94
|
appId: appId
|
|
94
95
|
},
|
|
@@ -227,11 +228,11 @@ export function getOptOutTrackingJson(type: string, state: boolean, appId: strin
|
|
|
227
228
|
}
|
|
228
229
|
|
|
229
230
|
export function getPermissionResponseJson(isGranted: boolean, permissionType: MoEngagePermissionType) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
231
|
+
let json: { [k: string]: any } = {
|
|
232
|
+
isGranted: isGranted,
|
|
233
|
+
type: permissionType.toLowerCase()
|
|
234
|
+
}
|
|
235
|
+
return JSON.stringify(json);
|
|
235
236
|
}
|
|
236
237
|
|
|
237
238
|
export function getPushPermissionRequestCountJson(count: number, appId: String) {
|
|
@@ -266,6 +267,9 @@ export function getInitConfigJson(appId: String, initConfig: MoEInitConfig) {
|
|
|
266
267
|
initConfig: {
|
|
267
268
|
pushConfig: {
|
|
268
269
|
shouldDeliverCallbackOnForegroundClick: initConfig.pushConfig.shouldDeliverCallbackOnForegroundClick
|
|
270
|
+
},
|
|
271
|
+
analyticsConfig: {
|
|
272
|
+
shouldTrackUserAttributeBooleanAsNumber: initConfig.analyticsConfig.shouldTrackUserAttributeBoolAsNumber
|
|
269
273
|
}
|
|
270
274
|
}
|
|
271
275
|
}
|
|
@@ -283,3 +287,22 @@ export function getNudgeDisplayJson(nudgePosition: MoEngageNudgePosition, appId:
|
|
|
283
287
|
}
|
|
284
288
|
return JSON.stringify(json);
|
|
285
289
|
}
|
|
290
|
+
|
|
291
|
+
export function getSelfHandledCampaignJson(moESelfHandledCampaign: MoESelfHandledCampaign) {
|
|
292
|
+
var json: { [k: string]: any } = {
|
|
293
|
+
dismissInterval: moESelfHandledCampaign.dismissInterval,
|
|
294
|
+
displayRules: moESelfHandledCampaign.displayRules,
|
|
295
|
+
payload: moESelfHandledCampaign.payload
|
|
296
|
+
}
|
|
297
|
+
MoEngageLogger.verbose("getSelfHandledCampaignJson(): payload json: ", json);
|
|
298
|
+
return json;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
export function getDisplayRulesJson(displayRules: MoEInAppRules) {
|
|
302
|
+
var json: { [k: string]: any } = {
|
|
303
|
+
contexts: displayRules.contexts,
|
|
304
|
+
screenName: displayRules.screenName
|
|
305
|
+
}
|
|
306
|
+
MoEngageLogger.verbose("getDisplayRulesJson(): payload json: ", json);
|
|
307
|
+
return json;
|
|
308
|
+
}
|