rn-linkrunner 0.4.3 → 0.5.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 +17 -23
- package/lib/commonjs/index.js +80 -68
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +80 -67
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +15 -8
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/index.ts +97 -79
package/README.md
CHANGED
|
@@ -6,17 +6,17 @@ React Native Package for [linkrunner.io](https://www.linkrunner.io)
|
|
|
6
6
|
|
|
7
7
|
### Step 1: Prerequisites
|
|
8
8
|
|
|
9
|
-
rn-linkrunner also uses `react-native-device-info
|
|
9
|
+
rn-linkrunner also uses `react-native-device-info`. You can install this package with the following command:
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
npm install react-native-device-info
|
|
12
|
+
npm install react-native-device-info
|
|
13
13
|
|
|
14
14
|
or
|
|
15
15
|
|
|
16
|
-
yarn add react-native-device-info
|
|
16
|
+
yarn add react-native-device-info
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Then run `cd ios && pod install` to install pods for the package.
|
|
20
20
|
|
|
21
21
|
### Step 2: Installing rn-linkrunner
|
|
22
22
|
|
|
@@ -32,9 +32,7 @@ yarn add rn-linkrunner
|
|
|
32
32
|
|
|
33
33
|
### Initialisation
|
|
34
34
|
|
|
35
|
-
You'll need your [project token](https://www.linkrunner.io/dashboard?m=documentation) to
|
|
36
|
-
|
|
37
|
-
Place it in the `App.tsx` component, make sure the dependency array is empty for the `useEffect`
|
|
35
|
+
You'll need your [project token](https://www.linkrunner.io/dashboard?m=documentation) to initialise the package. Place this initialization step in your `App.tsx` component, making sure the dependency array is empty for the `useEffect`:
|
|
38
36
|
|
|
39
37
|
```js
|
|
40
38
|
import linkrunner from 'rn-linkrunner';
|
|
@@ -47,34 +45,30 @@ useEffect(() => {
|
|
|
47
45
|
|
|
48
46
|
### Trigger
|
|
49
47
|
|
|
50
|
-
Call this function once your onboarding is completed and the navigation stack can be accessed by a
|
|
48
|
+
Call this function once your onboarding is completed and the navigation stack can be accessed by a deep link:
|
|
51
49
|
|
|
52
|
-
```
|
|
50
|
+
```jsx
|
|
53
51
|
import linkrunner from 'rn-linkrunner';
|
|
54
52
|
|
|
55
53
|
const onTrigger = () => {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
54
|
+
linkrunner.trigger({
|
|
55
|
+
user_data: {
|
|
56
|
+
id: '1',
|
|
57
|
+
name: 'John Doe', // optional
|
|
58
|
+
phone: '9583849238', // optional
|
|
59
|
+
email: 'support@linkrunner.io', //optional
|
|
60
|
+
},
|
|
61
|
+
data: {}, // Any other data you might need
|
|
62
|
+
});
|
|
65
63
|
};
|
|
66
64
|
```
|
|
67
65
|
|
|
68
|
-
Both
|
|
66
|
+
Both attributes in the `trigger` method are optional, although recommended.
|
|
69
67
|
|
|
70
68
|
### Facing issues during integration?
|
|
71
69
|
|
|
72
70
|
Mail us on support@linkrunner.io
|
|
73
71
|
|
|
74
|
-
<!-- ## Contributing
|
|
75
|
-
|
|
76
|
-
See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow. -->
|
|
77
|
-
|
|
78
72
|
## License
|
|
79
73
|
|
|
80
74
|
MIT
|
package/lib/commonjs/index.js
CHANGED
|
@@ -6,13 +6,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _reactNativeDeviceInfo = _interopRequireWildcard(require("react-native-device-info"));
|
|
9
|
-
var _reactNativeEncryptedStorage = _interopRequireDefault(require("react-native-encrypted-storage"));
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
9
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
10
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
-
const package_version = '0.
|
|
11
|
+
const package_version = '0.5.0';
|
|
14
12
|
const app_version = _reactNativeDeviceInfo.default.getVersion();
|
|
15
|
-
const EncryptedStorageTokenName = 'linkrunner-token';
|
|
16
13
|
const device_data = {
|
|
17
14
|
android_id: _reactNativeDeviceInfo.default.getAndroidId(),
|
|
18
15
|
api_level: _reactNativeDeviceInfo.default.getApiLevel(),
|
|
@@ -35,73 +32,88 @@ const device_data = {
|
|
|
35
32
|
version: _reactNativeDeviceInfo.default.getVersion()
|
|
36
33
|
};
|
|
37
34
|
const baseUrl = 'https://api.linkrunner.io';
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
'
|
|
45
|
-
|
|
46
|
-
},
|
|
47
|
-
body: JSON.stringify({
|
|
48
|
-
token,
|
|
49
|
-
package_version,
|
|
50
|
-
app_version,
|
|
51
|
-
device_data,
|
|
52
|
-
platform: 'REACT_NATIVE'
|
|
53
|
-
})
|
|
54
|
-
}).then(res => res.json()).then(async result => {
|
|
55
|
-
if (!result) throw new Error('No response obtained!');
|
|
56
|
-
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
57
|
-
throw new Error(result === null || result === void 0 ? void 0 : result.msg);
|
|
35
|
+
class Linkrunner {
|
|
36
|
+
constructor() {
|
|
37
|
+
this.token = null;
|
|
38
|
+
}
|
|
39
|
+
init(token) {
|
|
40
|
+
if (!token) {
|
|
41
|
+
console.error('Linkrunner needs your project token to initialize!');
|
|
42
|
+
return;
|
|
58
43
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
'
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
token,
|
|
78
|
-
user_data,
|
|
79
|
-
platform: 'REACT_NATIVE',
|
|
80
|
-
data: {
|
|
81
|
-
...data,
|
|
82
|
-
device_data
|
|
44
|
+
this.token = token;
|
|
45
|
+
fetch(baseUrl + '/api/client/init', {
|
|
46
|
+
method: 'POST',
|
|
47
|
+
headers: {
|
|
48
|
+
'Accept': 'application/json',
|
|
49
|
+
'Content-Type': 'application/json'
|
|
50
|
+
},
|
|
51
|
+
body: JSON.stringify({
|
|
52
|
+
token,
|
|
53
|
+
package_version,
|
|
54
|
+
app_version,
|
|
55
|
+
device_data,
|
|
56
|
+
platform: 'REACT_NATIVE'
|
|
57
|
+
})
|
|
58
|
+
}).then(res => res.json()).then(result => {
|
|
59
|
+
if (!result) throw new Error('No response obtained!');
|
|
60
|
+
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
61
|
+
throw new Error(result === null || result === void 0 ? void 0 : result.msg);
|
|
83
62
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
63
|
+
if (__DEV__) {
|
|
64
|
+
console.log('Linkrunner initialised successfully 🔥');
|
|
65
|
+
}
|
|
66
|
+
}).catch(err => {
|
|
67
|
+
console.error('Error initializing linkrunner: ', err.message);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async trigger({
|
|
71
|
+
data,
|
|
72
|
+
user_data,
|
|
73
|
+
config
|
|
74
|
+
}) {
|
|
75
|
+
if (!this.token) {
|
|
76
|
+
console.error('Linkrunner: Trigger failed, token not initialized');
|
|
77
|
+
return;
|
|
91
78
|
}
|
|
92
|
-
|
|
93
|
-
var _result$
|
|
94
|
-
|
|
79
|
+
try {
|
|
80
|
+
var _result$data;
|
|
81
|
+
const response = await fetch(baseUrl + '/api/client/trigger', {
|
|
82
|
+
method: 'POST',
|
|
83
|
+
headers: {
|
|
84
|
+
'Accept': 'application/json',
|
|
85
|
+
'Content-Type': 'application/json'
|
|
86
|
+
},
|
|
87
|
+
body: JSON.stringify({
|
|
88
|
+
token: this.token,
|
|
89
|
+
user_data,
|
|
90
|
+
platform: 'REACT_NATIVE',
|
|
91
|
+
data: {
|
|
92
|
+
...data,
|
|
93
|
+
device_data
|
|
94
|
+
}
|
|
95
|
+
})
|
|
96
|
+
});
|
|
97
|
+
const result = await response.json();
|
|
98
|
+
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
99
|
+
console.error('Linkrunner: Trigger failed');
|
|
100
|
+
console.error('Linkrunner: ', result === null || result === void 0 ? void 0 : result.msg);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (result !== null && result !== void 0 && (_result$data = result.data) !== null && _result$data !== void 0 && _result$data.deeplink && (config === null || config === void 0 ? void 0 : config.trigger_deeplink) !== false) {
|
|
104
|
+
var _result$data2;
|
|
105
|
+
_reactNative.Linking.openURL(result === null || result === void 0 || (_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.deeplink);
|
|
106
|
+
}
|
|
107
|
+
if (__DEV__) {
|
|
108
|
+
console.log('Linkrunner: Trigger called 🔥');
|
|
109
|
+
}
|
|
110
|
+
return result.data;
|
|
111
|
+
} catch (err) {
|
|
112
|
+
console.error('Linkrunner: Trigger failed');
|
|
113
|
+
console.error('Linkrunner: ', err.message);
|
|
95
114
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
console.error('Linkrunner: ', err === null || err === void 0 ? void 0 : err.msg);
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
const linkrunner = {
|
|
103
|
-
init,
|
|
104
|
-
trigger
|
|
105
|
-
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const linkrunner = new Linkrunner();
|
|
106
118
|
var _default = exports.default = linkrunner;
|
|
107
119
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeDeviceInfo","_interopRequireWildcard","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeDeviceInfo","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","package_version","app_version","DeviceInfo","getVersion","device_data","android_id","getAndroidId","api_level","getApiLevel","application_name","getApplicationName","base_os","getBaseOs","build_id","getBuildId","brand","getBrand","build_number","getBuildNumber","bundle_id","getBundleId","carrier","getCarrier","device","getDevice","device_id","getDeviceId","device_type","getDeviceType","device_name","getDeviceName","device_token","getDeviceToken","device_ip","getIpAddress","install_ref","getInstallReferrer","manufacturer","getManufacturer","system_version","getSystemVersion","version","baseUrl","Linkrunner","constructor","token","init","console","error","fetch","method","headers","body","JSON","stringify","platform","then","res","json","result","Error","status","msg","__DEV__","log","catch","err","message","trigger","data","user_data","config","_result$data","response","deeplink","trigger_deeplink","_result$data2","Linking","openURL","linkrunner","_default","exports"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
|
package/lib/module/index.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { Linking } from 'react-native';
|
|
2
2
|
import DeviceInfo, { getManufacturer, getSystemVersion } from 'react-native-device-info';
|
|
3
|
-
|
|
4
|
-
const package_version = '0.4.3';
|
|
3
|
+
const package_version = '0.5.0';
|
|
5
4
|
const app_version = DeviceInfo.getVersion();
|
|
6
|
-
const EncryptedStorageTokenName = 'linkrunner-token';
|
|
7
5
|
const device_data = {
|
|
8
6
|
android_id: DeviceInfo.getAndroidId(),
|
|
9
7
|
api_level: DeviceInfo.getApiLevel(),
|
|
@@ -26,73 +24,88 @@ const device_data = {
|
|
|
26
24
|
version: DeviceInfo.getVersion()
|
|
27
25
|
};
|
|
28
26
|
const baseUrl = 'https://api.linkrunner.io';
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
'
|
|
36
|
-
|
|
37
|
-
},
|
|
38
|
-
body: JSON.stringify({
|
|
39
|
-
token,
|
|
40
|
-
package_version,
|
|
41
|
-
app_version,
|
|
42
|
-
device_data,
|
|
43
|
-
platform: 'REACT_NATIVE'
|
|
44
|
-
})
|
|
45
|
-
}).then(res => res.json()).then(async result => {
|
|
46
|
-
if (!result) throw new Error('No response obtained!');
|
|
47
|
-
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
48
|
-
throw new Error(result === null || result === void 0 ? void 0 : result.msg);
|
|
27
|
+
class Linkrunner {
|
|
28
|
+
constructor() {
|
|
29
|
+
this.token = null;
|
|
30
|
+
}
|
|
31
|
+
init(token) {
|
|
32
|
+
if (!token) {
|
|
33
|
+
console.error('Linkrunner needs your project token to initialize!');
|
|
34
|
+
return;
|
|
49
35
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
'
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
token,
|
|
69
|
-
user_data,
|
|
70
|
-
platform: 'REACT_NATIVE',
|
|
71
|
-
data: {
|
|
72
|
-
...data,
|
|
73
|
-
device_data
|
|
36
|
+
this.token = token;
|
|
37
|
+
fetch(baseUrl + '/api/client/init', {
|
|
38
|
+
method: 'POST',
|
|
39
|
+
headers: {
|
|
40
|
+
'Accept': 'application/json',
|
|
41
|
+
'Content-Type': 'application/json'
|
|
42
|
+
},
|
|
43
|
+
body: JSON.stringify({
|
|
44
|
+
token,
|
|
45
|
+
package_version,
|
|
46
|
+
app_version,
|
|
47
|
+
device_data,
|
|
48
|
+
platform: 'REACT_NATIVE'
|
|
49
|
+
})
|
|
50
|
+
}).then(res => res.json()).then(result => {
|
|
51
|
+
if (!result) throw new Error('No response obtained!');
|
|
52
|
+
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
53
|
+
throw new Error(result === null || result === void 0 ? void 0 : result.msg);
|
|
74
54
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
55
|
+
if (__DEV__) {
|
|
56
|
+
console.log('Linkrunner initialised successfully 🔥');
|
|
57
|
+
}
|
|
58
|
+
}).catch(err => {
|
|
59
|
+
console.error('Error initializing linkrunner: ', err.message);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async trigger({
|
|
63
|
+
data,
|
|
64
|
+
user_data,
|
|
65
|
+
config
|
|
66
|
+
}) {
|
|
67
|
+
if (!this.token) {
|
|
68
|
+
console.error('Linkrunner: Trigger failed, token not initialized');
|
|
69
|
+
return;
|
|
82
70
|
}
|
|
83
|
-
|
|
84
|
-
var _result$
|
|
85
|
-
|
|
71
|
+
try {
|
|
72
|
+
var _result$data;
|
|
73
|
+
const response = await fetch(baseUrl + '/api/client/trigger', {
|
|
74
|
+
method: 'POST',
|
|
75
|
+
headers: {
|
|
76
|
+
'Accept': 'application/json',
|
|
77
|
+
'Content-Type': 'application/json'
|
|
78
|
+
},
|
|
79
|
+
body: JSON.stringify({
|
|
80
|
+
token: this.token,
|
|
81
|
+
user_data,
|
|
82
|
+
platform: 'REACT_NATIVE',
|
|
83
|
+
data: {
|
|
84
|
+
...data,
|
|
85
|
+
device_data
|
|
86
|
+
}
|
|
87
|
+
})
|
|
88
|
+
});
|
|
89
|
+
const result = await response.json();
|
|
90
|
+
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
91
|
+
console.error('Linkrunner: Trigger failed');
|
|
92
|
+
console.error('Linkrunner: ', result === null || result === void 0 ? void 0 : result.msg);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (result !== null && result !== void 0 && (_result$data = result.data) !== null && _result$data !== void 0 && _result$data.deeplink && (config === null || config === void 0 ? void 0 : config.trigger_deeplink) !== false) {
|
|
96
|
+
var _result$data2;
|
|
97
|
+
Linking.openURL(result === null || result === void 0 || (_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.deeplink);
|
|
98
|
+
}
|
|
99
|
+
if (__DEV__) {
|
|
100
|
+
console.log('Linkrunner: Trigger called 🔥');
|
|
101
|
+
}
|
|
102
|
+
return result.data;
|
|
103
|
+
} catch (err) {
|
|
104
|
+
console.error('Linkrunner: Trigger failed');
|
|
105
|
+
console.error('Linkrunner: ', err.message);
|
|
86
106
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
console.error('Linkrunner: ', err === null || err === void 0 ? void 0 : err.msg);
|
|
91
|
-
});
|
|
92
|
-
};
|
|
93
|
-
const linkrunner = {
|
|
94
|
-
init,
|
|
95
|
-
trigger
|
|
96
|
-
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const linkrunner = new Linkrunner();
|
|
97
110
|
export default linkrunner;
|
|
98
111
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Linking","DeviceInfo","getManufacturer","getSystemVersion","
|
|
1
|
+
{"version":3,"names":["Linking","DeviceInfo","getManufacturer","getSystemVersion","package_version","app_version","getVersion","device_data","android_id","getAndroidId","api_level","getApiLevel","application_name","getApplicationName","base_os","getBaseOs","build_id","getBuildId","brand","getBrand","build_number","getBuildNumber","bundle_id","getBundleId","carrier","getCarrier","device","getDevice","device_id","getDeviceId","device_type","getDeviceType","device_name","getDeviceName","device_token","getDeviceToken","device_ip","getIpAddress","install_ref","getInstallReferrer","manufacturer","system_version","version","baseUrl","Linkrunner","constructor","token","init","console","error","fetch","method","headers","body","JSON","stringify","platform","then","res","json","result","Error","status","msg","__DEV__","log","catch","err","message","trigger","data","user_data","config","_result$data","response","deeplink","trigger_deeplink","_result$data2","openURL","linkrunner"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
interface UserData {
|
|
2
2
|
id: string;
|
|
3
3
|
name?: string;
|
|
4
4
|
phone?: string;
|
|
5
5
|
email?: string;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
}
|
|
7
|
+
interface TriggerConfig {
|
|
8
|
+
trigger_deeplink?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare class Linkrunner {
|
|
11
|
+
private token;
|
|
12
|
+
constructor();
|
|
13
|
+
init(token: string): void;
|
|
14
|
+
trigger({ data, user_data, config, }: {
|
|
15
|
+
config?: TriggerConfig;
|
|
11
16
|
data: any;
|
|
12
|
-
|
|
13
|
-
}
|
|
17
|
+
user_data: UserData;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
declare const linkrunner: Linkrunner;
|
|
14
21
|
export default linkrunner;
|
|
15
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAiCA,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,cAAM,UAAU;IACd,OAAO,CAAC,KAAK,CAAgB;;IAM7B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAsCnB,OAAO,CAAC,EACZ,IAAI,EACJ,SAAS,EACT,MAAM,GACP,EAAE;QACD,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,IAAI,EAAE,GAAG,CAAC;QACV,SAAS,EAAE,QAAQ,CAAC;KACrB,GAAG,OAAO,CAAC,IAAI,CAAC;CA6ClB;AAED,QAAA,MAAM,UAAU,YAAmB,CAAC;AAEpC,eAAe,UAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rn-linkrunner",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "React Native Package for linkrunner",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -138,7 +138,6 @@
|
|
|
138
138
|
]
|
|
139
139
|
},
|
|
140
140
|
"dependencies": {
|
|
141
|
-
"react-native-device-info": "^10.12.0"
|
|
142
|
-
"react-native-encrypted-storage": "^4.0.3"
|
|
141
|
+
"react-native-device-info": "^10.12.0"
|
|
143
142
|
}
|
|
144
143
|
}
|
package/src/index.ts
CHANGED
|
@@ -3,11 +3,9 @@ import DeviceInfo, {
|
|
|
3
3
|
getManufacturer,
|
|
4
4
|
getSystemVersion,
|
|
5
5
|
} from 'react-native-device-info';
|
|
6
|
-
import EncryptedStorage from 'react-native-encrypted-storage';
|
|
7
6
|
|
|
8
|
-
const package_version = '0.
|
|
9
|
-
const app_version = DeviceInfo.getVersion();
|
|
10
|
-
const EncryptedStorageTokenName = 'linkrunner-token';
|
|
7
|
+
const package_version = '0.5.0';
|
|
8
|
+
const app_version: string = DeviceInfo.getVersion();
|
|
11
9
|
|
|
12
10
|
const device_data = {
|
|
13
11
|
android_id: DeviceInfo.getAndroidId(),
|
|
@@ -33,97 +31,117 @@ const device_data = {
|
|
|
33
31
|
|
|
34
32
|
const baseUrl = 'https://api.linkrunner.io';
|
|
35
33
|
|
|
36
|
-
|
|
37
|
-
// In error message add "Click here to get your project token"
|
|
38
|
-
if (!token)
|
|
39
|
-
return console.error('Linkrunner needs your project token to initialize!');
|
|
40
|
-
|
|
41
|
-
fetch(baseUrl + '/api/client/init', {
|
|
42
|
-
method: 'POST',
|
|
43
|
-
headers: {
|
|
44
|
-
'Accept': 'application/json',
|
|
45
|
-
'Content-Type': 'application/json',
|
|
46
|
-
},
|
|
47
|
-
body: JSON.stringify({
|
|
48
|
-
token,
|
|
49
|
-
package_version,
|
|
50
|
-
app_version,
|
|
51
|
-
device_data,
|
|
52
|
-
platform: 'REACT_NATIVE',
|
|
53
|
-
}),
|
|
54
|
-
})
|
|
55
|
-
.then((res) => res.json())
|
|
56
|
-
.then(async (result) => {
|
|
57
|
-
if (!result) throw new Error('No response obtained!');
|
|
58
|
-
|
|
59
|
-
if (result?.status !== 200 && result?.status !== 201) {
|
|
60
|
-
throw new Error(result?.msg);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
await EncryptedStorage.setItem(EncryptedStorageTokenName, token);
|
|
64
|
-
console.log('Linkrunner initialised successfully 🔥');
|
|
65
|
-
})
|
|
66
|
-
.catch((err) => {
|
|
67
|
-
console.error('Error initializing linkrunner: ', err.message);
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
type UserData = {
|
|
34
|
+
interface UserData {
|
|
72
35
|
id: string;
|
|
73
36
|
name?: string;
|
|
74
37
|
phone?: string;
|
|
75
38
|
email?: string;
|
|
76
|
-
}
|
|
39
|
+
}
|
|
77
40
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
'
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
41
|
+
interface TriggerConfig {
|
|
42
|
+
trigger_deeplink?: boolean;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
class Linkrunner {
|
|
46
|
+
private token: string | null;
|
|
47
|
+
|
|
48
|
+
constructor() {
|
|
49
|
+
this.token = null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
init(token: string): void {
|
|
53
|
+
if (!token) {
|
|
54
|
+
console.error('Linkrunner needs your project token to initialize!');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
this.token = token;
|
|
59
|
+
fetch(baseUrl + '/api/client/init', {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
headers: {
|
|
62
|
+
'Accept': 'application/json',
|
|
63
|
+
'Content-Type': 'application/json',
|
|
100
64
|
},
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
65
|
+
body: JSON.stringify({
|
|
66
|
+
token,
|
|
67
|
+
package_version,
|
|
68
|
+
app_version,
|
|
69
|
+
device_data,
|
|
70
|
+
platform: 'REACT_NATIVE',
|
|
71
|
+
}),
|
|
72
|
+
})
|
|
73
|
+
.then((res) => res.json())
|
|
74
|
+
.then((result) => {
|
|
75
|
+
if (!result) throw new Error('No response obtained!');
|
|
76
|
+
|
|
77
|
+
if (result?.status !== 200 && result?.status !== 201) {
|
|
78
|
+
throw new Error(result?.msg);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (__DEV__) {
|
|
82
|
+
console.log('Linkrunner initialised successfully 🔥');
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
.catch((err) => {
|
|
86
|
+
console.error('Error initializing linkrunner: ', err.message);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async trigger({
|
|
91
|
+
data,
|
|
92
|
+
user_data,
|
|
93
|
+
config,
|
|
94
|
+
}: {
|
|
95
|
+
config?: TriggerConfig;
|
|
96
|
+
data: any;
|
|
97
|
+
user_data: UserData;
|
|
98
|
+
}): Promise<void> {
|
|
99
|
+
if (!this.token) {
|
|
100
|
+
console.error('Linkrunner: Trigger failed, token not initialized');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
try {
|
|
105
|
+
const response = await fetch(baseUrl + '/api/client/trigger', {
|
|
106
|
+
method: 'POST',
|
|
107
|
+
headers: {
|
|
108
|
+
'Accept': 'application/json',
|
|
109
|
+
'Content-Type': 'application/json',
|
|
110
|
+
},
|
|
111
|
+
body: JSON.stringify({
|
|
112
|
+
token: this.token,
|
|
113
|
+
user_data,
|
|
114
|
+
platform: 'REACT_NATIVE',
|
|
115
|
+
data: {
|
|
116
|
+
...data,
|
|
117
|
+
device_data,
|
|
118
|
+
},
|
|
119
|
+
}),
|
|
120
|
+
});
|
|
121
|
+
const result = await response.json();
|
|
106
122
|
|
|
107
123
|
if (result?.status !== 200 && result?.status !== 201) {
|
|
108
124
|
console.error('Linkrunner: Trigger failed');
|
|
109
125
|
console.error('Linkrunner: ', result?.msg);
|
|
126
|
+
return;
|
|
110
127
|
}
|
|
111
128
|
|
|
112
|
-
if (
|
|
129
|
+
if (result?.data?.deeplink && config?.trigger_deeplink !== false) {
|
|
113
130
|
Linking.openURL(result?.data?.deeplink);
|
|
114
131
|
}
|
|
115
132
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
133
|
+
if (__DEV__) {
|
|
134
|
+
console.log('Linkrunner: Trigger called 🔥');
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return result.data;
|
|
138
|
+
} catch (err: any) {
|
|
119
139
|
console.error('Linkrunner: Trigger failed');
|
|
120
|
-
console.error('Linkrunner: ', err
|
|
121
|
-
}
|
|
122
|
-
}
|
|
140
|
+
console.error('Linkrunner: ', err.message);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
123
144
|
|
|
124
|
-
const linkrunner =
|
|
125
|
-
init,
|
|
126
|
-
trigger,
|
|
127
|
-
};
|
|
145
|
+
const linkrunner = new Linkrunner();
|
|
128
146
|
|
|
129
147
|
export default linkrunner;
|