react-native-mytatva-rn-sdk 1.0.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/LICENSE +20 -0
- package/README.md +31 -0
- package/android/build.gradle +112 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/visitrnsdk/VisitRnSdkPackage.kt +17 -0
- package/android/src/main/java/com/visitrnsdk/VisitRnSdkViewManager.kt +20 -0
- package/ios/VisitRnSdk.xcodeproj/project.pbxproj +274 -0
- package/ios/VisitRnSdkViewManager.h +20 -0
- package/ios/VisitRnSdkViewManager.m +1240 -0
- package/lib/commonjs/Services.js +35 -0
- package/lib/commonjs/Services.js.map +1 -0
- package/lib/commonjs/constants.js +11 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/index.android.js +518 -0
- package/lib/commonjs/index.android.js.map +1 -0
- package/lib/commonjs/index.ios.js +313 -0
- package/lib/commonjs/index.ios.js.map +1 -0
- package/lib/module/Services.js +27 -0
- package/lib/module/Services.js.map +1 -0
- package/lib/module/constants.js +5 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/index.android.js +508 -0
- package/lib/module/index.android.js.map +1 -0
- package/lib/module/index.ios.js +304 -0
- package/lib/module/index.ios.js.map +1 -0
- package/lib/typescript/index.test.d.ts +1 -0
- package/lib/typescript/index.test.d.ts.map +1 -0
- package/package.json +177 -0
- package/react-native-visit-rn-sdk.podspec +42 -0
- package/src/Services.js +37 -0
- package/src/constants.js +4 -0
- package/src/index.android.js +714 -0
- package/src/index.ios.js +376 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.httpClient = exports.getWebViewLink = void 0;
|
|
7
|
+
var _axios = _interopRequireDefault(require("axios"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
const httpClient = exports.httpClient = _axios.default.create({
|
|
10
|
+
timeout: 60000
|
|
11
|
+
});
|
|
12
|
+
const getWebViewLink = (baseUrl, token, cpsid, srcClientId, deviceId, appVersion, deviceVersion, userEnv) => {
|
|
13
|
+
const data = {
|
|
14
|
+
cpsid,
|
|
15
|
+
token,
|
|
16
|
+
srcClientId,
|
|
17
|
+
deviceId,
|
|
18
|
+
appVersion,
|
|
19
|
+
deviceVersion,
|
|
20
|
+
userEnv
|
|
21
|
+
};
|
|
22
|
+
return httpClient.post(`${baseUrl}/partners/v3/generate-magic-link-star-health`, data).then(res => {
|
|
23
|
+
console.log('getWebViewLink res', {
|
|
24
|
+
res
|
|
25
|
+
});
|
|
26
|
+
return res;
|
|
27
|
+
}).catch(err => {
|
|
28
|
+
console.log('getWebViewLink err', {
|
|
29
|
+
err
|
|
30
|
+
});
|
|
31
|
+
return err;
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
exports.getWebViewLink = getWebViewLink;
|
|
35
|
+
//# sourceMappingURL=Services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_axios","_interopRequireDefault","require","e","__esModule","default","httpClient","exports","axios","create","timeout","getWebViewLink","baseUrl","token","cpsid","srcClientId","deviceId","appVersion","deviceVersion","userEnv","data","post","then","res","console","log","catch","err"],"sourceRoot":"../../src","sources":["Services.js"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnB,MAAMG,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAGE,cAAK,CAACC,MAAM,CAAC;EACrCC,OAAO,EAAE;AACX,CAAC,CAAC;AAEK,MAAMC,cAAc,GAAGA,CAC5BC,OAAO,EACPC,KAAK,EACLC,KAAK,EACLC,WAAW,EACXC,QAAQ,EACRC,UAAU,EACVC,aAAa,EACbC,OAAO,KACJ;EACH,MAAMC,IAAI,GAAG;IACXN,KAAK;IACLD,KAAK;IACLE,WAAW;IACXC,QAAQ;IACRC,UAAU;IACVC,aAAa;IACbC;EACF,CAAC;EAED,OAAOb,UAAU,CACde,IAAI,CAAC,GAAGT,OAAO,8CAA8C,EAAEQ,IAAI,CAAC,CACpEE,IAAI,CAAEC,GAAG,IAAK;IACbC,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAE;MAAEF;IAAI,CAAC,CAAC;IAC1C,OAAOA,GAAG;EACZ,CAAC,CAAC,CACDG,KAAK,CAAEC,GAAG,IAAK;IACdH,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAE;MAAEE;IAAI,CAAC,CAAC;IAC1C,OAAOA,GAAG;EACZ,CAAC,CAAC;AACN,CAAC;AAACpB,OAAA,CAAAI,cAAA,GAAAA,cAAA","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = exports.default = {
|
|
8
|
+
STAGE_BASE_URL: 'https://star-health.getvisitapp.net/?mluib7c',
|
|
9
|
+
PROD_BASE_URL: 'https://star-health.getvisitapp.com/?mluib7c'
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["STAGE_BASE_URL","PROD_BASE_URL"],"sourceRoot":"../../src","sources":["constants.js"],"mappings":";;;;;;iCAAe;EACbA,cAAc,EAAE,8CAA8C;EAC9DC,aAAa,EAAE;AACjB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.httpClient = exports.fetchHourlyFitnessData = exports.fetchDailyFitnessData = exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNativeEventListeners = require("react-native-event-listeners");
|
|
9
|
+
var _reactNative = require("react-native");
|
|
10
|
+
var _reactNativeWebview = _interopRequireDefault(require("react-native-webview"));
|
|
11
|
+
var _reactNativeLocationEnabler = _interopRequireDefault(require("react-native-location-enabler"));
|
|
12
|
+
var _reactNativeDeviceInfo = _interopRequireDefault(require("react-native-device-info"));
|
|
13
|
+
var _axios = _interopRequireDefault(require("axios"));
|
|
14
|
+
var _constants = _interopRequireDefault(require("./constants"));
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
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); }
|
|
17
|
+
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 && {}.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; }
|
|
18
|
+
const httpClient = exports.httpClient = _axios.default.create({
|
|
19
|
+
timeout: 60000
|
|
20
|
+
});
|
|
21
|
+
const {
|
|
22
|
+
PRIORITIES: {
|
|
23
|
+
HIGH_ACCURACY
|
|
24
|
+
},
|
|
25
|
+
useLocationSettings,
|
|
26
|
+
addListener
|
|
27
|
+
} = _reactNativeLocationEnabler.default;
|
|
28
|
+
const MyTatvaRnSdkView = ({
|
|
29
|
+
cpsid,
|
|
30
|
+
baseUrl,
|
|
31
|
+
errorBaseUrl,
|
|
32
|
+
token,
|
|
33
|
+
moduleName,
|
|
34
|
+
environment,
|
|
35
|
+
magicLink,
|
|
36
|
+
isLoggingEnabled
|
|
37
|
+
}) => {
|
|
38
|
+
const [source, setSource] = (0, _react.useState)('');
|
|
39
|
+
const [appState, setAppState] = (0, _react.useState)(_reactNative.AppState.currentState);
|
|
40
|
+
const [showPermissionAlreadyDeniedDialog, setShowPermissionAlreadyDeniedDialog] = (0, _react.useState)(false);
|
|
41
|
+
(0, _react.useEffect)(() => {
|
|
42
|
+
var _magicLink$trim;
|
|
43
|
+
if (isLoggingEnabled) {
|
|
44
|
+
console.log('useEffect ran');
|
|
45
|
+
}
|
|
46
|
+
_reactNative.NativeModules.VisitFitnessModule.initiateSDK(isLoggingEnabled);
|
|
47
|
+
if (((magicLink === null || magicLink === void 0 || (_magicLink$trim = magicLink.trim()) === null || _magicLink$trim === void 0 ? void 0 : _magicLink$trim.length) || 0) > 0) {
|
|
48
|
+
setSource(magicLink);
|
|
49
|
+
} else {
|
|
50
|
+
_reactNativeDeviceInfo.default.getAndroidId().then(deviceId => {
|
|
51
|
+
var buildNumber = _reactNativeDeviceInfo.default.getBuildNumber();
|
|
52
|
+
let systemVersion = _reactNativeDeviceInfo.default.getSystemVersion();
|
|
53
|
+
let version = _reactNativeDeviceInfo.default.getVersion();
|
|
54
|
+
if (isLoggingEnabled) {
|
|
55
|
+
console.log(' baseUrl : ' + baseUrl + 'token: ' + token + ' cpsid: ' + cpsid + ' environment: ' + environment + 'buildNumber:' + buildNumber + ' systemVersion:' + systemVersion + ' version : ' + version + ' deviceId', deviceId);
|
|
56
|
+
}
|
|
57
|
+
var finalEndPoint = `${baseUrl}/partners/v3/generate-magic-link-star-health`;
|
|
58
|
+
if (isLoggingEnabled) {
|
|
59
|
+
console.log('finalEndPoint: ' + finalEndPoint);
|
|
60
|
+
}
|
|
61
|
+
httpClient.post(finalEndPoint, {
|
|
62
|
+
cpsid: cpsid,
|
|
63
|
+
token: token,
|
|
64
|
+
srcClientId: 'Android',
|
|
65
|
+
deviceId: deviceId,
|
|
66
|
+
appVersion: version,
|
|
67
|
+
deviceVersion: systemVersion,
|
|
68
|
+
userEnv: environment
|
|
69
|
+
}).then(response => {
|
|
70
|
+
let data = response.data;
|
|
71
|
+
// let visitMagicLink = data.result; //@Deprecated. Superseded by magic code usage.
|
|
72
|
+
const errorMessage = data.errorMessage;
|
|
73
|
+
const magicCode = data.magicCode;
|
|
74
|
+
const responseReferenceId = data.responseReferenceId;
|
|
75
|
+
let finalBaseUrl = '';
|
|
76
|
+
if (environment.toUpperCase() === 'PROD') {
|
|
77
|
+
finalBaseUrl = _constants.default.PROD_BASE_URL;
|
|
78
|
+
} else {
|
|
79
|
+
finalBaseUrl = _constants.default.STAGE_BASE_URL;
|
|
80
|
+
}
|
|
81
|
+
let finalUrl = `${finalBaseUrl}=${magicCode}`;
|
|
82
|
+
if (data.message === 'success') {
|
|
83
|
+
var _moduleName$trim;
|
|
84
|
+
if (((moduleName === null || moduleName === void 0 || (_moduleName$trim = moduleName.trim()) === null || _moduleName$trim === void 0 ? void 0 : _moduleName$trim.length) || 0) > 0) {
|
|
85
|
+
finalUrl += `&tab=${moduleName}`;
|
|
86
|
+
}
|
|
87
|
+
if (typeof responseReferenceId === 'string' && responseReferenceId.trim().length > 0) {
|
|
88
|
+
finalUrl += `&responseReferenceId=${responseReferenceId}`;
|
|
89
|
+
}
|
|
90
|
+
if (isLoggingEnabled) {
|
|
91
|
+
console.log('magicLink: ' + finalUrl);
|
|
92
|
+
}
|
|
93
|
+
setSource(finalUrl);
|
|
94
|
+
} else {
|
|
95
|
+
var errorUrl = `${errorBaseUrl}/star-health?error=${errorMessage}`;
|
|
96
|
+
setSource(errorUrl);
|
|
97
|
+
if (errorMessage != null) {
|
|
98
|
+
if (errorMessage === 'Please login again') {
|
|
99
|
+
_reactNativeEventListeners.EventRegister.emitEvent('visit-event', {
|
|
100
|
+
message: 'unauthorized-wellness-access',
|
|
101
|
+
errorMessage: errorMessage
|
|
102
|
+
});
|
|
103
|
+
} else if (errorMessage.includes('External Server Error')) {
|
|
104
|
+
_reactNativeEventListeners.EventRegister.emitEvent('visit-event', {
|
|
105
|
+
message: 'external-server-error',
|
|
106
|
+
errorMessage: errorMessage
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (isLoggingEnabled) {
|
|
111
|
+
console.log('erorMessage: ' + data.errorMessage + ' errorUrl: ' + errorUrl);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}).catch(error => {
|
|
115
|
+
var errorUrl = `${errorBaseUrl}/star-health?error=${error}`;
|
|
116
|
+
setSource(errorUrl);
|
|
117
|
+
_reactNativeEventListeners.EventRegister.emitEvent('visit-event', {
|
|
118
|
+
message: 'generate-magic-link-failed',
|
|
119
|
+
errorMessage: `${error}`
|
|
120
|
+
});
|
|
121
|
+
if (isLoggingEnabled) {
|
|
122
|
+
console.log('error: ' + error);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}).catch(err => {
|
|
126
|
+
var errorUrl = `${errorBaseUrl}/star-health?error=${err}`;
|
|
127
|
+
setSource(errorUrl);
|
|
128
|
+
_reactNativeEventListeners.EventRegister.emitEvent('visit-event', {
|
|
129
|
+
message: 'getDeviceInfo-failed',
|
|
130
|
+
errorMessage: `${err}`
|
|
131
|
+
});
|
|
132
|
+
if (isLoggingEnabled) {
|
|
133
|
+
console.log('getDeviceInfo err', err);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}, [cpsid, token, baseUrl, errorBaseUrl, moduleName, environment, magicLink, isLoggingEnabled]);
|
|
138
|
+
(0, _react.useEffect)(() => {
|
|
139
|
+
const subscription = _reactNative.AppState.addEventListener('change', handleAppStateChange);
|
|
140
|
+
console.log(`AppState.addEventListener added, current state: ${appState}`);
|
|
141
|
+
return () => {
|
|
142
|
+
subscription.remove();
|
|
143
|
+
};
|
|
144
|
+
}, [appState]); // Include appState in the dependency array to ensure it's up to date.
|
|
145
|
+
|
|
146
|
+
const handleAppStateChange = nextAppState => {
|
|
147
|
+
// console.log(
|
|
148
|
+
// "nextAppState: " + nextAppState + ", previousState: " + appState
|
|
149
|
+
// );
|
|
150
|
+
|
|
151
|
+
// Instead of relying on the old appState, use the nextAppState directly
|
|
152
|
+
if (appState.match(/inactive|background/) && nextAppState === 'active') {
|
|
153
|
+
if (isLoggingEnabled) {
|
|
154
|
+
console.log('App has come to the foreground!');
|
|
155
|
+
}
|
|
156
|
+
getHealthConnectStatus();
|
|
157
|
+
}
|
|
158
|
+
setAppState(nextAppState); // Update the state with the new app state
|
|
159
|
+
};
|
|
160
|
+
const [enabled, requestResolution] = useLocationSettings({
|
|
161
|
+
priority: HIGH_ACCURACY,
|
|
162
|
+
// default BALANCED_POWER_ACCURACY
|
|
163
|
+
alwaysShow: true,
|
|
164
|
+
// default false
|
|
165
|
+
needBle: true // default false
|
|
166
|
+
}, false /* optional: default undefined */);
|
|
167
|
+
const webviewRef = (0, _react.useRef)(null);
|
|
168
|
+
const showLocationPermissionAlert = () => {
|
|
169
|
+
_reactNative.Alert.alert('Permission Required', 'Allow location permission from app settings', [{
|
|
170
|
+
text: 'Cancel',
|
|
171
|
+
onPress: () => {
|
|
172
|
+
console.log('Cancel clicked');
|
|
173
|
+
}
|
|
174
|
+
}, {
|
|
175
|
+
text: 'Go to Settings',
|
|
176
|
+
onPress: () => {
|
|
177
|
+
_reactNative.Linking.openSettings();
|
|
178
|
+
}
|
|
179
|
+
}]);
|
|
180
|
+
};
|
|
181
|
+
const requestLocationPermission = async () => {
|
|
182
|
+
try {
|
|
183
|
+
console.log('requestLocationPermission called');
|
|
184
|
+
const isLocationPermissionPresent = await _reactNative.PermissionsAndroid.check(_reactNative.PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION);
|
|
185
|
+
console.log('isLocationPermissionPresent: ' + isLocationPermissionPresent + ' showPermissionAlreadyDeniedDialog: ' + showPermissionAlreadyDeniedDialog);
|
|
186
|
+
if (!isLocationPermissionPresent && showPermissionAlreadyDeniedDialog) {
|
|
187
|
+
console.log('showLocationPermissionAlert() called');
|
|
188
|
+
showLocationPermissionAlert();
|
|
189
|
+
} else {
|
|
190
|
+
console.log('requesting location permission');
|
|
191
|
+
const granted = await _reactNative.PermissionsAndroid.request(_reactNative.PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, {
|
|
192
|
+
title: 'Need Location Permission',
|
|
193
|
+
message: 'Need access to location permission',
|
|
194
|
+
buttonNeutral: 'Ask Me Later',
|
|
195
|
+
buttonNegative: 'Cancel',
|
|
196
|
+
buttonPositive: 'OK'
|
|
197
|
+
});
|
|
198
|
+
if (granted === _reactNative.PermissionsAndroid.RESULTS.GRANTED) {
|
|
199
|
+
if (isLoggingEnabled) {
|
|
200
|
+
console.log('Location permission granted');
|
|
201
|
+
}
|
|
202
|
+
setShowPermissionAlreadyDeniedDialog(false);
|
|
203
|
+
if (!enabled) {
|
|
204
|
+
requestResolution();
|
|
205
|
+
} else {
|
|
206
|
+
var _webviewRef$current;
|
|
207
|
+
var finalString = `window.checkTheGpsPermission(true)`;
|
|
208
|
+
console.log('requestLocationPermission: ' + finalString);
|
|
209
|
+
(_webviewRef$current = webviewRef.current) === null || _webviewRef$current === void 0 || _webviewRef$current.injectJavaScript(finalString);
|
|
210
|
+
}
|
|
211
|
+
} else {
|
|
212
|
+
setShowPermissionAlreadyDeniedDialog(true);
|
|
213
|
+
console.log('Location permission denied');
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
} catch (e) {
|
|
217
|
+
console.error(e);
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
const showHealthConnectPermissionDeniedDialog = () => {
|
|
221
|
+
_reactNative.Alert.alert('Permission Denied', 'Go to Health Connect App to allow app permission', [{
|
|
222
|
+
text: 'Cancel',
|
|
223
|
+
onPress: () => {
|
|
224
|
+
console.log('Cancel clicked');
|
|
225
|
+
}
|
|
226
|
+
}, {
|
|
227
|
+
text: 'Open Health Connect',
|
|
228
|
+
onPress: () => {
|
|
229
|
+
openHealthConnectApp();
|
|
230
|
+
}
|
|
231
|
+
}]);
|
|
232
|
+
};
|
|
233
|
+
const openHealthConnectApp = async () => {
|
|
234
|
+
_reactNative.NativeModules.VisitFitnessModule.openHealthConnectApp();
|
|
235
|
+
};
|
|
236
|
+
const askForHealthConnectPermission = async () => {
|
|
237
|
+
try {
|
|
238
|
+
const isPermissionGranted = await _reactNative.NativeModules.VisitFitnessModule.askForFitnessPermission();
|
|
239
|
+
if (isLoggingEnabled) {
|
|
240
|
+
console.log('isPermissionGranted: ' + isPermissionGranted);
|
|
241
|
+
}
|
|
242
|
+
if (isPermissionGranted === 'GRANTED') {
|
|
243
|
+
getHealthConnectStatus();
|
|
244
|
+
// getDailyFitnessData();
|
|
245
|
+
} else if (isPermissionGranted === 'CANCELLED') {
|
|
246
|
+
showHealthConnectPermissionDeniedDialog();
|
|
247
|
+
}
|
|
248
|
+
} catch (e) {
|
|
249
|
+
if (isLoggingEnabled) {
|
|
250
|
+
console.error(e);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
const getHealthConnectStatus = async () => {
|
|
255
|
+
try {
|
|
256
|
+
const healthConnectStatus = await _reactNative.NativeModules.VisitFitnessModule.getHealthConnectStatus();
|
|
257
|
+
if (isLoggingEnabled) {
|
|
258
|
+
console.log('getHealthConnectStatus: ' + healthConnectStatus);
|
|
259
|
+
}
|
|
260
|
+
if (healthConnectStatus === 'NOT_SUPPORTED') {
|
|
261
|
+
var _webviewRef$current2;
|
|
262
|
+
(_webviewRef$current2 = webviewRef.current) === null || _webviewRef$current2 === void 0 || _webviewRef$current2.injectJavaScript('window.healthConnectNotSupported()');
|
|
263
|
+
} else if (healthConnectStatus === 'NOT_INSTALLED') {
|
|
264
|
+
var _webviewRef$current3, _webviewRef$current4;
|
|
265
|
+
(_webviewRef$current3 = webviewRef.current) === null || _webviewRef$current3 === void 0 || _webviewRef$current3.injectJavaScript('window.healthConnectNotInstall()');
|
|
266
|
+
(_webviewRef$current4 = webviewRef.current) === null || _webviewRef$current4 === void 0 || _webviewRef$current4.injectJavaScript('window.updateFitnessPermissions(false,0,0)');
|
|
267
|
+
} else if (healthConnectStatus === 'INSTALLED') {
|
|
268
|
+
var _webviewRef$current5, _webviewRef$current6;
|
|
269
|
+
(_webviewRef$current5 = webviewRef.current) === null || _webviewRef$current5 === void 0 || _webviewRef$current5.injectJavaScript('window.healthConnectAvailable()');
|
|
270
|
+
(_webviewRef$current6 = webviewRef.current) === null || _webviewRef$current6 === void 0 || _webviewRef$current6.injectJavaScript('window.updateFitnessPermissions(false,0,0)');
|
|
271
|
+
} else if (healthConnectStatus === 'CONNECTED') {
|
|
272
|
+
getDailyFitnessData();
|
|
273
|
+
}
|
|
274
|
+
} catch (e) {
|
|
275
|
+
if (isLoggingEnabled) {
|
|
276
|
+
console.error(e);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
const getDailyFitnessData = async () => {
|
|
281
|
+
if (isLoggingEnabled) {
|
|
282
|
+
console.log('getDailyFitnessData() called');
|
|
283
|
+
}
|
|
284
|
+
try {
|
|
285
|
+
var _webviewRef$current7;
|
|
286
|
+
const dailyFitnessData = await _reactNative.NativeModules.VisitFitnessModule.requestDailyFitnessData();
|
|
287
|
+
(_webviewRef$current7 = webviewRef.current) === null || _webviewRef$current7 === void 0 || _webviewRef$current7.injectJavaScript(dailyFitnessData);
|
|
288
|
+
} catch (error) {
|
|
289
|
+
if (isLoggingEnabled) {
|
|
290
|
+
console.log(error);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
const requestActivityData = async (type, frequency, timeStamp) => {
|
|
295
|
+
if (isLoggingEnabled) {
|
|
296
|
+
console.log('requestActivityData() called');
|
|
297
|
+
}
|
|
298
|
+
try {
|
|
299
|
+
var _webviewRef$current8;
|
|
300
|
+
const graphData = await _reactNative.NativeModules.VisitFitnessModule.requestActivityDataFromHealthConnect(type, frequency, timeStamp);
|
|
301
|
+
if (isLoggingEnabled) {
|
|
302
|
+
console.log(`requestActivityData() data: ` + graphData);
|
|
303
|
+
}
|
|
304
|
+
(_webviewRef$current8 = webviewRef.current) === null || _webviewRef$current8 === void 0 || _webviewRef$current8.injectJavaScript('window.' + graphData);
|
|
305
|
+
} catch (error) {
|
|
306
|
+
if (isLoggingEnabled) {
|
|
307
|
+
console.log(error);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
const updateApiBaseUrl = async (apiBaseUrl, authtoken, googleFitLastSync, gfHourlyLastSync) => {
|
|
312
|
+
if (isLoggingEnabled) {
|
|
313
|
+
console.log('updateApiBaseUrl() called.');
|
|
314
|
+
}
|
|
315
|
+
try {
|
|
316
|
+
const message = await _reactNative.NativeModules.VisitFitnessModule.updateApiBaseUrl(apiBaseUrl, authtoken, googleFitLastSync, gfHourlyLastSync);
|
|
317
|
+
if (isLoggingEnabled) {
|
|
318
|
+
console.log(message);
|
|
319
|
+
}
|
|
320
|
+
} catch (error) {
|
|
321
|
+
if (isLoggingEnabled) {
|
|
322
|
+
console.log(error);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
const runBeforeFirst = `
|
|
327
|
+
window.isNativeApp = true;
|
|
328
|
+
window.platform = "ANDROID";
|
|
329
|
+
window.setSdkPlatform('ANDROID');
|
|
330
|
+
true; // note: this is required, or you'll sometimes get silent failures
|
|
331
|
+
`;
|
|
332
|
+
const handleMessage = event => {
|
|
333
|
+
var _webviewRef$current9;
|
|
334
|
+
if (event.nativeEvent.data != null) {
|
|
335
|
+
try {
|
|
336
|
+
if (isLoggingEnabled) {
|
|
337
|
+
console.log('Event :' + event.nativeEvent.data);
|
|
338
|
+
}
|
|
339
|
+
const parsedObject = JSON.parse(event.nativeEvent.data);
|
|
340
|
+
if (parsedObject.method != null) {
|
|
341
|
+
switch (parsedObject.method) {
|
|
342
|
+
case 'GET_HEALTH_CONNECT_STATUS':
|
|
343
|
+
getHealthConnectStatus();
|
|
344
|
+
break;
|
|
345
|
+
case 'CONNECT_TO_GOOGLE_FIT':
|
|
346
|
+
askForHealthConnectPermission();
|
|
347
|
+
break;
|
|
348
|
+
case 'UPDATE_PLATFORM':
|
|
349
|
+
(_webviewRef$current9 = webviewRef.current) === null || _webviewRef$current9 === void 0 || _webviewRef$current9.injectJavaScript('window.setSdkPlatform("ANDROID")');
|
|
350
|
+
break;
|
|
351
|
+
case 'UPDATE_API_BASE_URL':
|
|
352
|
+
{
|
|
353
|
+
let apiBaseUrl = parsedObject.apiBaseUrl;
|
|
354
|
+
let authtoken = parsedObject.authtoken;
|
|
355
|
+
let googleFitLastSync = parsedObject.googleFitLastSync;
|
|
356
|
+
let gfHourlyLastSync = parsedObject.gfHourlyLastSync;
|
|
357
|
+
if (isLoggingEnabled) {
|
|
358
|
+
console.log('apiBaseUrl: ' + 'NOT SHOWN' + ' authtoken: ' + 'NOT SHOWN' + ' googleFitLastSync: ' + googleFitLastSync + ' gfHourlyLastSync: ' + gfHourlyLastSync);
|
|
359
|
+
}
|
|
360
|
+
updateApiBaseUrl(apiBaseUrl, authtoken, googleFitLastSync, gfHourlyLastSync);
|
|
361
|
+
}
|
|
362
|
+
break;
|
|
363
|
+
case 'GET_DATA_TO_GENERATE_GRAPH':
|
|
364
|
+
{
|
|
365
|
+
let type = parsedObject.type;
|
|
366
|
+
let frequency = parsedObject.frequency;
|
|
367
|
+
let timeStamp = parsedObject.timestamp;
|
|
368
|
+
if (isLoggingEnabled) {
|
|
369
|
+
console.log('type: ' + type + ' frequency:' + frequency + ' timeStamp: ' + timeStamp);
|
|
370
|
+
}
|
|
371
|
+
requestActivityData(type, frequency, timeStamp);
|
|
372
|
+
}
|
|
373
|
+
break;
|
|
374
|
+
case 'GET_LOCATION_PERMISSIONS':
|
|
375
|
+
console.log('GET_LOCATION_PERMISSIONS');
|
|
376
|
+
requestLocationPermission();
|
|
377
|
+
break;
|
|
378
|
+
case 'OPEN_PDF':
|
|
379
|
+
{
|
|
380
|
+
let pdfUrl = parsedObject.url;
|
|
381
|
+
// console.log("pdfUrl "+pdfUrl);
|
|
382
|
+
|
|
383
|
+
_reactNative.Linking.openURL(pdfUrl);
|
|
384
|
+
}
|
|
385
|
+
break;
|
|
386
|
+
case 'CLOSE_VIEW':
|
|
387
|
+
break;
|
|
388
|
+
default:
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
} catch (exception) {
|
|
393
|
+
console.log('Exception occured:' + exception.message);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
const [canGoBack, setCanGoBack] = (0, _react.useState)(false);
|
|
398
|
+
const handleBack = (0, _react.useCallback)(() => {
|
|
399
|
+
if (canGoBack && webviewRef.current) {
|
|
400
|
+
var _webviewRef$current10;
|
|
401
|
+
(_webviewRef$current10 = webviewRef.current) === null || _webviewRef$current10 === void 0 || _webviewRef$current10.goBack();
|
|
402
|
+
return true;
|
|
403
|
+
}
|
|
404
|
+
return false;
|
|
405
|
+
}, [canGoBack]);
|
|
406
|
+
(0, _react.useEffect)(() => {
|
|
407
|
+
const gpsListener = addListener(({
|
|
408
|
+
locationEnabled
|
|
409
|
+
}) => {
|
|
410
|
+
if (locationEnabled) {
|
|
411
|
+
checkLocationPermissionAndSendCallback();
|
|
412
|
+
}
|
|
413
|
+
});
|
|
414
|
+
_reactNative.BackHandler.addEventListener('hardwareBackPress', handleBack);
|
|
415
|
+
return () => {
|
|
416
|
+
_reactNative.BackHandler.removeEventListener('hardwareBackPress', handleBack);
|
|
417
|
+
gpsListener.remove();
|
|
418
|
+
};
|
|
419
|
+
}, [handleBack]);
|
|
420
|
+
const checkLocationPermissionAndSendCallback = async () => {
|
|
421
|
+
const isLocationPermissionAvailable = await _reactNative.PermissionsAndroid.check(_reactNative.PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION);
|
|
422
|
+
if (isLoggingEnabled) {
|
|
423
|
+
console.log('checkLocationPermissionAndSendCallback() isLocationPermissionAvailable: ' + isLocationPermissionAvailable + 'isGPSPermissionAvailabe: true');
|
|
424
|
+
}
|
|
425
|
+
if (isLocationPermissionAvailable) {
|
|
426
|
+
var _webviewRef$current11;
|
|
427
|
+
var finalString = `window.checkTheGpsPermission(true)`;
|
|
428
|
+
console.log('listener: ' + finalString);
|
|
429
|
+
(_webviewRef$current11 = webviewRef.current) === null || _webviewRef$current11 === void 0 || _webviewRef$current11.injectJavaScript(finalString);
|
|
430
|
+
}
|
|
431
|
+
};
|
|
432
|
+
return (
|
|
433
|
+
/*#__PURE__*/
|
|
434
|
+
// eslint-disable-next-line react-native/no-inline-styles
|
|
435
|
+
_react.default.createElement(_reactNative.SafeAreaView, {
|
|
436
|
+
style: {
|
|
437
|
+
flex: 1
|
|
438
|
+
}
|
|
439
|
+
}, source ? /*#__PURE__*/_react.default.createElement(_reactNativeWebview.default, {
|
|
440
|
+
ref: webviewRef,
|
|
441
|
+
source: {
|
|
442
|
+
uri: source,
|
|
443
|
+
headers: {
|
|
444
|
+
platform: 'ANDROID'
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
onMessage: handleMessage,
|
|
448
|
+
injectedJavaScriptBeforeContentLoaded: runBeforeFirst,
|
|
449
|
+
javaScriptEnabled: true,
|
|
450
|
+
onLoadProgress: event => setCanGoBack(event.nativeEvent.canGoBack),
|
|
451
|
+
onError: errorMessage => {
|
|
452
|
+
_reactNativeEventListeners.EventRegister.emitEvent('visit-event', {
|
|
453
|
+
message: 'web-view-error',
|
|
454
|
+
errorMessage: errorMessage
|
|
455
|
+
});
|
|
456
|
+
if (isLoggingEnabled) {
|
|
457
|
+
console.warn('Webview error: ', errorMessage);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}) : null)
|
|
461
|
+
);
|
|
462
|
+
};
|
|
463
|
+
const fetchDailyFitnessData = (startTimeStamp, isLoggingEnabled) => {
|
|
464
|
+
return new Promise((resolve, reject) => {
|
|
465
|
+
console.log('fetchDailyFitnessData called: ' + startTimeStamp);
|
|
466
|
+
_reactNative.NativeModules.VisitFitnessModule.fetchDailyFitnessData(startTimeStamp).then(result => {
|
|
467
|
+
resolve(result);
|
|
468
|
+
}).catch(err => reject(err));
|
|
469
|
+
});
|
|
470
|
+
};
|
|
471
|
+
exports.fetchDailyFitnessData = fetchDailyFitnessData;
|
|
472
|
+
const fetchHourlyFitnessData = (startTimeStamp, isLoggingEnabled) => {
|
|
473
|
+
return new Promise((resolve, reject) => {
|
|
474
|
+
if (isLoggingEnabled) {
|
|
475
|
+
console.log('fetchHourlyFitnessData called: ' + startTimeStamp);
|
|
476
|
+
}
|
|
477
|
+
_reactNative.NativeModules.VisitFitnessModule.fetchHourlyFitnessData(startTimeStamp).then(result => {
|
|
478
|
+
resolve(result);
|
|
479
|
+
}).catch(err => reject(err));
|
|
480
|
+
});
|
|
481
|
+
};
|
|
482
|
+
|
|
483
|
+
// debounce, deferred
|
|
484
|
+
// function debounce(task, ms) {
|
|
485
|
+
// let t = { promise: null, cancel: (_) => void 0 };
|
|
486
|
+
// return async (...args) => {
|
|
487
|
+
// try {
|
|
488
|
+
// t.cancel();
|
|
489
|
+
// t = deferred(ms);
|
|
490
|
+
// await t.promise;
|
|
491
|
+
// await task(...args);
|
|
492
|
+
// } catch (_) {
|
|
493
|
+
// console.log('cleaning up cancelled promise');
|
|
494
|
+
// }
|
|
495
|
+
// };
|
|
496
|
+
// }
|
|
497
|
+
|
|
498
|
+
// function deferred(ms) {
|
|
499
|
+
// let cancel,
|
|
500
|
+
// promise = new Promise((resolve, reject) => {
|
|
501
|
+
// cancel = reject;
|
|
502
|
+
// setTimeout(resolve, ms);
|
|
503
|
+
// });
|
|
504
|
+
// return { promise, cancel };
|
|
505
|
+
// }
|
|
506
|
+
exports.fetchHourlyFitnessData = fetchHourlyFitnessData;
|
|
507
|
+
var _default = exports.default = MyTatvaRnSdkView;
|
|
508
|
+
MyTatvaRnSdkView.defaultProps = {
|
|
509
|
+
cpsid: '',
|
|
510
|
+
token: '',
|
|
511
|
+
baseUrl: '',
|
|
512
|
+
errorBaseUrl: '',
|
|
513
|
+
moduleName: '',
|
|
514
|
+
environment: '',
|
|
515
|
+
magicLink: '',
|
|
516
|
+
isLoggingEnabled: false
|
|
517
|
+
};
|
|
518
|
+
//# sourceMappingURL=index.android.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNativeEventListeners","_reactNative","_reactNativeWebview","_interopRequireDefault","_reactNativeLocationEnabler","_reactNativeDeviceInfo","_axios","_constants","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","httpClient","exports","axios","create","timeout","PRIORITIES","HIGH_ACCURACY","useLocationSettings","addListener","LocationEnabler","MyTatvaRnSdkView","cpsid","baseUrl","errorBaseUrl","token","moduleName","environment","magicLink","isLoggingEnabled","source","setSource","useState","appState","setAppState","AppState","currentState","showPermissionAlreadyDeniedDialog","setShowPermissionAlreadyDeniedDialog","useEffect","_magicLink$trim","console","log","NativeModules","VisitFitnessModule","initiateSDK","trim","length","DeviceInfo","getAndroidId","then","deviceId","buildNumber","getBuildNumber","systemVersion","getSystemVersion","version","getVersion","finalEndPoint","post","srcClientId","appVersion","deviceVersion","userEnv","response","data","errorMessage","magicCode","responseReferenceId","finalBaseUrl","toUpperCase","constants","PROD_BASE_URL","STAGE_BASE_URL","finalUrl","message","_moduleName$trim","errorUrl","EventRegister","emitEvent","includes","catch","error","err","subscription","addEventListener","handleAppStateChange","remove","nextAppState","match","getHealthConnectStatus","enabled","requestResolution","priority","alwaysShow","needBle","webviewRef","useRef","showLocationPermissionAlert","Alert","alert","text","onPress","Linking","openSettings","requestLocationPermission","isLocationPermissionPresent","PermissionsAndroid","check","PERMISSIONS","ACCESS_FINE_LOCATION","granted","request","title","buttonNeutral","buttonNegative","buttonPositive","RESULTS","GRANTED","_webviewRef$current","finalString","current","injectJavaScript","showHealthConnectPermissionDeniedDialog","openHealthConnectApp","askForHealthConnectPermission","isPermissionGranted","askForFitnessPermission","healthConnectStatus","_webviewRef$current2","_webviewRef$current3","_webviewRef$current4","_webviewRef$current5","_webviewRef$current6","getDailyFitnessData","_webviewRef$current7","dailyFitnessData","requestDailyFitnessData","requestActivityData","type","frequency","timeStamp","_webviewRef$current8","graphData","requestActivityDataFromHealthConnect","updateApiBaseUrl","apiBaseUrl","authtoken","googleFitLastSync","gfHourlyLastSync","runBeforeFirst","handleMessage","event","_webviewRef$current9","nativeEvent","parsedObject","JSON","parse","method","timestamp","pdfUrl","url","openURL","exception","canGoBack","setCanGoBack","handleBack","useCallback","_webviewRef$current10","goBack","gpsListener","locationEnabled","checkLocationPermissionAndSendCallback","BackHandler","removeEventListener","isLocationPermissionAvailable","_webviewRef$current11","createElement","SafeAreaView","style","flex","ref","uri","headers","platform","onMessage","injectedJavaScriptBeforeContentLoaded","javaScriptEnabled","onLoadProgress","onError","warn","fetchDailyFitnessData","startTimeStamp","Promise","resolve","reject","result","fetchHourlyFitnessData","_default","defaultProps"],"sourceRoot":"../../src","sources":["index.android.js"],"mappings":"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","ignoreList":[]}
|