rn-linkrunner 0.4.3 → 0.5.1
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 +100 -68
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +100 -67
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +30 -7
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/index.ts +139 -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.1';
|
|
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,108 @@ 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
|
+
async 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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
...data,
|
|
82
|
-
device_data
|
|
44
|
+
this.token = token;
|
|
45
|
+
try {
|
|
46
|
+
const fetch_result = await fetch(baseUrl + '/api/client/init', {
|
|
47
|
+
method: 'POST',
|
|
48
|
+
headers: {
|
|
49
|
+
'Accept': 'application/json',
|
|
50
|
+
'Content-Type': 'application/json'
|
|
51
|
+
},
|
|
52
|
+
body: JSON.stringify({
|
|
53
|
+
token,
|
|
54
|
+
package_version,
|
|
55
|
+
app_version,
|
|
56
|
+
device_data,
|
|
57
|
+
platform: 'REACT_NATIVE'
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
const result = await fetch_result.json();
|
|
61
|
+
|
|
62
|
+
// if (!result) throw new Error('No response obtained!');
|
|
63
|
+
|
|
64
|
+
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
65
|
+
throw new Error(result === null || result === void 0 ? void 0 : result.msg);
|
|
83
66
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
console.error('
|
|
90
|
-
console.error('Linkrunner: ', result === null || result === void 0 ? void 0 : result.msg);
|
|
67
|
+
if (__DEV__) {
|
|
68
|
+
console.log('Linkrunner initialised successfully 🔥');
|
|
69
|
+
}
|
|
70
|
+
return result === null || result === void 0 ? void 0 : result.data;
|
|
71
|
+
} catch (error) {
|
|
72
|
+
console.error('Error initializing linkrunner');
|
|
91
73
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
74
|
+
}
|
|
75
|
+
async trigger({
|
|
76
|
+
data,
|
|
77
|
+
user_data,
|
|
78
|
+
config
|
|
79
|
+
}) {
|
|
80
|
+
if (!this.token) {
|
|
81
|
+
console.error('Linkrunner: Trigger failed, token not initialized');
|
|
82
|
+
return;
|
|
95
83
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
84
|
+
try {
|
|
85
|
+
var _result$data, _result$data2;
|
|
86
|
+
const response = await fetch(baseUrl + '/api/client/trigger', {
|
|
87
|
+
method: 'POST',
|
|
88
|
+
headers: {
|
|
89
|
+
'Accept': 'application/json',
|
|
90
|
+
'Content-Type': 'application/json'
|
|
91
|
+
},
|
|
92
|
+
body: JSON.stringify({
|
|
93
|
+
token: this.token,
|
|
94
|
+
user_data,
|
|
95
|
+
platform: 'REACT_NATIVE',
|
|
96
|
+
data: {
|
|
97
|
+
...data,
|
|
98
|
+
device_data
|
|
99
|
+
}
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
const result = await response.json();
|
|
103
|
+
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
104
|
+
console.error('Linkrunner: Trigger failed');
|
|
105
|
+
console.error('Linkrunner: ', result === null || result === void 0 ? void 0 : result.msg);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
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 && result !== null && result !== void 0 && (_result$data2 = result.data) !== null && _result$data2 !== void 0 && _result$data2.trigger) {
|
|
109
|
+
var _result$data4;
|
|
110
|
+
if (__DEV__) {
|
|
111
|
+
var _result$data3;
|
|
112
|
+
console.log('Triggering deeplink > ', result === null || result === void 0 || (_result$data3 = result.data) === null || _result$data3 === void 0 ? void 0 : _result$data3.deeplink);
|
|
113
|
+
}
|
|
114
|
+
_reactNative.Linking.openURL(result === null || result === void 0 || (_result$data4 = result.data) === null || _result$data4 === void 0 ? void 0 : _result$data4.deeplink).then(() => {
|
|
115
|
+
fetch(baseUrl + '/api/client/deeplink-triggered', {
|
|
116
|
+
method: 'POST',
|
|
117
|
+
headers: {
|
|
118
|
+
'Accept': 'application/json',
|
|
119
|
+
'Content-Type': 'application/json'
|
|
120
|
+
},
|
|
121
|
+
body: JSON.stringify({
|
|
122
|
+
token: this.token
|
|
123
|
+
})
|
|
124
|
+
}).then(res => res.json()).catch(() => {});
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if (__DEV__) {
|
|
128
|
+
console.log('Linkrunner: Trigger called 🔥');
|
|
129
|
+
}
|
|
130
|
+
return result.data;
|
|
131
|
+
} catch (err) {
|
|
132
|
+
console.error('Linkrunner: Trigger failed');
|
|
133
|
+
console.error('Linkrunner: ', err.message);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const linkrunner = new Linkrunner();
|
|
106
138
|
var _default = exports.default = linkrunner;
|
|
107
139
|
//# 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_result","fetch","method","headers","body","JSON","stringify","platform","result","json","status","Error","msg","__DEV__","log","data","trigger","user_data","config","_result$data","_result$data2","response","deeplink","trigger_deeplink","_result$data4","_result$data3","Linking","openURL","then","res","catch","err","message","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.1';
|
|
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,108 @@ 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
|
+
async 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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
...data,
|
|
73
|
-
device_data
|
|
36
|
+
this.token = token;
|
|
37
|
+
try {
|
|
38
|
+
const fetch_result = await fetch(baseUrl + '/api/client/init', {
|
|
39
|
+
method: 'POST',
|
|
40
|
+
headers: {
|
|
41
|
+
'Accept': 'application/json',
|
|
42
|
+
'Content-Type': 'application/json'
|
|
43
|
+
},
|
|
44
|
+
body: JSON.stringify({
|
|
45
|
+
token,
|
|
46
|
+
package_version,
|
|
47
|
+
app_version,
|
|
48
|
+
device_data,
|
|
49
|
+
platform: 'REACT_NATIVE'
|
|
50
|
+
})
|
|
51
|
+
});
|
|
52
|
+
const result = await fetch_result.json();
|
|
53
|
+
|
|
54
|
+
// if (!result) throw new Error('No response obtained!');
|
|
55
|
+
|
|
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);
|
|
74
58
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
console.error('
|
|
81
|
-
console.error('Linkrunner: ', result === null || result === void 0 ? void 0 : result.msg);
|
|
59
|
+
if (__DEV__) {
|
|
60
|
+
console.log('Linkrunner initialised successfully 🔥');
|
|
61
|
+
}
|
|
62
|
+
return result === null || result === void 0 ? void 0 : result.data;
|
|
63
|
+
} catch (error) {
|
|
64
|
+
console.error('Error initializing linkrunner');
|
|
82
65
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
66
|
+
}
|
|
67
|
+
async trigger({
|
|
68
|
+
data,
|
|
69
|
+
user_data,
|
|
70
|
+
config
|
|
71
|
+
}) {
|
|
72
|
+
if (!this.token) {
|
|
73
|
+
console.error('Linkrunner: Trigger failed, token not initialized');
|
|
74
|
+
return;
|
|
86
75
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
76
|
+
try {
|
|
77
|
+
var _result$data, _result$data2;
|
|
78
|
+
const response = await fetch(baseUrl + '/api/client/trigger', {
|
|
79
|
+
method: 'POST',
|
|
80
|
+
headers: {
|
|
81
|
+
'Accept': 'application/json',
|
|
82
|
+
'Content-Type': 'application/json'
|
|
83
|
+
},
|
|
84
|
+
body: JSON.stringify({
|
|
85
|
+
token: this.token,
|
|
86
|
+
user_data,
|
|
87
|
+
platform: 'REACT_NATIVE',
|
|
88
|
+
data: {
|
|
89
|
+
...data,
|
|
90
|
+
device_data
|
|
91
|
+
}
|
|
92
|
+
})
|
|
93
|
+
});
|
|
94
|
+
const result = await response.json();
|
|
95
|
+
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
96
|
+
console.error('Linkrunner: Trigger failed');
|
|
97
|
+
console.error('Linkrunner: ', result === null || result === void 0 ? void 0 : result.msg);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
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 && result !== null && result !== void 0 && (_result$data2 = result.data) !== null && _result$data2 !== void 0 && _result$data2.trigger) {
|
|
101
|
+
var _result$data4;
|
|
102
|
+
if (__DEV__) {
|
|
103
|
+
var _result$data3;
|
|
104
|
+
console.log('Triggering deeplink > ', result === null || result === void 0 || (_result$data3 = result.data) === null || _result$data3 === void 0 ? void 0 : _result$data3.deeplink);
|
|
105
|
+
}
|
|
106
|
+
Linking.openURL(result === null || result === void 0 || (_result$data4 = result.data) === null || _result$data4 === void 0 ? void 0 : _result$data4.deeplink).then(() => {
|
|
107
|
+
fetch(baseUrl + '/api/client/deeplink-triggered', {
|
|
108
|
+
method: 'POST',
|
|
109
|
+
headers: {
|
|
110
|
+
'Accept': 'application/json',
|
|
111
|
+
'Content-Type': 'application/json'
|
|
112
|
+
},
|
|
113
|
+
body: JSON.stringify({
|
|
114
|
+
token: this.token
|
|
115
|
+
})
|
|
116
|
+
}).then(res => res.json()).catch(() => {});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
if (__DEV__) {
|
|
120
|
+
console.log('Linkrunner: Trigger called 🔥');
|
|
121
|
+
}
|
|
122
|
+
return result.data;
|
|
123
|
+
} catch (err) {
|
|
124
|
+
console.error('Linkrunner: Trigger failed');
|
|
125
|
+
console.error('Linkrunner: ', err.message);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const linkrunner = new Linkrunner();
|
|
97
130
|
export default linkrunner;
|
|
98
131
|
//# 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_result","fetch","method","headers","body","JSON","stringify","platform","result","json","status","Error","msg","__DEV__","log","data","trigger","user_data","config","_result$data","_result$data2","response","deeplink","trigger_deeplink","_result$data4","_result$data3","openURL","then","res","catch","err","message","linkrunner"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
|
|
@@ -1,15 +1,38 @@
|
|
|
1
|
-
|
|
1
|
+
interface UserData {
|
|
2
2
|
id: string;
|
|
3
3
|
name?: string;
|
|
4
4
|
phone?: string;
|
|
5
5
|
email?: string;
|
|
6
|
+
}
|
|
7
|
+
interface TriggerConfig {
|
|
8
|
+
trigger_deeplink?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export type Response = {
|
|
11
|
+
ip_location_data: IPLocationData;
|
|
12
|
+
deeplink: string;
|
|
13
|
+
root_domain: boolean;
|
|
6
14
|
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
export interface IPLocationData {
|
|
16
|
+
ip: string;
|
|
17
|
+
city: string;
|
|
18
|
+
countryLong: string;
|
|
19
|
+
countryShort: string;
|
|
20
|
+
latitude: number;
|
|
21
|
+
longitude: number;
|
|
22
|
+
region: string;
|
|
23
|
+
timeZone: string;
|
|
24
|
+
zipCode: string;
|
|
25
|
+
}
|
|
26
|
+
declare class Linkrunner {
|
|
27
|
+
private token;
|
|
28
|
+
constructor();
|
|
29
|
+
init(token: string): Promise<void | Response>;
|
|
30
|
+
trigger({ data, user_data, config, }: {
|
|
31
|
+
config?: TriggerConfig;
|
|
11
32
|
data: any;
|
|
12
|
-
|
|
13
|
-
}
|
|
33
|
+
user_data: UserData;
|
|
34
|
+
}): Promise<void | Response>;
|
|
35
|
+
}
|
|
36
|
+
declare const linkrunner: Linkrunner;
|
|
14
37
|
export default linkrunner;
|
|
15
38
|
//# 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,MAAM,MAAM,QAAQ,GAAG;IACrB,gBAAgB,EAAE,cAAc,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,cAAM,UAAU;IACd,OAAO,CAAC,KAAK,CAAgB;;IAMvB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;IAyC7C,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,GAAG,QAAQ,CAAC;CAkE7B;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.1",
|
|
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.1';
|
|
8
|
+
const app_version: string = DeviceInfo.getVersion();
|
|
11
9
|
|
|
12
10
|
const device_data = {
|
|
13
11
|
android_id: DeviceInfo.getAndroidId(),
|
|
@@ -33,97 +31,159 @@ const device_data = {
|
|
|
33
31
|
|
|
34
32
|
const baseUrl = 'https://api.linkrunner.io';
|
|
35
33
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
34
|
+
interface UserData {
|
|
35
|
+
id: string;
|
|
36
|
+
name?: string;
|
|
37
|
+
phone?: string;
|
|
38
|
+
email?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
interface TriggerConfig {
|
|
42
|
+
trigger_deeplink?: boolean;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export type Response = {
|
|
46
|
+
ip_location_data: IPLocationData;
|
|
47
|
+
deeplink: string;
|
|
48
|
+
root_domain: boolean;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export interface IPLocationData {
|
|
52
|
+
ip: string;
|
|
53
|
+
city: string;
|
|
54
|
+
countryLong: string;
|
|
55
|
+
countryShort: string;
|
|
56
|
+
latitude: number;
|
|
57
|
+
longitude: number;
|
|
58
|
+
region: string;
|
|
59
|
+
timeZone: string;
|
|
60
|
+
zipCode: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
class Linkrunner {
|
|
64
|
+
private token: string | null;
|
|
65
|
+
|
|
66
|
+
constructor() {
|
|
67
|
+
this.token = null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async init(token: string): Promise<void | Response> {
|
|
71
|
+
if (!token) {
|
|
72
|
+
console.error('Linkrunner needs your project token to initialize!');
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
this.token = token;
|
|
77
|
+
try {
|
|
78
|
+
const fetch_result = await fetch(baseUrl + '/api/client/init', {
|
|
79
|
+
method: 'POST',
|
|
80
|
+
headers: {
|
|
81
|
+
'Accept': 'application/json',
|
|
82
|
+
'Content-Type': 'application/json',
|
|
83
|
+
},
|
|
84
|
+
body: JSON.stringify({
|
|
85
|
+
token,
|
|
86
|
+
package_version,
|
|
87
|
+
app_version,
|
|
88
|
+
device_data,
|
|
89
|
+
platform: 'REACT_NATIVE',
|
|
90
|
+
}),
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
const result = await fetch_result.json();
|
|
94
|
+
|
|
95
|
+
// if (!result) throw new Error('No response obtained!');
|
|
58
96
|
|
|
59
97
|
if (result?.status !== 200 && result?.status !== 201) {
|
|
60
98
|
throw new Error(result?.msg);
|
|
61
99
|
}
|
|
62
100
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
.catch((err) => {
|
|
67
|
-
console.error('Error initializing linkrunner: ', err.message);
|
|
68
|
-
});
|
|
69
|
-
};
|
|
101
|
+
if (__DEV__) {
|
|
102
|
+
console.log('Linkrunner initialised successfully 🔥');
|
|
103
|
+
}
|
|
70
104
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
};
|
|
105
|
+
return result?.data;
|
|
106
|
+
} catch (error) {
|
|
107
|
+
console.error('Error initializing linkrunner');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
77
110
|
|
|
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
|
-
|
|
111
|
+
async trigger({
|
|
112
|
+
data,
|
|
113
|
+
user_data,
|
|
114
|
+
config,
|
|
115
|
+
}: {
|
|
116
|
+
config?: TriggerConfig;
|
|
117
|
+
data: any;
|
|
118
|
+
user_data: UserData;
|
|
119
|
+
}): Promise<void | Response> {
|
|
120
|
+
if (!this.token) {
|
|
121
|
+
console.error('Linkrunner: Trigger failed, token not initialized');
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
try {
|
|
126
|
+
const response = await fetch(baseUrl + '/api/client/trigger', {
|
|
127
|
+
method: 'POST',
|
|
128
|
+
headers: {
|
|
129
|
+
'Accept': 'application/json',
|
|
130
|
+
'Content-Type': 'application/json',
|
|
131
|
+
},
|
|
132
|
+
body: JSON.stringify({
|
|
133
|
+
token: this.token,
|
|
134
|
+
user_data,
|
|
135
|
+
platform: 'REACT_NATIVE',
|
|
136
|
+
data: {
|
|
137
|
+
...data,
|
|
138
|
+
device_data,
|
|
139
|
+
},
|
|
140
|
+
}),
|
|
141
|
+
});
|
|
142
|
+
const result = await response.json();
|
|
106
143
|
|
|
107
144
|
if (result?.status !== 200 && result?.status !== 201) {
|
|
108
145
|
console.error('Linkrunner: Trigger failed');
|
|
109
146
|
console.error('Linkrunner: ', result?.msg);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (
|
|
151
|
+
result?.data?.deeplink &&
|
|
152
|
+
config?.trigger_deeplink !== false &&
|
|
153
|
+
result?.data?.trigger
|
|
154
|
+
) {
|
|
155
|
+
if (__DEV__) {
|
|
156
|
+
console.log('Triggering deeplink > ', result?.data?.deeplink);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
Linking.openURL(result?.data?.deeplink).then(() => {
|
|
160
|
+
fetch(baseUrl + '/api/client/deeplink-triggered', {
|
|
161
|
+
method: 'POST',
|
|
162
|
+
headers: {
|
|
163
|
+
'Accept': 'application/json',
|
|
164
|
+
'Content-Type': 'application/json',
|
|
165
|
+
},
|
|
166
|
+
body: JSON.stringify({
|
|
167
|
+
token: this.token,
|
|
168
|
+
}),
|
|
169
|
+
})
|
|
170
|
+
.then((res) => res.json())
|
|
171
|
+
.catch(() => {});
|
|
172
|
+
});
|
|
110
173
|
}
|
|
111
174
|
|
|
112
|
-
if (
|
|
113
|
-
|
|
175
|
+
if (__DEV__) {
|
|
176
|
+
console.log('Linkrunner: Trigger called 🔥');
|
|
114
177
|
}
|
|
115
178
|
|
|
116
|
-
|
|
117
|
-
})
|
|
118
|
-
.catch((err) => {
|
|
179
|
+
return result.data;
|
|
180
|
+
} catch (err: any) {
|
|
119
181
|
console.error('Linkrunner: Trigger failed');
|
|
120
|
-
console.error('Linkrunner: ', err
|
|
121
|
-
}
|
|
122
|
-
}
|
|
182
|
+
console.error('Linkrunner: ', err.message);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
123
186
|
|
|
124
|
-
const linkrunner =
|
|
125
|
-
init,
|
|
126
|
-
trigger,
|
|
127
|
-
};
|
|
187
|
+
const linkrunner = new Linkrunner();
|
|
128
188
|
|
|
129
189
|
export default linkrunner;
|