Skip to content

Commit a0a6d73

Browse files
authored
Merge pull request #8 from lytics/intermediary/interface/6-bridge-improvements
Native Bridge Improvements
2 parents bf58295 + 33183a1 commit a0a6d73

File tree

3 files changed

+72
-44
lines changed

3 files changed

+72
-44
lines changed

android/src/main/java/com/lytics/react_native/LyticsModule.kt

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.lytics.react_native
22

33
import android.content.Context
4+
import com.facebook.react.bridge.LifecycleEventListener
45
import com.facebook.react.bridge.Promise
56
import com.facebook.react.bridge.ReactApplicationContext
67
import com.facebook.react.bridge.ReactContextBaseJavaModule
@@ -14,26 +15,40 @@ import com.lytics.android.logging.LogLevel
1415
import com.lytics.android.Lytics
1516
import com.lytics.android.LyticsConfiguration
1617
import java.util.concurrent.TimeUnit
18+
import kotlinx.coroutines.cancel
1719
import kotlinx.coroutines.CoroutineScope
1820
import kotlinx.coroutines.Dispatchers
1921
import kotlinx.coroutines.SupervisorJob
2022
import kotlinx.coroutines.launch
2123

2224
class LyticsModule(reactContext: ReactApplicationContext) :
23-
ReactContextBaseJavaModule(reactContext) {
25+
ReactContextBaseJavaModule(reactContext), LifecycleEventListener {
2426

2527
private val context: Context
2628

2729
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
2830

2931
init {
3032
context = reactContext.applicationContext
33+
reactContext.addLifecycleEventListener(this)
3134
}
3235

3336
override fun getName(): String {
3437
return NAME
3538
}
3639

40+
override fun onHostResume() {
41+
// noop - overridden to implement `LifecycleEventListener`
42+
}
43+
44+
override fun onHostPause() {
45+
// noop - overridden to implement `LifecycleEventListener`
46+
}
47+
48+
override fun onHostDestroy() {
49+
scope.cancel()
50+
}
51+
3752
// Properties
3853

3954
@ReactMethod
@@ -191,12 +206,16 @@ class LyticsModule(reactContext: ReactApplicationContext) :
191206
// Personalization
192207

193208
@ReactMethod
194-
fun getProfile(name: String? = null, value: String? = null, promise: Promise) {
209+
fun getProfile(
210+
identifierName: String? = null,
211+
identifierValue: String? = null,
212+
promise: Promise
213+
) {
195214
var identifier: EntityIdentifier? = null
196-
if (name != null && value != null) {
215+
if (identifierName != null && identifierValue != null) {
197216
identifier = EntityIdentifier(
198-
name = name,
199-
value = value
217+
name = identifierName,
218+
value = identifierValue
200219
)
201220
}
202221
scope.launch {

ios/LyticsBridge.mm

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,22 @@ @interface RCT_EXTERN_MODULE(LyticsBridge, NSObject)
1313
#pragma mark - Properties
1414

1515
RCT_EXTERN_METHOD(hasStarted:(RCTPromiseResolveBlock)resolve
16-
reject:(RCTPromiseRejectBlock)reject)
16+
rejecter:(RCTPromiseRejectBlock)reject)
1717

1818
RCT_EXTERN_METHOD(isOptedIn:(RCTPromiseResolveBlock)resolve
19-
reject:(RCTPromiseRejectBlock)reject)
19+
rejecter:(RCTPromiseRejectBlock)reject)
2020

2121
RCT_EXTERN_METHOD(isTrackingEnabled:(RCTPromiseResolveBlock)resolve
22-
reject:(RCTPromiseRejectBlock)reject)
22+
rejecter:(RCTPromiseRejectBlock)reject)
2323

2424
RCT_EXTERN_METHOD(user:(RCTPromiseResolveBlock)resolve
25-
reject:(RCTPromiseRejectBlock)reject)
25+
rejecter:(RCTPromiseRejectBlock)reject)
2626

2727
#pragma mark - Configuration
2828

2929
RCT_EXTERN_METHOD(start:(NSDictionary<NSString *,id> *) configuration
30-
resolve:(RCTPromiseResolveBlock)resolve
31-
reject:(RCTPromiseRejectBlock)reject)
30+
resolver:(RCTPromiseResolveBlock)resolve
31+
rejecter:(RCTPromiseRejectBlock)reject)
3232

3333
#pragma mark - Events
3434

@@ -60,8 +60,8 @@ @interface RCT_EXTERN_MODULE(LyticsBridge, NSObject)
6060

6161
RCT_EXTERN_METHOD(getProfile:(NSString *) identifierName
6262
identifierValue:(NSString *) identifierValue
63-
resolve:(RCTPromiseResolveBlock)resolve
64-
reject:(RCTPromiseRejectBlock)reject)
63+
resolver:(RCTPromiseResolveBlock)resolve
64+
rejecter:(RCTPromiseRejectBlock)reject)
6565

6666
#pragma mark - Tracking
6767

@@ -70,14 +70,14 @@ @interface RCT_EXTERN_MODULE(LyticsBridge, NSObject)
7070
RCT_EXTERN_METHOD(optOut)
7171

7272
RCT_EXTERN_METHOD(requestTrackingAuthorization:(RCTPromiseResolveBlock)resolve
73-
reject:(RCTPromiseRejectBlock)reject)
73+
rejecter:(RCTPromiseRejectBlock)reject)
7474

7575
RCT_EXTERN_METHOD(disableTracking)
7676

7777
#pragma mark - Utility
7878

7979
RCT_EXTERN_METHOD(identifier:(RCTPromiseResolveBlock)resolve
80-
reject:(RCTPromiseRejectBlock)reject)
80+
rejecter:(RCTPromiseRejectBlock)reject)
8181

8282
RCT_EXTERN_METHOD(dispatch)
8383

ios/LyticsBridge.swift

Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,34 @@ public final class LyticsBridge: NSObject {
2323

2424
// MARK: - Properties
2525

26-
@objc(hasStarted:reject:)
27-
public func hasStarted(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
26+
@objc(hasStarted:rejecter:)
27+
public func hasStarted(
28+
resolver resolve: RCTPromiseResolveBlock,
29+
rejecter reject: RCTPromiseRejectBlock
30+
) {
2831
resolve(lytics.hasStarted)
2932
}
3033

31-
@objc(isOptedIn:reject:)
32-
public func isOptedIn(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
34+
@objc(isOptedIn:rejecter:)
35+
public func isOptedIn(
36+
resolver resolve: RCTPromiseResolveBlock,
37+
rejecter reject: RCTPromiseRejectBlock
38+
) {
3339
resolve(lytics.isOptedIn)
3440
}
3541

36-
@objc(isTrackingEnabled:reject:)
37-
public func isTrackingEnabled(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
42+
@objc(isTrackingEnabled:rejecter:)
43+
public func isTrackingEnabled(
44+
resolver resolve: RCTPromiseResolveBlock,
45+
rejecter reject: RCTPromiseRejectBlock
46+
) {
3847
resolve(lytics.isIDFAEnabled)
3948
}
4049

41-
@objc(user:reject:)
50+
@objc(user:rejecter:)
4251
public func user(
43-
resolve: @escaping RCTPromiseResolveBlock,
44-
reject: @escaping RCTPromiseRejectBlock
52+
resolver resolve: @escaping RCTPromiseResolveBlock,
53+
rejecter reject: @escaping RCTPromiseRejectBlock
4554
) {
4655
Task {
4756
let user = await lytics.user
@@ -56,11 +65,11 @@ public final class LyticsBridge: NSObject {
5665

5766
// MARK: - Configuration
5867

59-
@objc(start:resolve:reject:)
68+
@objc(start:resolver:rejecter:)
6069
public func start(
6170
configuration: [String: Any],
62-
resolve: @escaping RCTPromiseResolveBlock,
63-
reject: @escaping RCTPromiseRejectBlock
71+
resolver resolve: @escaping RCTPromiseResolveBlock,
72+
rejecter reject: @escaping RCTPromiseRejectBlock
6473
) {
6574
guard let apiToken = configuration["apiToken"] as? String else {
6675
reject("invalid_api_token", "Missing or Invalid API Token", nil)
@@ -146,8 +155,8 @@ public final class LyticsBridge: NSObject {
146155

147156
@objc(track:name:identifiers:properties:)
148157
public func track(
149-
stream: String? = nil,
150-
name: String? = nil,
158+
stream: String?,
159+
name: String?,
151160
identifiers: [String: Any],
152161
properties: [String: Any]
153162
) {
@@ -160,8 +169,8 @@ public final class LyticsBridge: NSObject {
160169

161170
@objc(identify:name:identifiers:attributes:shouldSend:)
162171
public func identify(
163-
stream: String? = nil,
164-
name: String? = nil,
172+
stream: String?,
173+
name: String?,
165174
identifiers: [String: Any],
166175
attributes: [String: Any],
167176
shouldSend: Bool = true
@@ -176,8 +185,8 @@ public final class LyticsBridge: NSObject {
176185

177186
@objc(consent:name:identifiers:attributes:consent:shouldSend:)
178187
public func consent(
179-
stream: String? = nil,
180-
name: String? = nil,
188+
stream: String?,
189+
name: String?,
181190
identifiers: [String: Any],
182191
attributes: [String: Any],
183192
consent: [String: Any],
@@ -193,8 +202,8 @@ public final class LyticsBridge: NSObject {
193202

194203
@objc(screen:name:identifiers:properties:)
195204
public func screen(
196-
stream: String? = nil,
197-
name: String? = nil,
205+
stream: String?,
206+
name: String?,
198207
identifiers: [String: Any],
199208
properties: [String: Any]
200209
) {
@@ -207,12 +216,12 @@ public final class LyticsBridge: NSObject {
207216

208217
// MARK: - Personalization
209218

210-
@objc(getProfile:identifierValue:resolve:reject:)
219+
@objc(getProfile:identifierValue:resolver:rejecter:)
211220
public func getProfile(
212221
identifierName: String?,
213222
identifierValue: String?,
214-
resolve: @escaping RCTPromiseResolveBlock,
215-
reject: @escaping RCTPromiseRejectBlock
223+
resolver resolve: @escaping RCTPromiseResolveBlock,
224+
rejecter reject: @escaping RCTPromiseRejectBlock
216225
) {
217226
Task {
218227
do {
@@ -243,10 +252,10 @@ public final class LyticsBridge: NSObject {
243252
lytics.optOut()
244253
}
245254

246-
@objc(requestTrackingAuthorization:reject:)
255+
@objc(requestTrackingAuthorization:rejecter:)
247256
public func requestTrackingAuthorization(
248-
resolve: @escaping RCTPromiseResolveBlock,
249-
reject: @escaping RCTPromiseRejectBlock
257+
resolver resolve: @escaping RCTPromiseResolveBlock,
258+
rejecter reject: @escaping RCTPromiseRejectBlock
250259
) {
251260
Task {
252261
resolve(await lytics.requestTrackingAuthorization())
@@ -260,10 +269,10 @@ public final class LyticsBridge: NSObject {
260269

261270
// MARK: - Utility
262271

263-
@objc(identifier:reject:)
272+
@objc(identifier:rejecter:)
264273
public func identifier(
265-
resolve: @escaping RCTPromiseResolveBlock,
266-
reject: @escaping RCTPromiseRejectBlock
274+
resolver resolve: @escaping RCTPromiseResolveBlock,
275+
rejecter reject: @escaping RCTPromiseRejectBlock
267276
) {
268277
resolve(lytics.identifier())
269278
}

0 commit comments

Comments
 (0)