scatesdk-react 0.2.1 → 0.3.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/README.md +27 -9
- package/android/src/main/java/com/scatesdkreact/ScatesdkReactModule.java +52 -36
- package/ios/ScatesdkReact-Bridging-Header.h +1 -0
- package/ios/ScatesdkReact.mm +11 -2
- package/ios/ScatesdkReact.swift +54 -9
- package/lib/commonjs/index.js +42 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +42 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +13 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/scatesdk-react.podspec +1 -1
- package/src/index.tsx +58 -6
package/README.md
CHANGED
|
@@ -11,15 +11,13 @@ npm install scatesdk-react
|
|
|
11
11
|
```js
|
|
12
12
|
import { ScateSDK } from 'scatesdk-react';
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
// ...
|
|
16
|
-
// It's better to initialize the SDK after Adjust SDK
|
|
15
|
+
// It's better to initialize the SDK after Adjust SDK
|
|
17
16
|
ScateSDK.Init('your app id');
|
|
18
17
|
|
|
19
18
|
// make sure to set adid from Adjust SDK
|
|
20
|
-
let adid = Adjust.adid()
|
|
19
|
+
let adid = Adjust.adid();
|
|
21
20
|
ScateSDK.SetAdid(adid);
|
|
22
|
-
|
|
23
21
|
```
|
|
24
22
|
|
|
25
23
|
### Send Events
|
|
@@ -27,15 +25,35 @@ ScateSDK.SetAdid(adid);
|
|
|
27
25
|
To send events, you can use the following code:
|
|
28
26
|
|
|
29
27
|
```js
|
|
30
|
-
|
|
31
|
-
ScateSDK.Event("button_clicked");
|
|
32
|
-
|
|
28
|
+
ScateSDK.Event('button_clicked');
|
|
33
29
|
```
|
|
34
30
|
|
|
35
31
|
### Send Events with Additional Data
|
|
36
32
|
|
|
37
33
|
```js
|
|
34
|
+
ScateSDK.EventWithValue('button_clicked', 'subscribe_btn');
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Get Remote Config for Key
|
|
38
|
+
|
|
39
|
+
```js
|
|
40
|
+
ScateSDK.GetRemoteConfig('key', 'defaultValue');
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Add Listener
|
|
44
|
+
|
|
45
|
+
```js
|
|
46
|
+
ScateSDK.AddListener(ScateEvents.REMOTE_CONFIG_READY, (event) => {});
|
|
47
|
+
```
|
|
38
48
|
|
|
39
|
-
|
|
49
|
+
### Remove Listener
|
|
40
50
|
|
|
41
|
-
```
|
|
51
|
+
```js
|
|
52
|
+
ScateSDK.RemoveListener(ScateEvents.REMOTE_CONFIG_READY, 1); //Listener id
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Clean Listeners
|
|
56
|
+
|
|
57
|
+
```js
|
|
58
|
+
ScateSDK.CleanListeners(ScateEvents.REMOTE_CONFIG_READY);
|
|
59
|
+
```
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
package com.scatesdkreact;
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
import androidx.annotation.NonNull;
|
|
5
4
|
|
|
6
5
|
import com.facebook.react.bridge.Promise;
|
|
@@ -11,41 +10,58 @@ import com.facebook.react.module.annotations.ReactModule;
|
|
|
11
10
|
|
|
12
11
|
@ReactModule(name = ScatesdkReactModule.NAME)
|
|
13
12
|
public class ScatesdkReactModule extends ReactContextBaseJavaModule {
|
|
14
|
-
public static final String NAME = "ScateSDK";
|
|
15
|
-
|
|
16
|
-
public ScatesdkReactModule(ReactApplicationContext reactContext) {
|
|
17
|
-
super(reactContext);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
@Override
|
|
21
|
-
@NonNull
|
|
22
|
-
public String getName() {
|
|
23
|
-
return NAME;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
@ReactMethod
|
|
27
|
-
public void Init(String appID, Promise promise){
|
|
28
|
-
// not implemented yet
|
|
29
|
-
promise.resolve("");
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
@ReactMethod
|
|
33
|
-
public void SetAdid(String adid, Promise promise){
|
|
34
|
-
// not implemented yet
|
|
35
|
-
promise.resolve("");
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
@ReactMethod
|
|
39
|
-
public void Event(String name, Promise promise){
|
|
40
|
-
// not implemented yet
|
|
41
|
-
promise.resolve("");
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@ReactMethod
|
|
45
|
-
public void EventWithValue(String name, String customValue, Promise promise){
|
|
46
|
-
// not implemented yet
|
|
47
|
-
promise.resolve("");
|
|
48
|
-
}
|
|
49
13
|
|
|
14
|
+
public static final String NAME = "ScateSDK";
|
|
15
|
+
|
|
16
|
+
public ScatesdkReactModule(ReactApplicationContext reactContext) {
|
|
17
|
+
super(reactContext);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@Override
|
|
21
|
+
@NonNull
|
|
22
|
+
public String getName() {
|
|
23
|
+
return NAME;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@ReactMethod
|
|
27
|
+
public void Init(String appID, Promise promise) {
|
|
28
|
+
// not implemented yet
|
|
29
|
+
promise.resolve("");
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@ReactMethod
|
|
33
|
+
public void SetAdid(String adid, Promise promise) {
|
|
34
|
+
// not implemented yet
|
|
35
|
+
promise.resolve("");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@ReactMethod
|
|
39
|
+
public void Event(String name, Promise promise) {
|
|
40
|
+
// not implemented yet
|
|
41
|
+
promise.resolve("");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@ReactMethod
|
|
45
|
+
public void EventWithValue(String name, String customValue, Promise promise) {
|
|
46
|
+
// not implemented yet
|
|
47
|
+
promise.resolve("");
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@ReactMethod
|
|
51
|
+
public void GetRemoteConfig(String key, String defaultValue, Promise promise) {
|
|
52
|
+
// not implemented yet
|
|
53
|
+
promise.resolve("");
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@ReactMethod
|
|
57
|
+
public void AddListener(String name, Promise promise) {
|
|
58
|
+
// not implemented yet
|
|
59
|
+
promise.resolve("");
|
|
60
|
+
}
|
|
50
61
|
|
|
62
|
+
@ReactMethod
|
|
63
|
+
public void RemoveListener(String name, Promise promise) {
|
|
64
|
+
// not implemented yet
|
|
65
|
+
promise.resolve("");
|
|
66
|
+
}
|
|
51
67
|
}
|
package/ios/ScatesdkReact.mm
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#import <React/RCTBridgeModule.h>
|
|
2
|
+
#import "React/RCTEventEmitter.h"
|
|
2
3
|
|
|
3
|
-
@interface RCT_EXTERN_MODULE(ScateSDK,
|
|
4
|
+
@interface RCT_EXTERN_MODULE(ScateSDK, RCTEventEmitter)
|
|
4
5
|
|
|
5
6
|
RCT_EXTERN_METHOD(Init:(NSString *)appID
|
|
6
7
|
withResolver:(RCTPromiseResolveBlock)resolve
|
|
@@ -18,7 +19,15 @@ RCT_EXTERN_METHOD(EventWithValue:(NSString *)name
|
|
|
18
19
|
withCustomValue:(NSString* )customValue
|
|
19
20
|
withResolver:(RCTPromiseResolveBlock)resolve
|
|
20
21
|
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
21
|
-
|
|
22
|
+
|
|
23
|
+
RCT_EXTERN_METHOD(GetRemoteConfig:(NSString *)key
|
|
24
|
+
withDefaultValue:(NSString *)defaultValue
|
|
25
|
+
withResolver:(RCTPromiseResolveBlock)resolve
|
|
26
|
+
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
27
|
+
|
|
28
|
+
RCT_EXTERN_METHOD(AddListener:(NSString*) name)
|
|
29
|
+
RCT_EXTERN_METHOD(RemoveListener:(NSString*) name)
|
|
30
|
+
|
|
22
31
|
+ (BOOL)requiresMainQueueSetup
|
|
23
32
|
{
|
|
24
33
|
return NO;
|
package/ios/ScatesdkReact.swift
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import ScateSDK
|
|
2
2
|
|
|
3
3
|
@objc(ScateSDK)
|
|
4
|
-
class ScateSDK:
|
|
4
|
+
class ScateSDK: RCTEventEmitter {
|
|
5
|
+
override func supportedEvents() -> [String]! {
|
|
6
|
+
return [ScateCoreSDK.RemoteConfigsReady.rawValue]
|
|
7
|
+
}
|
|
5
8
|
|
|
6
9
|
@objc(Init:withResolver:withRejecter:)
|
|
7
10
|
func Init(appID: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
|
|
@@ -14,17 +17,59 @@ class ScateSDK: NSObject {
|
|
|
14
17
|
ScateCoreSDK.SetAdid(adid: adid)
|
|
15
18
|
resolve("")
|
|
16
19
|
}
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
|
|
21
|
+
@objc(Event:withResolver:withRejecter:)
|
|
19
22
|
func Event(name: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
ScateCoreSDK.Event(name: name)
|
|
24
|
+
resolve("")
|
|
25
|
+
}
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
@objc(EventWithValue:withCustomValue:withResolver:withRejecter:)
|
|
25
28
|
func EventWithValue(name: String, value: String, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
|
|
26
29
|
ScateCoreSDK.Event(name: name, customValue: value)
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
resolve("")
|
|
31
|
+
}
|
|
29
32
|
|
|
33
|
+
@objc(GetRemoteConfig:withDefaultValue:withResolver:withRejecter:)
|
|
34
|
+
func GetRemoteConfig(key: String, defaultValue: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
35
|
+
let config = ScateCoreSDK.GetRemoteConfig(key: key, defaultValue: defaultValue)
|
|
36
|
+
resolve(config)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@objc
|
|
40
|
+
func AddListener(_ name: String) {
|
|
41
|
+
NotificationCenter.default.addObserver(self,
|
|
42
|
+
selector: #selector(handleListener),
|
|
43
|
+
name: Notification.Name(name),
|
|
44
|
+
object: nil)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@objc
|
|
48
|
+
func RemoveListener(_ name: String) {
|
|
49
|
+
NotificationCenter.default.removeObserver(self,
|
|
50
|
+
name: Notification.Name(name),
|
|
51
|
+
object: nil)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@objc
|
|
55
|
+
func handleListener(notification: Notification) {
|
|
56
|
+
var userInfoJSON: [String: Any] = [:]
|
|
57
|
+
|
|
58
|
+
if let userInfo = notification.userInfo {
|
|
59
|
+
do {
|
|
60
|
+
let data = try JSONSerialization.data(withJSONObject: userInfo, options: [])
|
|
61
|
+
if let jsonString = String(data: data, encoding: .utf8) {
|
|
62
|
+
}
|
|
63
|
+
} catch {
|
|
64
|
+
print("Error converting userInfo to JSON: \(error.localizedDescription)")
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
let eventName = notification.name.rawValue
|
|
69
|
+
|
|
70
|
+
userInfoJSON["data"] = notification.userInfo
|
|
71
|
+
userInfoJSON["event"] = eventName
|
|
72
|
+
|
|
73
|
+
sendEvent(withName: eventName, body: userInfoJSON)
|
|
74
|
+
}
|
|
30
75
|
}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.ScateSDK = void 0;
|
|
6
|
+
exports.default = exports.ScateSDK = exports.ScateEvents = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
const LINKING_ERROR = `The package 'scatesdk-react' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
|
9
9
|
ios: "- You have run 'pod install'\n",
|
|
@@ -14,7 +14,13 @@ const _ScateSDK = _reactNative.NativeModules.ScateSDK ? _reactNative.NativeModul
|
|
|
14
14
|
throw new Error(LINKING_ERROR);
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
|
+
const eventEmitter = new _reactNative.NativeEventEmitter(_ScateSDK);
|
|
18
|
+
let ScateEvents = exports.ScateEvents = /*#__PURE__*/function (ScateEvents) {
|
|
19
|
+
ScateEvents["REMOTE_CONFIG_READY"] = "Scate_RemoteConfigsReady";
|
|
20
|
+
return ScateEvents;
|
|
21
|
+
}({});
|
|
17
22
|
class ScateSDK {
|
|
23
|
+
static listeners = new Map();
|
|
18
24
|
static Init(appID) {
|
|
19
25
|
return _ScateSDK.Init(appID);
|
|
20
26
|
}
|
|
@@ -27,6 +33,41 @@ class ScateSDK {
|
|
|
27
33
|
static EventWithValue(name, customValue) {
|
|
28
34
|
return _ScateSDK.EventWithValue(name, customValue);
|
|
29
35
|
}
|
|
36
|
+
static GetRemoteConfig(key, defaultValue) {
|
|
37
|
+
return _ScateSDK.GetRemoteConfig(key, defaultValue);
|
|
38
|
+
}
|
|
39
|
+
static HandleEvent = (name, event) => {
|
|
40
|
+
const listeners = this.listeners.get(name);
|
|
41
|
+
if (listeners) {
|
|
42
|
+
listeners.forEach(listener => {
|
|
43
|
+
listener(event); // Pass event data to listeners
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
static AddListener(name, listener) {
|
|
48
|
+
const listenerId = Date.now().toString(); // Create unique listener ID based on current timestamp
|
|
49
|
+
if (!this.listeners.has(name)) {
|
|
50
|
+
this.listeners.set(name, new Map());
|
|
51
|
+
_ScateSDK.AddListener(name); // Register native listener
|
|
52
|
+
eventEmitter.addListener(name, event => this.HandleEvent(name, event));
|
|
53
|
+
}
|
|
54
|
+
this.listeners.get(name)?.set(listenerId, listener); // Store listener with ID
|
|
55
|
+
return listenerId; // Return the listener ID
|
|
56
|
+
}
|
|
57
|
+
static RemoveListener(name, listenerId) {
|
|
58
|
+
const listeners = this.listeners.get(name);
|
|
59
|
+
if (listeners && listeners.has(listenerId)) {
|
|
60
|
+
listeners.delete(listenerId); // Remove listener from map
|
|
61
|
+
if (listeners.size === 0) {
|
|
62
|
+
this.listeners.delete(name); // Remove entire map entry if no listeners remain
|
|
63
|
+
_ScateSDK.RemoveListener(name); // Unregister native listener
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
static ClearListeners(name) {
|
|
68
|
+
this.listeners.delete(name); // Remove all listeners for a given event
|
|
69
|
+
_ScateSDK.RemoveListener(name); // Unregister native listener
|
|
70
|
+
}
|
|
30
71
|
}
|
|
31
72
|
exports.ScateSDK = ScateSDK;
|
|
32
73
|
var _default = exports.default = ScateSDK;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","_ScateSDK","NativeModules","ScateSDK","Proxy","get","Error","Init","appID","SetAdid","adid","Event","name","EventWithValue","customValue","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","_ScateSDK","NativeModules","ScateSDK","Proxy","get","Error","eventEmitter","NativeEventEmitter","ScateEvents","exports","listeners","Map","Init","appID","SetAdid","adid","Event","name","EventWithValue","customValue","GetRemoteConfig","key","defaultValue","HandleEvent","event","forEach","listener","AddListener","listenerId","Date","now","toString","has","set","addListener","RemoveListener","delete","size","ClearListeners","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NativeModules, Platform } from 'react-native';
|
|
1
|
+
import { NativeEventEmitter, NativeModules, Platform } from 'react-native';
|
|
2
2
|
const LINKING_ERROR = `The package 'scatesdk-react' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
|
|
3
3
|
ios: "- You have run 'pod install'\n",
|
|
4
4
|
default: ''
|
|
@@ -8,7 +8,13 @@ const _ScateSDK = NativeModules.ScateSDK ? NativeModules.ScateSDK : new Proxy({}
|
|
|
8
8
|
throw new Error(LINKING_ERROR);
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const eventEmitter = new NativeEventEmitter(_ScateSDK);
|
|
12
|
+
export let ScateEvents = /*#__PURE__*/function (ScateEvents) {
|
|
13
|
+
ScateEvents["REMOTE_CONFIG_READY"] = "Scate_RemoteConfigsReady";
|
|
14
|
+
return ScateEvents;
|
|
15
|
+
}({});
|
|
11
16
|
export class ScateSDK {
|
|
17
|
+
static listeners = new Map();
|
|
12
18
|
static Init(appID) {
|
|
13
19
|
return _ScateSDK.Init(appID);
|
|
14
20
|
}
|
|
@@ -21,6 +27,41 @@ export class ScateSDK {
|
|
|
21
27
|
static EventWithValue(name, customValue) {
|
|
22
28
|
return _ScateSDK.EventWithValue(name, customValue);
|
|
23
29
|
}
|
|
30
|
+
static GetRemoteConfig(key, defaultValue) {
|
|
31
|
+
return _ScateSDK.GetRemoteConfig(key, defaultValue);
|
|
32
|
+
}
|
|
33
|
+
static HandleEvent = (name, event) => {
|
|
34
|
+
const listeners = this.listeners.get(name);
|
|
35
|
+
if (listeners) {
|
|
36
|
+
listeners.forEach(listener => {
|
|
37
|
+
listener(event); // Pass event data to listeners
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
static AddListener(name, listener) {
|
|
42
|
+
const listenerId = Date.now().toString(); // Create unique listener ID based on current timestamp
|
|
43
|
+
if (!this.listeners.has(name)) {
|
|
44
|
+
this.listeners.set(name, new Map());
|
|
45
|
+
_ScateSDK.AddListener(name); // Register native listener
|
|
46
|
+
eventEmitter.addListener(name, event => this.HandleEvent(name, event));
|
|
47
|
+
}
|
|
48
|
+
this.listeners.get(name)?.set(listenerId, listener); // Store listener with ID
|
|
49
|
+
return listenerId; // Return the listener ID
|
|
50
|
+
}
|
|
51
|
+
static RemoveListener(name, listenerId) {
|
|
52
|
+
const listeners = this.listeners.get(name);
|
|
53
|
+
if (listeners && listeners.has(listenerId)) {
|
|
54
|
+
listeners.delete(listenerId); // Remove listener from map
|
|
55
|
+
if (listeners.size === 0) {
|
|
56
|
+
this.listeners.delete(name); // Remove entire map entry if no listeners remain
|
|
57
|
+
_ScateSDK.RemoveListener(name); // Unregister native listener
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
static ClearListeners(name) {
|
|
62
|
+
this.listeners.delete(name); // Remove all listeners for a given event
|
|
63
|
+
_ScateSDK.RemoveListener(name); // Unregister native listener
|
|
64
|
+
}
|
|
24
65
|
}
|
|
25
66
|
export default ScateSDK;
|
|
26
67
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","_ScateSDK","ScateSDK","Proxy","get","Error","Init","appID","SetAdid","adid","Event","name","EventWithValue","customValue"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["NativeEventEmitter","NativeModules","Platform","LINKING_ERROR","select","ios","default","_ScateSDK","ScateSDK","Proxy","get","Error","eventEmitter","ScateEvents","listeners","Map","Init","appID","SetAdid","adid","Event","name","EventWithValue","customValue","GetRemoteConfig","key","defaultValue","HandleEvent","event","forEach","listener","AddListener","listenerId","Date","now","toString","has","set","addListener","RemoveListener","delete","size","ClearListeners"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
+
export declare enum ScateEvents {
|
|
2
|
+
REMOTE_CONFIG_READY = "Scate_RemoteConfigsReady"
|
|
3
|
+
}
|
|
1
4
|
export declare class ScateSDK {
|
|
2
|
-
static
|
|
3
|
-
static
|
|
4
|
-
static
|
|
5
|
-
static
|
|
5
|
+
private static listeners;
|
|
6
|
+
static Init(appID: string): Promise<void>;
|
|
7
|
+
static SetAdid(adid: string): Promise<void>;
|
|
8
|
+
static Event(name: string): Promise<void>;
|
|
9
|
+
static EventWithValue(name: string, customValue: string): Promise<void>;
|
|
10
|
+
static GetRemoteConfig(key: string, defaultValue: string): Promise<string>;
|
|
11
|
+
static HandleEvent: (name: string, event: any) => void;
|
|
12
|
+
static AddListener(name: string, listener: Function): string;
|
|
13
|
+
static RemoveListener(name: string, listenerId: string): void;
|
|
14
|
+
static ClearListeners(name: string): void;
|
|
6
15
|
}
|
|
7
16
|
export default ScateSDK;
|
|
8
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAqBA,oBAAY,WAAW;IACrB,mBAAmB,6BAA6B;CACjD;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAiD;WAE3D,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAIlC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAIpC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAIlC,cAAc,CAC1B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;WAIF,eAAe,CAC3B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IAIlB,OAAc,WAAW,SAAU,MAAM,SAAS,GAAG,UAOnD;WAEY,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;WAW5C,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;WAW/C,cAAc,CAAC,IAAI,EAAE,MAAM;CAI1C;AAED,eAAe,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scatesdk-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Scate SDK is made for developers to integrate Scate's services into their apps. Please visit https://www.scate.io for more information.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/scatesdk-react.podspec
CHANGED
|
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
|
|
|
16
16
|
|
|
17
17
|
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
18
18
|
|
|
19
|
-
s.dependency "ScateSDK"
|
|
19
|
+
s.dependency "ScateSDK", "0.3.26"
|
|
20
20
|
|
|
21
21
|
# Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
|
|
22
22
|
# See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
|
package/src/index.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NativeModules, Platform } from 'react-native';
|
|
1
|
+
import { NativeEventEmitter, NativeModules, Platform } from 'react-native';
|
|
2
2
|
|
|
3
3
|
const LINKING_ERROR =
|
|
4
4
|
`The package 'scatesdk-react' doesn't seem to be linked. Make sure: \n\n` +
|
|
@@ -17,24 +17,76 @@ const _ScateSDK = NativeModules.ScateSDK
|
|
|
17
17
|
}
|
|
18
18
|
);
|
|
19
19
|
|
|
20
|
+
const eventEmitter = new NativeEventEmitter(_ScateSDK);
|
|
21
|
+
|
|
22
|
+
export enum ScateEvents {
|
|
23
|
+
REMOTE_CONFIG_READY = 'Scate_RemoteConfigsReady',
|
|
24
|
+
}
|
|
25
|
+
|
|
20
26
|
export class ScateSDK {
|
|
21
|
-
|
|
27
|
+
private static listeners: Map<string, Map<string, Function>> = new Map();
|
|
28
|
+
|
|
29
|
+
public static Init(appID: string): Promise<void> {
|
|
22
30
|
return _ScateSDK.Init(appID);
|
|
23
31
|
}
|
|
24
32
|
|
|
25
|
-
public static SetAdid(adid:
|
|
33
|
+
public static SetAdid(adid: string): Promise<void> {
|
|
26
34
|
return _ScateSDK.SetAdid(adid);
|
|
27
35
|
}
|
|
28
36
|
|
|
29
|
-
public static Event(name:
|
|
37
|
+
public static Event(name: string): Promise<void> {
|
|
30
38
|
return _ScateSDK.Event(name);
|
|
31
39
|
}
|
|
32
40
|
|
|
33
41
|
public static EventWithValue(
|
|
34
|
-
name:
|
|
35
|
-
customValue:
|
|
42
|
+
name: string,
|
|
43
|
+
customValue: string
|
|
36
44
|
): Promise<void> {
|
|
37
45
|
return _ScateSDK.EventWithValue(name, customValue);
|
|
38
46
|
}
|
|
47
|
+
|
|
48
|
+
public static GetRemoteConfig(
|
|
49
|
+
key: string,
|
|
50
|
+
defaultValue: string
|
|
51
|
+
): Promise<string> {
|
|
52
|
+
return _ScateSDK.GetRemoteConfig(key, defaultValue);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public static HandleEvent = (name: string, event: any) => {
|
|
56
|
+
const listeners = this.listeners.get(name);
|
|
57
|
+
if (listeners) {
|
|
58
|
+
listeners.forEach((listener) => {
|
|
59
|
+
listener(event); // Pass event data to listeners
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
public static AddListener(name: string, listener: Function) {
|
|
65
|
+
const listenerId = Date.now().toString(); // Create unique listener ID based on current timestamp
|
|
66
|
+
if (!this.listeners.has(name)) {
|
|
67
|
+
this.listeners.set(name, new Map());
|
|
68
|
+
_ScateSDK.AddListener(name); // Register native listener
|
|
69
|
+
eventEmitter.addListener(name, (event) => this.HandleEvent(name, event));
|
|
70
|
+
}
|
|
71
|
+
this.listeners.get(name)?.set(listenerId, listener); // Store listener with ID
|
|
72
|
+
return listenerId; // Return the listener ID
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public static RemoveListener(name: string, listenerId: string) {
|
|
76
|
+
const listeners = this.listeners.get(name);
|
|
77
|
+
if (listeners && listeners.has(listenerId)) {
|
|
78
|
+
listeners.delete(listenerId); // Remove listener from map
|
|
79
|
+
if (listeners.size === 0) {
|
|
80
|
+
this.listeners.delete(name); // Remove entire map entry if no listeners remain
|
|
81
|
+
_ScateSDK.RemoveListener(name); // Unregister native listener
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public static ClearListeners(name: string) {
|
|
87
|
+
this.listeners.delete(name); // Remove all listeners for a given event
|
|
88
|
+
_ScateSDK.RemoveListener(name); // Unregister native listener
|
|
89
|
+
}
|
|
39
90
|
}
|
|
91
|
+
|
|
40
92
|
export default ScateSDK;
|