rn-linkrunner 1.1.2 → 2.0.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/LinkrunnerSDK.podspec +23 -0
- package/README.md +10 -297
- package/android/build.gradle +148 -0
- package/android/gradle.properties +52 -0
- package/android/settings.gradle +6 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/java/io/linkrunner/LinkrunnerModule.kt +400 -0
- package/android/src/main/java/io/linkrunner/LinkrunnerPackage.kt +16 -0
- package/android/src/main/java/io/linkrunner/utils/MapUtils.kt +136 -0
- package/android/src/main/java/io/linkrunner/utils/ModelConverter.kt +226 -0
- package/ios/LinkrunnerSDK.h +5 -0
- package/ios/LinkrunnerSDK.m +31 -0
- package/ios/LinkrunnerSDK.swift +218 -0
- package/ios/Podfile +19 -0
- package/lib/commonjs/index.js +134 -271
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/index.js +134 -272
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/index.d.ts +8 -21
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +18 -14
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +2 -1
- package/react-native.config.js +18 -0
- package/src/index.ts +151 -337
- package/src/types.ts +19 -14
- package/lib/commonjs/helper.js +0 -147
- package/lib/commonjs/helper.js.map +0 -1
- package/lib/module/helper.js +0 -135
- package/lib/module/helper.js.map +0 -1
- package/lib/typescript/helper.d.ts +0 -6
- package/lib/typescript/helper.d.ts.map +0 -1
- package/src/helper.ts +0 -173
package/lib/commonjs/helper.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.device_data = void 0;
|
|
7
|
-
exports.getDeeplinkURL = getDeeplinkURL;
|
|
8
|
-
exports.getLinkRunnerInstallInstanceId = getLinkRunnerInstallInstanceId;
|
|
9
|
-
exports.setDeeplinkURL = setDeeplinkURL;
|
|
10
|
-
var _reactNativeDeviceInfo = _interopRequireWildcard(require("react-native-device-info"));
|
|
11
|
-
var _netinfo = require("@react-native-community/netinfo");
|
|
12
|
-
var _reactNativePlayInstallReferrer = require("react-native-play-install-referrer");
|
|
13
|
-
var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
|
|
14
|
-
var _reactNative = require("react-native");
|
|
15
|
-
var _reactNativeIdfaAaid = _interopRequireDefault(require("@sparkfabrik/react-native-idfa-aaid"));
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
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); }
|
|
18
|
-
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; }
|
|
19
|
-
const getInstallReferrerInfo = () => {
|
|
20
|
-
return new Promise(resolve => {
|
|
21
|
-
if (_reactNative.Platform.OS === 'ios') {
|
|
22
|
-
resolve({});
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Add a timeout to ensure the promise resolves even if the callback never fires
|
|
27
|
-
const timeoutId = setTimeout(() => {
|
|
28
|
-
resolve({});
|
|
29
|
-
}, 2000);
|
|
30
|
-
try {
|
|
31
|
-
_reactNativePlayInstallReferrer.PlayInstallReferrer.getInstallReferrerInfo((installReferrerInfo, error) => {
|
|
32
|
-
// Clear the timeout since callback fired
|
|
33
|
-
clearTimeout(timeoutId);
|
|
34
|
-
if (!error && !!installReferrerInfo) {
|
|
35
|
-
resolve(installReferrerInfo);
|
|
36
|
-
} else {
|
|
37
|
-
resolve({});
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
} catch (e) {
|
|
41
|
-
// Clear the timeout since we caught an exception
|
|
42
|
-
clearTimeout(timeoutId);
|
|
43
|
-
resolve({});
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
};
|
|
47
|
-
const getAdvertisingIdentifier = async () => {
|
|
48
|
-
try {
|
|
49
|
-
const identifier = await _reactNativeIdfaAaid.default.getAdvertisingInfo();
|
|
50
|
-
if (!identifier.isAdTrackingLimited && identifier.id) {
|
|
51
|
-
return identifier.id;
|
|
52
|
-
} else {
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
} catch (error) {
|
|
56
|
-
console.error('Error getting advertising identifier:', error);
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
const device_data = async () => {
|
|
61
|
-
try {
|
|
62
|
-
const [installReferrerInfo, connectivity, manufacturer, systemVersion] = await Promise.all([getInstallReferrerInfo(), (0, _netinfo.fetch)(), (0, _reactNativeDeviceInfo.getManufacturer)(), (0, _reactNativeDeviceInfo.getSystemVersion)()]);
|
|
63
|
-
|
|
64
|
-
// Helper function to safely get device info with fallback
|
|
65
|
-
const safeGet = async (getter, fallback = null) => {
|
|
66
|
-
try {
|
|
67
|
-
return await getter();
|
|
68
|
-
} catch (error) {
|
|
69
|
-
console.warn(`DeviceInfo error: ${error}`);
|
|
70
|
-
return fallback;
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
return {
|
|
74
|
-
android_id: await safeGet(_reactNativeDeviceInfo.default.getAndroidId),
|
|
75
|
-
api_level: await safeGet(_reactNativeDeviceInfo.default.getApiLevel),
|
|
76
|
-
application_name: await safeGet(_reactNativeDeviceInfo.default.getApplicationName),
|
|
77
|
-
base_os: await safeGet(_reactNativeDeviceInfo.default.getBaseOs),
|
|
78
|
-
build_id: await safeGet(_reactNativeDeviceInfo.default.getBuildId),
|
|
79
|
-
brand: await safeGet(_reactNativeDeviceInfo.default.getBrand),
|
|
80
|
-
build_number: await safeGet(_reactNativeDeviceInfo.default.getBuildNumber),
|
|
81
|
-
bundle_id: await safeGet(_reactNativeDeviceInfo.default.getBundleId),
|
|
82
|
-
carrier: [await safeGet(_reactNativeDeviceInfo.default.getCarrier)],
|
|
83
|
-
device: await safeGet(_reactNativeDeviceInfo.default.getDevice),
|
|
84
|
-
device_id: await safeGet(_reactNativeDeviceInfo.default.getDeviceId),
|
|
85
|
-
device_display: await safeGet(_reactNativeDeviceInfo.default.getDisplay),
|
|
86
|
-
device_type: await safeGet(_reactNativeDeviceInfo.default.getDeviceType),
|
|
87
|
-
device_name: await safeGet(_reactNativeDeviceInfo.default.getDeviceName),
|
|
88
|
-
device_token: await safeGet(_reactNativeDeviceInfo.default.getDeviceToken),
|
|
89
|
-
device_ip: await safeGet(_reactNativeDeviceInfo.default.getIpAddress),
|
|
90
|
-
install_ref: await safeGet(_reactNativeDeviceInfo.default.getInstallReferrer),
|
|
91
|
-
manufacturer,
|
|
92
|
-
system_version: systemVersion,
|
|
93
|
-
version: await safeGet(_reactNativeDeviceInfo.default.getVersion),
|
|
94
|
-
connectivity: connectivity.type,
|
|
95
|
-
user_agent: await safeGet(_reactNativeDeviceInfo.default.getUserAgent),
|
|
96
|
-
gaid: _reactNative.Platform.OS === 'android' ? await getAdvertisingIdentifier() : null,
|
|
97
|
-
idfa: _reactNative.Platform.OS === 'ios' ? await getAdvertisingIdentifier() : null,
|
|
98
|
-
idfv: _reactNative.Platform.OS === 'ios' ? await safeGet(_reactNativeDeviceInfo.default.getUniqueId) : null,
|
|
99
|
-
...installReferrerInfo
|
|
100
|
-
};
|
|
101
|
-
} catch (error) {
|
|
102
|
-
console.error('Error collecting device data:', error);
|
|
103
|
-
return {
|
|
104
|
-
error: 'Failed to collect device data'
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
exports.device_data = device_data;
|
|
109
|
-
const STORAGE_KEY = 'linkrunner_install_instance_id';
|
|
110
|
-
const ID_LENGTH = 20;
|
|
111
|
-
async function getLinkRunnerInstallInstanceId() {
|
|
112
|
-
try {
|
|
113
|
-
// Try to get the existing ID
|
|
114
|
-
let installInstanceId = await _asyncStorage.default.getItem(STORAGE_KEY);
|
|
115
|
-
|
|
116
|
-
// If the ID doesn't exist, generate a new one and store it
|
|
117
|
-
if (installInstanceId === null) {
|
|
118
|
-
installInstanceId = generateRandomString(ID_LENGTH);
|
|
119
|
-
await _asyncStorage.default.setItem(STORAGE_KEY, installInstanceId);
|
|
120
|
-
}
|
|
121
|
-
return installInstanceId;
|
|
122
|
-
} catch (error) {
|
|
123
|
-
console.error('Error accessing AsyncStorage:', error);
|
|
124
|
-
return 'ERROR_GENERAING_INSTALL_INSTANCE_ID';
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
function generateRandomString(length) {
|
|
128
|
-
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
129
|
-
return Array(length).fill(null).map(() => chars.charAt(Math.floor(Math.random() * chars.length))).join('');
|
|
130
|
-
}
|
|
131
|
-
const DEEPLINK_URL_STORAGE_KEY = 'linkrunner_deeplink_url';
|
|
132
|
-
async function setDeeplinkURL(deeplink_url) {
|
|
133
|
-
try {
|
|
134
|
-
await _asyncStorage.default.setItem(DEEPLINK_URL_STORAGE_KEY, deeplink_url);
|
|
135
|
-
} catch (error) {
|
|
136
|
-
console.error('Error setting deeplink URL:', error);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
async function getDeeplinkURL() {
|
|
140
|
-
try {
|
|
141
|
-
return await _asyncStorage.default.getItem(DEEPLINK_URL_STORAGE_KEY);
|
|
142
|
-
} catch (error) {
|
|
143
|
-
console.error('Error getting deeplink URL:', error);
|
|
144
|
-
return null;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=helper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeDeviceInfo","_interopRequireWildcard","require","_netinfo","_reactNativePlayInstallReferrer","_asyncStorage","_interopRequireDefault","_reactNative","_reactNativeIdfaAaid","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","getInstallReferrerInfo","Promise","resolve","Platform","OS","timeoutId","setTimeout","PlayInstallReferrer","installReferrerInfo","error","clearTimeout","getAdvertisingIdentifier","identifier","ReactNativeIdfaAaid","getAdvertisingInfo","isAdTrackingLimited","id","console","device_data","connectivity","manufacturer","systemVersion","all","netinfoFetch","getManufacturer","getSystemVersion","safeGet","getter","fallback","warn","android_id","DeviceInfo","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_display","getDisplay","device_type","getDeviceType","device_name","getDeviceName","device_token","getDeviceToken","device_ip","getIpAddress","install_ref","getInstallReferrer","system_version","version","getVersion","type","user_agent","getUserAgent","gaid","idfa","idfv","getUniqueId","exports","STORAGE_KEY","ID_LENGTH","getLinkRunnerInstallInstanceId","installInstanceId","AsyncStorage","getItem","generateRandomString","setItem","length","chars","Array","fill","map","charAt","Math","floor","random","join","DEEPLINK_URL_STORAGE_KEY","setDeeplinkURL","deeplink_url","getDeeplinkURL"],"sourceRoot":"../../src","sources":["helper.ts"],"mappings":"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"}
|
package/lib/module/helper.js
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import DeviceInfo, { getManufacturer, getSystemVersion } from 'react-native-device-info';
|
|
2
|
-
import { fetch as netinfoFetch } from '@react-native-community/netinfo';
|
|
3
|
-
import { PlayInstallReferrer } from 'react-native-play-install-referrer';
|
|
4
|
-
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
5
|
-
import { Platform } from 'react-native';
|
|
6
|
-
import ReactNativeIdfaAaid from '@sparkfabrik/react-native-idfa-aaid';
|
|
7
|
-
const getInstallReferrerInfo = () => {
|
|
8
|
-
return new Promise(resolve => {
|
|
9
|
-
if (Platform.OS === 'ios') {
|
|
10
|
-
resolve({});
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// Add a timeout to ensure the promise resolves even if the callback never fires
|
|
15
|
-
const timeoutId = setTimeout(() => {
|
|
16
|
-
resolve({});
|
|
17
|
-
}, 2000);
|
|
18
|
-
try {
|
|
19
|
-
PlayInstallReferrer.getInstallReferrerInfo((installReferrerInfo, error) => {
|
|
20
|
-
// Clear the timeout since callback fired
|
|
21
|
-
clearTimeout(timeoutId);
|
|
22
|
-
if (!error && !!installReferrerInfo) {
|
|
23
|
-
resolve(installReferrerInfo);
|
|
24
|
-
} else {
|
|
25
|
-
resolve({});
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
} catch (e) {
|
|
29
|
-
// Clear the timeout since we caught an exception
|
|
30
|
-
clearTimeout(timeoutId);
|
|
31
|
-
resolve({});
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
const getAdvertisingIdentifier = async () => {
|
|
36
|
-
try {
|
|
37
|
-
const identifier = await ReactNativeIdfaAaid.getAdvertisingInfo();
|
|
38
|
-
if (!identifier.isAdTrackingLimited && identifier.id) {
|
|
39
|
-
return identifier.id;
|
|
40
|
-
} else {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
} catch (error) {
|
|
44
|
-
console.error('Error getting advertising identifier:', error);
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
const device_data = async () => {
|
|
49
|
-
try {
|
|
50
|
-
const [installReferrerInfo, connectivity, manufacturer, systemVersion] = await Promise.all([getInstallReferrerInfo(), netinfoFetch(), getManufacturer(), getSystemVersion()]);
|
|
51
|
-
|
|
52
|
-
// Helper function to safely get device info with fallback
|
|
53
|
-
const safeGet = async (getter, fallback = null) => {
|
|
54
|
-
try {
|
|
55
|
-
return await getter();
|
|
56
|
-
} catch (error) {
|
|
57
|
-
console.warn(`DeviceInfo error: ${error}`);
|
|
58
|
-
return fallback;
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
return {
|
|
62
|
-
android_id: await safeGet(DeviceInfo.getAndroidId),
|
|
63
|
-
api_level: await safeGet(DeviceInfo.getApiLevel),
|
|
64
|
-
application_name: await safeGet(DeviceInfo.getApplicationName),
|
|
65
|
-
base_os: await safeGet(DeviceInfo.getBaseOs),
|
|
66
|
-
build_id: await safeGet(DeviceInfo.getBuildId),
|
|
67
|
-
brand: await safeGet(DeviceInfo.getBrand),
|
|
68
|
-
build_number: await safeGet(DeviceInfo.getBuildNumber),
|
|
69
|
-
bundle_id: await safeGet(DeviceInfo.getBundleId),
|
|
70
|
-
carrier: [await safeGet(DeviceInfo.getCarrier)],
|
|
71
|
-
device: await safeGet(DeviceInfo.getDevice),
|
|
72
|
-
device_id: await safeGet(DeviceInfo.getDeviceId),
|
|
73
|
-
device_display: await safeGet(DeviceInfo.getDisplay),
|
|
74
|
-
device_type: await safeGet(DeviceInfo.getDeviceType),
|
|
75
|
-
device_name: await safeGet(DeviceInfo.getDeviceName),
|
|
76
|
-
device_token: await safeGet(DeviceInfo.getDeviceToken),
|
|
77
|
-
device_ip: await safeGet(DeviceInfo.getIpAddress),
|
|
78
|
-
install_ref: await safeGet(DeviceInfo.getInstallReferrer),
|
|
79
|
-
manufacturer,
|
|
80
|
-
system_version: systemVersion,
|
|
81
|
-
version: await safeGet(DeviceInfo.getVersion),
|
|
82
|
-
connectivity: connectivity.type,
|
|
83
|
-
user_agent: await safeGet(DeviceInfo.getUserAgent),
|
|
84
|
-
gaid: Platform.OS === 'android' ? await getAdvertisingIdentifier() : null,
|
|
85
|
-
idfa: Platform.OS === 'ios' ? await getAdvertisingIdentifier() : null,
|
|
86
|
-
idfv: Platform.OS === 'ios' ? await safeGet(DeviceInfo.getUniqueId) : null,
|
|
87
|
-
...installReferrerInfo
|
|
88
|
-
};
|
|
89
|
-
} catch (error) {
|
|
90
|
-
console.error('Error collecting device data:', error);
|
|
91
|
-
return {
|
|
92
|
-
error: 'Failed to collect device data'
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
const STORAGE_KEY = 'linkrunner_install_instance_id';
|
|
97
|
-
const ID_LENGTH = 20;
|
|
98
|
-
async function getLinkRunnerInstallInstanceId() {
|
|
99
|
-
try {
|
|
100
|
-
// Try to get the existing ID
|
|
101
|
-
let installInstanceId = await AsyncStorage.getItem(STORAGE_KEY);
|
|
102
|
-
|
|
103
|
-
// If the ID doesn't exist, generate a new one and store it
|
|
104
|
-
if (installInstanceId === null) {
|
|
105
|
-
installInstanceId = generateRandomString(ID_LENGTH);
|
|
106
|
-
await AsyncStorage.setItem(STORAGE_KEY, installInstanceId);
|
|
107
|
-
}
|
|
108
|
-
return installInstanceId;
|
|
109
|
-
} catch (error) {
|
|
110
|
-
console.error('Error accessing AsyncStorage:', error);
|
|
111
|
-
return 'ERROR_GENERAING_INSTALL_INSTANCE_ID';
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
function generateRandomString(length) {
|
|
115
|
-
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
116
|
-
return Array(length).fill(null).map(() => chars.charAt(Math.floor(Math.random() * chars.length))).join('');
|
|
117
|
-
}
|
|
118
|
-
const DEEPLINK_URL_STORAGE_KEY = 'linkrunner_deeplink_url';
|
|
119
|
-
async function setDeeplinkURL(deeplink_url) {
|
|
120
|
-
try {
|
|
121
|
-
await AsyncStorage.setItem(DEEPLINK_URL_STORAGE_KEY, deeplink_url);
|
|
122
|
-
} catch (error) {
|
|
123
|
-
console.error('Error setting deeplink URL:', error);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
async function getDeeplinkURL() {
|
|
127
|
-
try {
|
|
128
|
-
return await AsyncStorage.getItem(DEEPLINK_URL_STORAGE_KEY);
|
|
129
|
-
} catch (error) {
|
|
130
|
-
console.error('Error getting deeplink URL:', error);
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
export { device_data, getLinkRunnerInstallInstanceId, setDeeplinkURL, getDeeplinkURL };
|
|
135
|
-
//# sourceMappingURL=helper.js.map
|
package/lib/module/helper.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["DeviceInfo","getManufacturer","getSystemVersion","fetch","netinfoFetch","PlayInstallReferrer","AsyncStorage","Platform","ReactNativeIdfaAaid","getInstallReferrerInfo","Promise","resolve","OS","timeoutId","setTimeout","installReferrerInfo","error","clearTimeout","e","getAdvertisingIdentifier","identifier","getAdvertisingInfo","isAdTrackingLimited","id","console","device_data","connectivity","manufacturer","systemVersion","all","safeGet","getter","fallback","warn","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_display","getDisplay","device_type","getDeviceType","device_name","getDeviceName","device_token","getDeviceToken","device_ip","getIpAddress","install_ref","getInstallReferrer","system_version","version","getVersion","type","user_agent","getUserAgent","gaid","idfa","idfv","getUniqueId","STORAGE_KEY","ID_LENGTH","getLinkRunnerInstallInstanceId","installInstanceId","getItem","generateRandomString","setItem","length","chars","Array","fill","map","charAt","Math","floor","random","join","DEEPLINK_URL_STORAGE_KEY","setDeeplinkURL","deeplink_url","getDeeplinkURL"],"sourceRoot":"../../src","sources":["helper.ts"],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
declare const device_data: () => Promise<Record<string, any>>;
|
|
2
|
-
declare function getLinkRunnerInstallInstanceId(): Promise<string>;
|
|
3
|
-
declare function setDeeplinkURL(deeplink_url: string): Promise<void>;
|
|
4
|
-
declare function getDeeplinkURL(): Promise<string | null>;
|
|
5
|
-
export { device_data, getLinkRunnerInstallInstanceId, setDeeplinkURL, getDeeplinkURL, };
|
|
6
|
-
//# sourceMappingURL=helper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/helper.ts"],"names":[],"mappings":"AA4DA,QAAA,MAAM,WAAW,QAAa,QAAQ,OAAO,MAAM,EAAE,GAAG,CAAC,CAwDxD,CAAC;AAKF,iBAAe,8BAA8B,IAAI,OAAO,CAAC,MAAM,CAAC,CAgB/D;AAaD,iBAAe,cAAc,CAAC,YAAY,EAAE,MAAM,iBAMjD;AAED,iBAAe,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOtD;AAED,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,cAAc,EACd,cAAc,GACf,CAAC"}
|
package/src/helper.ts
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
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
|
-
import { Platform } from 'react-native';
|
|
12
|
-
import ReactNativeIdfaAaid from '@sparkfabrik/react-native-idfa-aaid';
|
|
13
|
-
|
|
14
|
-
const getInstallReferrerInfo = (): Promise<PlayInstallReferrerInfo | {}> => {
|
|
15
|
-
return new Promise((resolve) => {
|
|
16
|
-
if (Platform.OS === 'ios') {
|
|
17
|
-
resolve({});
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Add a timeout to ensure the promise resolves even if the callback never fires
|
|
22
|
-
const timeoutId = setTimeout(() => {
|
|
23
|
-
resolve({});
|
|
24
|
-
}, 2000);
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
PlayInstallReferrer.getInstallReferrerInfo(
|
|
28
|
-
(installReferrerInfo, error) => {
|
|
29
|
-
// Clear the timeout since callback fired
|
|
30
|
-
clearTimeout(timeoutId);
|
|
31
|
-
|
|
32
|
-
if (!error && !!installReferrerInfo) {
|
|
33
|
-
resolve(installReferrerInfo);
|
|
34
|
-
} else {
|
|
35
|
-
resolve({});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
} catch (e) {
|
|
40
|
-
// Clear the timeout since we caught an exception
|
|
41
|
-
clearTimeout(timeoutId);
|
|
42
|
-
resolve({});
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
const getAdvertisingIdentifier = async (): Promise<string | null> => {
|
|
48
|
-
try {
|
|
49
|
-
const identifier = await ReactNativeIdfaAaid.getAdvertisingInfo();
|
|
50
|
-
if (!identifier.isAdTrackingLimited && identifier.id) {
|
|
51
|
-
return identifier.id;
|
|
52
|
-
} else {
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
} catch (error) {
|
|
56
|
-
console.error('Error getting advertising identifier:', error);
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
const device_data = async (): Promise<Record<string, any>> => {
|
|
62
|
-
try {
|
|
63
|
-
const [installReferrerInfo, connectivity, manufacturer, systemVersion] =
|
|
64
|
-
await Promise.all([
|
|
65
|
-
getInstallReferrerInfo(),
|
|
66
|
-
netinfoFetch(),
|
|
67
|
-
getManufacturer(),
|
|
68
|
-
getSystemVersion(),
|
|
69
|
-
]);
|
|
70
|
-
|
|
71
|
-
// Helper function to safely get device info with fallback
|
|
72
|
-
const safeGet = async <T>(
|
|
73
|
-
getter: () => Promise<T> | T,
|
|
74
|
-
fallback: T = null as unknown as T
|
|
75
|
-
): Promise<T> => {
|
|
76
|
-
try {
|
|
77
|
-
return await getter();
|
|
78
|
-
} catch (error) {
|
|
79
|
-
console.warn(`DeviceInfo error: ${error}`);
|
|
80
|
-
return fallback;
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
return {
|
|
85
|
-
android_id: await safeGet(DeviceInfo.getAndroidId),
|
|
86
|
-
api_level: await safeGet(DeviceInfo.getApiLevel),
|
|
87
|
-
application_name: await safeGet(DeviceInfo.getApplicationName),
|
|
88
|
-
base_os: await safeGet(DeviceInfo.getBaseOs),
|
|
89
|
-
build_id: await safeGet(DeviceInfo.getBuildId),
|
|
90
|
-
brand: await safeGet(DeviceInfo.getBrand),
|
|
91
|
-
build_number: await safeGet(DeviceInfo.getBuildNumber),
|
|
92
|
-
bundle_id: await safeGet(DeviceInfo.getBundleId),
|
|
93
|
-
carrier: [await safeGet(DeviceInfo.getCarrier)],
|
|
94
|
-
device: await safeGet(DeviceInfo.getDevice),
|
|
95
|
-
device_id: await safeGet(DeviceInfo.getDeviceId),
|
|
96
|
-
device_display: await safeGet(DeviceInfo.getDisplay),
|
|
97
|
-
device_type: await safeGet(DeviceInfo.getDeviceType),
|
|
98
|
-
device_name: await safeGet(DeviceInfo.getDeviceName),
|
|
99
|
-
device_token: await safeGet(DeviceInfo.getDeviceToken),
|
|
100
|
-
device_ip: await safeGet(DeviceInfo.getIpAddress),
|
|
101
|
-
install_ref: await safeGet(DeviceInfo.getInstallReferrer),
|
|
102
|
-
manufacturer,
|
|
103
|
-
system_version: systemVersion,
|
|
104
|
-
version: await safeGet(DeviceInfo.getVersion),
|
|
105
|
-
connectivity: connectivity.type,
|
|
106
|
-
user_agent: await safeGet(DeviceInfo.getUserAgent),
|
|
107
|
-
gaid: Platform.OS === 'android' ? await getAdvertisingIdentifier() : null,
|
|
108
|
-
idfa: Platform.OS === 'ios' ? await getAdvertisingIdentifier() : null,
|
|
109
|
-
idfv:
|
|
110
|
-
Platform.OS === 'ios' ? await safeGet(DeviceInfo.getUniqueId) : null,
|
|
111
|
-
...installReferrerInfo,
|
|
112
|
-
};
|
|
113
|
-
} catch (error) {
|
|
114
|
-
console.error('Error collecting device data:', error);
|
|
115
|
-
return { error: 'Failed to collect device data' };
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
const STORAGE_KEY = 'linkrunner_install_instance_id';
|
|
120
|
-
const ID_LENGTH = 20;
|
|
121
|
-
|
|
122
|
-
async function getLinkRunnerInstallInstanceId(): Promise<string> {
|
|
123
|
-
try {
|
|
124
|
-
// Try to get the existing ID
|
|
125
|
-
let installInstanceId = await AsyncStorage.getItem(STORAGE_KEY);
|
|
126
|
-
|
|
127
|
-
// If the ID doesn't exist, generate a new one and store it
|
|
128
|
-
if (installInstanceId === null) {
|
|
129
|
-
installInstanceId = generateRandomString(ID_LENGTH);
|
|
130
|
-
await AsyncStorage.setItem(STORAGE_KEY, installInstanceId);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return installInstanceId;
|
|
134
|
-
} catch (error) {
|
|
135
|
-
console.error('Error accessing AsyncStorage:', error);
|
|
136
|
-
return 'ERROR_GENERAING_INSTALL_INSTANCE_ID';
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
function generateRandomString(length: number): string {
|
|
141
|
-
const chars =
|
|
142
|
-
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
143
|
-
return Array(length)
|
|
144
|
-
.fill(null)
|
|
145
|
-
.map(() => chars.charAt(Math.floor(Math.random() * chars.length)))
|
|
146
|
-
.join('');
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const DEEPLINK_URL_STORAGE_KEY = 'linkrunner_deeplink_url';
|
|
150
|
-
|
|
151
|
-
async function setDeeplinkURL(deeplink_url: string) {
|
|
152
|
-
try {
|
|
153
|
-
await AsyncStorage.setItem(DEEPLINK_URL_STORAGE_KEY, deeplink_url);
|
|
154
|
-
} catch (error) {
|
|
155
|
-
console.error('Error setting deeplink URL:', error);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
async function getDeeplinkURL(): Promise<string | null> {
|
|
160
|
-
try {
|
|
161
|
-
return await AsyncStorage.getItem(DEEPLINK_URL_STORAGE_KEY);
|
|
162
|
-
} catch (error) {
|
|
163
|
-
console.error('Error getting deeplink URL:', error);
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export {
|
|
169
|
-
device_data,
|
|
170
|
-
getLinkRunnerInstallInstanceId,
|
|
171
|
-
setDeeplinkURL,
|
|
172
|
-
getDeeplinkURL,
|
|
173
|
-
};
|