rn-linkrunner 0.5.2 → 0.6.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 +49 -5
- package/lib/commonjs/helper.js +77 -0
- package/lib/commonjs/helper.js.map +1 -0
- package/lib/commonjs/index.js +138 -57
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/helper.js +67 -0
- package/lib/module/helper.js.map +1 -0
- package/lib/module/index.js +137 -55
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/helper.d.ts +4 -0
- package/lib/typescript/helper.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +17 -28
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +27 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +5 -2
- package/src/helper.ts +92 -0
- package/src/index.ts +177 -88
- package/src/types.ts +29 -0
package/lib/module/index.js
CHANGED
|
@@ -1,29 +1,41 @@
|
|
|
1
1
|
import { Linking } from 'react-native';
|
|
2
|
-
import DeviceInfo
|
|
3
|
-
|
|
2
|
+
import DeviceInfo from 'react-native-device-info';
|
|
3
|
+
import { device_data, getLinkRunnerInstallInstanceId } from './helper';
|
|
4
|
+
const package_version = '0.6.1';
|
|
4
5
|
const app_version = DeviceInfo.getVersion();
|
|
5
|
-
const device_data = {
|
|
6
|
-
android_id: DeviceInfo.getAndroidId(),
|
|
7
|
-
api_level: DeviceInfo.getApiLevel(),
|
|
8
|
-
application_name: DeviceInfo.getApplicationName(),
|
|
9
|
-
base_os: DeviceInfo.getBaseOs(),
|
|
10
|
-
build_id: DeviceInfo.getBuildId(),
|
|
11
|
-
brand: DeviceInfo.getBrand(),
|
|
12
|
-
build_number: DeviceInfo.getBuildNumber(),
|
|
13
|
-
bundle_id: DeviceInfo.getBundleId(),
|
|
14
|
-
carrier: DeviceInfo.getCarrier(),
|
|
15
|
-
device: DeviceInfo.getDevice(),
|
|
16
|
-
device_id: DeviceInfo.getDeviceId(),
|
|
17
|
-
device_type: DeviceInfo.getDeviceType(),
|
|
18
|
-
device_name: DeviceInfo.getDeviceName(),
|
|
19
|
-
device_token: DeviceInfo.getDeviceToken(),
|
|
20
|
-
device_ip: DeviceInfo.getIpAddress(),
|
|
21
|
-
install_ref: DeviceInfo.getInstallReferrer(),
|
|
22
|
-
manufacturer: getManufacturer(),
|
|
23
|
-
system_version: getSystemVersion(),
|
|
24
|
-
version: DeviceInfo.getVersion()
|
|
25
|
-
};
|
|
26
6
|
const baseUrl = 'https://api.linkrunner.io';
|
|
7
|
+
const initApiCall = async (token, source, link) => {
|
|
8
|
+
try {
|
|
9
|
+
const fetch_result = await fetch(baseUrl + '/api/client/init', {
|
|
10
|
+
method: 'POST',
|
|
11
|
+
headers: {
|
|
12
|
+
'Accept': 'application/json',
|
|
13
|
+
'Content-Type': 'application/json'
|
|
14
|
+
},
|
|
15
|
+
body: JSON.stringify({
|
|
16
|
+
token,
|
|
17
|
+
package_version,
|
|
18
|
+
app_version,
|
|
19
|
+
device_data: await device_data(),
|
|
20
|
+
platform: 'REACT_NATIVE',
|
|
21
|
+
source,
|
|
22
|
+
link,
|
|
23
|
+
install_instance_id: await getLinkRunnerInstallInstanceId()
|
|
24
|
+
})
|
|
25
|
+
});
|
|
26
|
+
const result = await fetch_result.json();
|
|
27
|
+
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
28
|
+
throw new Error(result === null || result === void 0 ? void 0 : result.msg);
|
|
29
|
+
}
|
|
30
|
+
if (__DEV__) {
|
|
31
|
+
console.log('Linkrunner initialised successfully 🔥');
|
|
32
|
+
console.log('init response > ', result);
|
|
33
|
+
}
|
|
34
|
+
return result === null || result === void 0 ? void 0 : result.data;
|
|
35
|
+
} catch (error) {
|
|
36
|
+
console.error('Error initializing linkrunner', error);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
27
39
|
class Linkrunner {
|
|
28
40
|
constructor() {
|
|
29
41
|
this.token = null;
|
|
@@ -34,35 +46,7 @@ class Linkrunner {
|
|
|
34
46
|
return;
|
|
35
47
|
}
|
|
36
48
|
this.token = token;
|
|
37
|
-
|
|
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);
|
|
58
|
-
}
|
|
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');
|
|
65
|
-
}
|
|
49
|
+
return await initApiCall(token, 'GENERAL');
|
|
66
50
|
}
|
|
67
51
|
async trigger({
|
|
68
52
|
data,
|
|
@@ -87,8 +71,9 @@ class Linkrunner {
|
|
|
87
71
|
platform: 'REACT_NATIVE',
|
|
88
72
|
data: {
|
|
89
73
|
...data,
|
|
90
|
-
device_data
|
|
91
|
-
}
|
|
74
|
+
device_data: await device_data()
|
|
75
|
+
},
|
|
76
|
+
install_instance_id: await getLinkRunnerInstallInstanceId()
|
|
92
77
|
})
|
|
93
78
|
});
|
|
94
79
|
const result = await response.json();
|
|
@@ -113,7 +98,12 @@ class Linkrunner {
|
|
|
113
98
|
body: JSON.stringify({
|
|
114
99
|
token: this.token
|
|
115
100
|
})
|
|
116
|
-
}).then(
|
|
101
|
+
}).then(() => {
|
|
102
|
+
if (__DEV__) {
|
|
103
|
+
var _result$data5;
|
|
104
|
+
console.log('Linkrunner: Deeplink triggered successfully', result === null || result === void 0 || (_result$data5 = result.data) === null || _result$data5 === void 0 ? void 0 : _result$data5.deeplink);
|
|
105
|
+
}
|
|
106
|
+
}).catch(() => {});
|
|
117
107
|
});
|
|
118
108
|
}
|
|
119
109
|
if (__DEV__) {
|
|
@@ -125,6 +115,98 @@ class Linkrunner {
|
|
|
125
115
|
console.error('Linkrunner: ', err.message);
|
|
126
116
|
}
|
|
127
117
|
}
|
|
118
|
+
async capturePayment({
|
|
119
|
+
amount,
|
|
120
|
+
userId,
|
|
121
|
+
paymentId
|
|
122
|
+
}) {
|
|
123
|
+
if (!this.token) {
|
|
124
|
+
console.error('Linkrunner: Capture payment failed, token not initialized');
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
const response = await fetch(baseUrl + '/api/client/capture-payment', {
|
|
129
|
+
method: 'POST',
|
|
130
|
+
headers: {
|
|
131
|
+
'Accept': 'application/json',
|
|
132
|
+
'Content-Type': 'application/json'
|
|
133
|
+
},
|
|
134
|
+
body: JSON.stringify({
|
|
135
|
+
token: this.token,
|
|
136
|
+
user_id: userId,
|
|
137
|
+
platform: 'REACT_NATIVE',
|
|
138
|
+
data: {
|
|
139
|
+
device_data: await device_data()
|
|
140
|
+
},
|
|
141
|
+
amount,
|
|
142
|
+
payment_id: paymentId,
|
|
143
|
+
install_instance_id: await getLinkRunnerInstallInstanceId()
|
|
144
|
+
})
|
|
145
|
+
});
|
|
146
|
+
const result = await response.json();
|
|
147
|
+
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
148
|
+
console.error('Linkrunner: Capture payment failed');
|
|
149
|
+
console.error('Linkrunner: ', result === null || result === void 0 ? void 0 : result.msg);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (__DEV__) {
|
|
153
|
+
console.log('Linkrunner: Payment captured successfully 💸', {
|
|
154
|
+
amount,
|
|
155
|
+
paymentId,
|
|
156
|
+
userId
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
} catch (error) {
|
|
160
|
+
console.error('Linkrunner: Payment capturing failed!');
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async removePayment({
|
|
165
|
+
userId,
|
|
166
|
+
paymentId
|
|
167
|
+
}) {
|
|
168
|
+
if (!this.token) {
|
|
169
|
+
console.error('Linkrunner: Remove payment failed, token not initialized');
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (!paymentId && !userId) {
|
|
173
|
+
return console.error('Linkrunner: Either paymentId or userId must be provided!');
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
const response = await fetch(baseUrl + '/api/client/remove-captured-payment', {
|
|
177
|
+
method: 'POST',
|
|
178
|
+
headers: {
|
|
179
|
+
'Accept': 'application/json',
|
|
180
|
+
'Content-Type': 'application/json'
|
|
181
|
+
},
|
|
182
|
+
body: JSON.stringify({
|
|
183
|
+
token: this.token,
|
|
184
|
+
user_id: userId,
|
|
185
|
+
platform: 'REACT_NATIVE',
|
|
186
|
+
data: {
|
|
187
|
+
device_data: await device_data()
|
|
188
|
+
},
|
|
189
|
+
payment_id: paymentId,
|
|
190
|
+
install_instance_id: await getLinkRunnerInstallInstanceId()
|
|
191
|
+
})
|
|
192
|
+
});
|
|
193
|
+
const result = await response.json();
|
|
194
|
+
if ((result === null || result === void 0 ? void 0 : result.status) !== 200 && (result === null || result === void 0 ? void 0 : result.status) !== 201) {
|
|
195
|
+
console.error('Linkrunner: Capture payment failed');
|
|
196
|
+
console.error('Linkrunner: ', result === null || result === void 0 ? void 0 : result.msg);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (__DEV__) {
|
|
200
|
+
console.log('Linkrunner: Payment entry removed successfully!', {
|
|
201
|
+
paymentId,
|
|
202
|
+
userId
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
} catch (error) {
|
|
206
|
+
console.error('Linkrunner: Payment capturing failed!');
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
128
210
|
}
|
|
129
211
|
const linkrunner = new Linkrunner();
|
|
130
212
|
export default linkrunner;
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Linking","DeviceInfo","
|
|
1
|
+
{"version":3,"names":["Linking","DeviceInfo","device_data","getLinkRunnerInstallInstanceId","package_version","app_version","getVersion","baseUrl","initApiCall","token","source","link","fetch_result","fetch","method","headers","body","JSON","stringify","platform","install_instance_id","result","json","status","Error","msg","__DEV__","console","log","data","error","Linkrunner","constructor","init","trigger","user_data","config","_result$data","_result$data2","response","deeplink","trigger_deeplink","_result$data4","_result$data3","openURL","then","_result$data5","catch","err","message","capturePayment","amount","userId","paymentId","user_id","payment_id","removePayment","linkrunner"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,OAAO,QAAQ,cAAc;AACtC,OAAOC,UAAU,MAAM,0BAA0B;AACjD,SAASC,WAAW,EAAEC,8BAA8B,QAAQ,UAAU;AAGtE,MAAMC,eAAe,GAAG,OAAO;AAC/B,MAAMC,WAAmB,GAAGJ,UAAU,CAACK,UAAU,CAAC,CAAC;AAEnD,MAAMC,OAAO,GAAG,2BAA2B;AAE3C,MAAMC,WAAW,GAAG,MAAAA,CAClBC,KAAa,EACbC,MAAyB,EACzBC,IAAa,KACV;EACH,IAAI;IACF,MAAMC,YAAY,GAAG,MAAMC,KAAK,CAACN,OAAO,GAAG,kBAAkB,EAAE;MAC7DO,MAAM,EAAE,MAAM;MACdC,OAAO,EAAE;QACP,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EAAE;MAClB,CAAC;MACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;QACnBT,KAAK;QACLL,eAAe;QACfC,WAAW;QACXH,WAAW,EAAE,MAAMA,WAAW,CAAC,CAAC;QAChCiB,QAAQ,EAAE,cAAc;QACxBT,MAAM;QACNC,IAAI;QACJS,mBAAmB,EAAE,MAAMjB,8BAA8B,CAAC;MAC5D,CAAC;IACH,CAAC,CAAC;IAEF,MAAMkB,MAAM,GAAG,MAAMT,YAAY,CAACU,IAAI,CAAC,CAAC;IAExC,IAAI,CAAAD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,MAAM,MAAK,GAAG,IAAI,CAAAF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,MAAM,MAAK,GAAG,EAAE;MACpD,MAAM,IAAIC,KAAK,CAACH,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEI,GAAG,CAAC;IAC9B;IAEA,IAAIC,OAAO,EAAE;MACXC,OAAO,CAACC,GAAG,CAAC,wCAAwC,CAAC;MAErDD,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEP,MAAM,CAAC;IACzC;IAEA,OAAOA,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEQ,IAAI;EACrB,CAAC,CAAC,OAAOC,KAAK,EAAE;IACdH,OAAO,CAACG,KAAK,CAAC,+BAA+B,EAAEA,KAAK,CAAC;EACvD;AACF,CAAC;AAED,MAAMC,UAAU,CAAC;EAGfC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACvB,KAAK,GAAG,IAAI;EACnB;EAEA,MAAMwB,IAAIA,CAACxB,KAAa,EAAkC;IACxD,IAAI,CAACA,KAAK,EAAE;MACVkB,OAAO,CAACG,KAAK,CAAC,oDAAoD,CAAC;MACnE;IACF;IAEA,IAAI,CAACrB,KAAK,GAAGA,KAAK;IAElB,OAAO,MAAMD,WAAW,CAACC,KAAK,EAAE,SAAS,CAAC;EAC5C;EAEA,MAAMyB,OAAOA,CAAC;IACZL,IAAI;IACJM,SAAS;IACTC;EAKF,CAAC,EAAqC;IACpC,IAAI,CAAC,IAAI,CAAC3B,KAAK,EAAE;MACfkB,OAAO,CAACG,KAAK,CAAC,mDAAmD,CAAC;MAClE;IACF;IAEA,IAAI;MAAA,IAAAO,YAAA,EAAAC,aAAA;MACF,MAAMC,QAAQ,GAAG,MAAM1B,KAAK,CAACN,OAAO,GAAG,qBAAqB,EAAE;QAC5DO,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE;UACP,QAAQ,EAAE,kBAAkB;UAC5B,cAAc,EAAE;QAClB,CAAC;QACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;UACnBT,KAAK,EAAE,IAAI,CAACA,KAAK;UACjB0B,SAAS;UACThB,QAAQ,EAAE,cAAc;UACxBU,IAAI,EAAE;YACJ,GAAGA,IAAI;YACP3B,WAAW,EAAE,MAAMA,WAAW,CAAC;UACjC,CAAC;UACDkB,mBAAmB,EAAE,MAAMjB,8BAA8B,CAAC;QAC5D,CAAC;MACH,CAAC,CAAC;MACF,MAAMkB,MAAM,GAAG,MAAMkB,QAAQ,CAACjB,IAAI,CAAC,CAAC;MAEpC,IAAI,CAAAD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,MAAM,MAAK,GAAG,IAAI,CAAAF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,MAAM,MAAK,GAAG,EAAE;QACpDI,OAAO,CAACG,KAAK,CAAC,4BAA4B,CAAC;QAC3CH,OAAO,CAACG,KAAK,CAAC,cAAc,EAAET,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEI,GAAG,CAAC;QAC1C;MACF;MAEA,IACEJ,MAAM,aAANA,MAAM,gBAAAgB,YAAA,GAANhB,MAAM,CAAEQ,IAAI,cAAAQ,YAAA,eAAZA,YAAA,CAAcG,QAAQ,IACtB,CAAAJ,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEK,gBAAgB,MAAK,KAAK,IAClCpB,MAAM,aAANA,MAAM,gBAAAiB,aAAA,GAANjB,MAAM,CAAEQ,IAAI,cAAAS,aAAA,eAAZA,aAAA,CAAcJ,OAAO,EACrB;QAAA,IAAAQ,aAAA;QACA,IAAIhB,OAAO,EAAE;UAAA,IAAAiB,aAAA;UACXhB,OAAO,CAACC,GAAG,CAAC,wBAAwB,EAAEP,MAAM,aAANA,MAAM,gBAAAsB,aAAA,GAANtB,MAAM,CAAEQ,IAAI,cAAAc,aAAA,uBAAZA,aAAA,CAAcH,QAAQ,CAAC;QAC/D;QAEAxC,OAAO,CAAC4C,OAAO,CAACvB,MAAM,aAANA,MAAM,gBAAAqB,aAAA,GAANrB,MAAM,CAAEQ,IAAI,cAAAa,aAAA,uBAAZA,aAAA,CAAcF,QAAQ,CAAC,CAACK,IAAI,CAAC,MAAM;UACjDhC,KAAK,CAACN,OAAO,GAAG,gCAAgC,EAAE;YAChDO,MAAM,EAAE,MAAM;YACdC,OAAO,EAAE;cACP,QAAQ,EAAE,kBAAkB;cAC5B,cAAc,EAAE;YAClB,CAAC;YACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;cACnBT,KAAK,EAAE,IAAI,CAACA;YACd,CAAC;UACH,CAAC,CAAC,CACCoC,IAAI,CAAC,MAAM;YACV,IAAInB,OAAO,EAAE;cAAA,IAAAoB,aAAA;cACXnB,OAAO,CAACC,GAAG,CACT,6CAA6C,EAC7CP,MAAM,aAANA,MAAM,gBAAAyB,aAAA,GAANzB,MAAM,CAAEQ,IAAI,cAAAiB,aAAA,uBAAZA,aAAA,CAAcN,QAChB,CAAC;YACH;UACF,CAAC,CAAC,CACDO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC;MACJ;MAEA,IAAIrB,OAAO,EAAE;QACXC,OAAO,CAACC,GAAG,CAAC,+BAA+B,CAAC;MAC9C;MAEA,OAAOP,MAAM,CAACQ,IAAI;IACpB,CAAC,CAAC,OAAOmB,GAAQ,EAAE;MACjBrB,OAAO,CAACG,KAAK,CAAC,4BAA4B,CAAC;MAC3CH,OAAO,CAACG,KAAK,CAAC,cAAc,EAAEkB,GAAG,CAACC,OAAO,CAAC;IAC5C;EACF;EAEA,MAAMC,cAAcA,CAAC;IACnBC,MAAM;IACNC,MAAM;IACNC;EAKF,CAAC,EAAE;IACD,IAAI,CAAC,IAAI,CAAC5C,KAAK,EAAE;MACfkB,OAAO,CAACG,KAAK,CACX,2DACF,CAAC;MACD;IACF;IAEA,IAAI;MACF,MAAMS,QAAQ,GAAG,MAAM1B,KAAK,CAACN,OAAO,GAAG,6BAA6B,EAAE;QACpEO,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE;UACP,QAAQ,EAAE,kBAAkB;UAC5B,cAAc,EAAE;QAClB,CAAC;QACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;UACnBT,KAAK,EAAE,IAAI,CAACA,KAAK;UACjB6C,OAAO,EAAEF,MAAM;UACfjC,QAAQ,EAAE,cAAc;UACxBU,IAAI,EAAE;YACJ3B,WAAW,EAAE,MAAMA,WAAW,CAAC;UACjC,CAAC;UACDiD,MAAM;UACNI,UAAU,EAAEF,SAAS;UACrBjC,mBAAmB,EAAE,MAAMjB,8BAA8B,CAAC;QAC5D,CAAC;MACH,CAAC,CAAC;MAEF,MAAMkB,MAAM,GAAG,MAAMkB,QAAQ,CAACjB,IAAI,CAAC,CAAC;MAEpC,IAAI,CAAAD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,MAAM,MAAK,GAAG,IAAI,CAAAF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,MAAM,MAAK,GAAG,EAAE;QACpDI,OAAO,CAACG,KAAK,CAAC,oCAAoC,CAAC;QACnDH,OAAO,CAACG,KAAK,CAAC,cAAc,EAAET,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEI,GAAG,CAAC;QAC1C;MACF;MAEA,IAAIC,OAAO,EAAE;QACXC,OAAO,CAACC,GAAG,CAAC,8CAA8C,EAAE;UAC1DuB,MAAM;UACNE,SAAS;UACTD;QACF,CAAC,CAAC;MACJ;IACF,CAAC,CAAC,OAAOtB,KAAK,EAAE;MACdH,OAAO,CAACG,KAAK,CAAC,uCAAuC,CAAC;MACtD;IACF;EACF;EAEA,MAAM0B,aAAaA,CAAC;IAClBJ,MAAM;IACNC;EAIF,CAAC,EAAE;IACD,IAAI,CAAC,IAAI,CAAC5C,KAAK,EAAE;MACfkB,OAAO,CAACG,KAAK,CAAC,0DAA0D,CAAC;MACzE;IACF;IAEA,IAAI,CAACuB,SAAS,IAAI,CAACD,MAAM,EAAE;MACzB,OAAOzB,OAAO,CAACG,KAAK,CAClB,0DACF,CAAC;IACH;IAEA,IAAI;MACF,MAAMS,QAAQ,GAAG,MAAM1B,KAAK,CAC1BN,OAAO,GAAG,qCAAqC,EAC/C;QACEO,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE;UACP,QAAQ,EAAE,kBAAkB;UAC5B,cAAc,EAAE;QAClB,CAAC;QACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;UACnBT,KAAK,EAAE,IAAI,CAACA,KAAK;UACjB6C,OAAO,EAAEF,MAAM;UACfjC,QAAQ,EAAE,cAAc;UACxBU,IAAI,EAAE;YACJ3B,WAAW,EAAE,MAAMA,WAAW,CAAC;UACjC,CAAC;UACDqD,UAAU,EAAEF,SAAS;UACrBjC,mBAAmB,EAAE,MAAMjB,8BAA8B,CAAC;QAC5D,CAAC;MACH,CACF,CAAC;MAED,MAAMkB,MAAM,GAAG,MAAMkB,QAAQ,CAACjB,IAAI,CAAC,CAAC;MAEpC,IAAI,CAAAD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,MAAM,MAAK,GAAG,IAAI,CAAAF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,MAAM,MAAK,GAAG,EAAE;QACpDI,OAAO,CAACG,KAAK,CAAC,oCAAoC,CAAC;QACnDH,OAAO,CAACG,KAAK,CAAC,cAAc,EAAET,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEI,GAAG,CAAC;QAC1C;MACF;MAEA,IAAIC,OAAO,EAAE;QACXC,OAAO,CAACC,GAAG,CAAC,iDAAiD,EAAE;UAC7DyB,SAAS;UACTD;QACF,CAAC,CAAC;MACJ;IACF,CAAC,CAAC,OAAOtB,KAAK,EAAE;MACdH,OAAO,CAACG,KAAK,CAAC,uCAAuC,CAAC;MACtD;IACF;EACF;AACF;AAEA,MAAM2B,UAAU,GAAG,IAAI1B,UAAU,CAAC,CAAC;AAMnC,eAAe0B,UAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,WAAW,QAAa,QAAQ,OAAO,MAAM,EAAE,GAAG,CAAC,CAgDxD,CAAC;AAKF,iBAAe,8BAA8B,IAAI,OAAO,CAAC,MAAM,CAAC,CAgB/D;AAWD,OAAO,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC"}
|
|
@@ -1,38 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
id: string;
|
|
3
|
-
name?: string;
|
|
4
|
-
phone?: string;
|
|
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;
|
|
14
|
-
};
|
|
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
|
-
}
|
|
1
|
+
import type { TriggerConfig, UserData } from './types';
|
|
26
2
|
declare class Linkrunner {
|
|
27
3
|
private token;
|
|
28
4
|
constructor();
|
|
29
|
-
init(token: string): Promise<void |
|
|
5
|
+
init(token: string): Promise<void | LRInitResponse>;
|
|
30
6
|
trigger({ data, user_data, config, }: {
|
|
31
7
|
config?: TriggerConfig;
|
|
32
|
-
data
|
|
8
|
+
data?: {
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
};
|
|
33
11
|
user_data: UserData;
|
|
34
|
-
}): Promise<void |
|
|
12
|
+
}): Promise<void | LRTriggerResponse>;
|
|
13
|
+
capturePayment({ amount, userId, paymentId, }: {
|
|
14
|
+
paymentId?: string;
|
|
15
|
+
userId: string;
|
|
16
|
+
amount: number;
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
removePayment({ userId, paymentId, }: {
|
|
19
|
+
paymentId?: string;
|
|
20
|
+
userId: string;
|
|
21
|
+
}): Promise<void>;
|
|
35
22
|
}
|
|
36
23
|
declare const linkrunner: Linkrunner;
|
|
24
|
+
export type LRInitResponse = Response;
|
|
25
|
+
export type LRTriggerResponse = Response;
|
|
37
26
|
export default linkrunner;
|
|
38
27
|
//# 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":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAiDvD,cAAM,UAAU;IACd,OAAO,CAAC,KAAK,CAAgB;;IAMvB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC;IAWnD,OAAO,CAAC,EACZ,IAAI,EACJ,SAAS,EACT,MAAM,GACP,EAAE;QACD,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,IAAI,CAAC,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;QAC9B,SAAS,EAAE,QAAQ,CAAC;KACrB,GAAG,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAC;IA2E/B,cAAc,CAAC,EACnB,MAAM,EACN,MAAM,EACN,SAAS,GACV,EAAE;QACD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB;IAiDK,aAAa,CAAC,EAClB,MAAM,EACN,SAAS,GACV,EAAE;QACD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB;CAqDF;AAED,QAAA,MAAM,UAAU,YAAmB,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEzC,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface LRIPLocationData {
|
|
2
|
+
ip: string;
|
|
3
|
+
city: string;
|
|
4
|
+
countryLong: string;
|
|
5
|
+
countryShort: string;
|
|
6
|
+
latitude: number;
|
|
7
|
+
longitude: number;
|
|
8
|
+
region: string;
|
|
9
|
+
timeZone: string;
|
|
10
|
+
zipCode: string;
|
|
11
|
+
}
|
|
12
|
+
export interface UserData {
|
|
13
|
+
id: string;
|
|
14
|
+
name?: string;
|
|
15
|
+
phone?: string;
|
|
16
|
+
email?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface TriggerConfig {
|
|
19
|
+
trigger_deeplink?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export type Response = {
|
|
22
|
+
ip_location_data: LRIPLocationData;
|
|
23
|
+
deeplink: string;
|
|
24
|
+
root_domain: boolean;
|
|
25
|
+
trigger?: boolean;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,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,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rn-linkrunner",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "React Native Package for linkrunner",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -138,6 +138,9 @@
|
|
|
138
138
|
]
|
|
139
139
|
},
|
|
140
140
|
"dependencies": {
|
|
141
|
-
"react-native-
|
|
141
|
+
"@react-native-async-storage/async-storage": "^2.0.0",
|
|
142
|
+
"@react-native-community/netinfo": "^11.3.2",
|
|
143
|
+
"react-native-device-info": "^10.12.0",
|
|
144
|
+
"react-native-play-install-referrer": "^1.1.8"
|
|
142
145
|
}
|
|
143
146
|
}
|
package/src/helper.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import DeviceInfo, {
|
|
2
|
+
getManufacturer,
|
|
3
|
+
getSystemVersion,
|
|
4
|
+
} from 'react-native-device-info';
|
|
5
|
+
import { fetch as netinfoFetch } from '@react-native-community/netinfo';
|
|
6
|
+
import {
|
|
7
|
+
PlayInstallReferrer,
|
|
8
|
+
type PlayInstallReferrerInfo,
|
|
9
|
+
} from 'react-native-play-install-referrer';
|
|
10
|
+
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
11
|
+
|
|
12
|
+
const device_data = async (): Promise<Record<string, any>> => {
|
|
13
|
+
const getInstallReferrerInfo = (): Promise<PlayInstallReferrerInfo | {}> => {
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
PlayInstallReferrer.getInstallReferrerInfo(
|
|
16
|
+
(installReferrerInfo, error) => {
|
|
17
|
+
if (!error && !!installReferrerInfo) {
|
|
18
|
+
resolve(installReferrerInfo);
|
|
19
|
+
} else {
|
|
20
|
+
resolve({});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const [installReferrerInfo, connectivity, manufacturer, systemVersion] =
|
|
28
|
+
await Promise.all([
|
|
29
|
+
getInstallReferrerInfo(),
|
|
30
|
+
netinfoFetch(),
|
|
31
|
+
getManufacturer(),
|
|
32
|
+
getSystemVersion(),
|
|
33
|
+
]);
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
android_id: DeviceInfo.getAndroidId(),
|
|
37
|
+
api_level: DeviceInfo.getApiLevel(),
|
|
38
|
+
application_name: DeviceInfo.getApplicationName(),
|
|
39
|
+
base_os: DeviceInfo.getBaseOs(),
|
|
40
|
+
build_id: DeviceInfo.getBuildId(),
|
|
41
|
+
brand: DeviceInfo.getBrand(),
|
|
42
|
+
build_number: DeviceInfo.getBuildNumber(),
|
|
43
|
+
bundle_id: DeviceInfo.getBundleId(),
|
|
44
|
+
carrier: [DeviceInfo.getCarrier()],
|
|
45
|
+
device: DeviceInfo.getDevice(),
|
|
46
|
+
device_id: DeviceInfo.getDeviceId(),
|
|
47
|
+
device_display: DeviceInfo.getDisplay(),
|
|
48
|
+
device_type: DeviceInfo.getDeviceType(),
|
|
49
|
+
device_name: DeviceInfo.getDeviceName(),
|
|
50
|
+
device_token: DeviceInfo.getDeviceToken(),
|
|
51
|
+
device_ip: DeviceInfo.getIpAddress(),
|
|
52
|
+
install_ref: await DeviceInfo.getInstallReferrer(),
|
|
53
|
+
manufacturer,
|
|
54
|
+
system_version: systemVersion,
|
|
55
|
+
version: DeviceInfo.getVersion(),
|
|
56
|
+
connectivity: connectivity.type,
|
|
57
|
+
user_agent: DeviceInfo.getUserAgent(),
|
|
58
|
+
...installReferrerInfo,
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const STORAGE_KEY = 'linkrunner_install_instance_id';
|
|
63
|
+
const ID_LENGTH = 20;
|
|
64
|
+
|
|
65
|
+
async function getLinkRunnerInstallInstanceId(): Promise<string> {
|
|
66
|
+
try {
|
|
67
|
+
// Try to get the existing ID
|
|
68
|
+
let installInstanceId = await AsyncStorage.getItem(STORAGE_KEY);
|
|
69
|
+
|
|
70
|
+
// If the ID doesn't exist, generate a new one and store it
|
|
71
|
+
if (installInstanceId === null) {
|
|
72
|
+
installInstanceId = generateRandomString(ID_LENGTH);
|
|
73
|
+
await AsyncStorage.setItem(STORAGE_KEY, installInstanceId);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return installInstanceId;
|
|
77
|
+
} catch (error) {
|
|
78
|
+
console.error('Error accessing AsyncStorage:', error);
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function generateRandomString(length: number): string {
|
|
84
|
+
const chars =
|
|
85
|
+
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
86
|
+
return Array(length)
|
|
87
|
+
.fill(null)
|
|
88
|
+
.map(() => chars.charAt(Math.floor(Math.random() * chars.length)))
|
|
89
|
+
.join('');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export { device_data, getLinkRunnerInstallInstanceId };
|