@onairos/react-native 2.0.9 → 3.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/lib/commonjs/api/index.js +102 -14
- package/lib/commonjs/api/index.js.map +1 -1
- package/lib/commonjs/components/Onairos.js +89 -0
- package/lib/commonjs/components/Onairos.js.map +1 -0
- package/lib/commonjs/components/OnairosButton.js +117 -33
- package/lib/commonjs/components/OnairosButton.js.map +1 -1
- package/lib/commonjs/components/Overlay.js +29 -9
- package/lib/commonjs/components/Overlay.js.map +1 -1
- package/lib/commonjs/index.js +12 -276
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/services/oauthService.js +145 -1
- package/lib/commonjs/services/oauthService.js.map +1 -1
- package/lib/commonjs/utils/encryption.js +45 -7
- package/lib/commonjs/utils/encryption.js.map +1 -1
- package/lib/module/api/index.js +103 -14
- package/lib/module/api/index.js.map +1 -1
- package/lib/module/components/Onairos.js +81 -0
- package/lib/module/components/Onairos.js.map +1 -0
- package/lib/module/components/OnairosButton.js +120 -35
- package/lib/module/components/OnairosButton.js.map +1 -1
- package/lib/module/components/Overlay.js +31 -11
- package/lib/module/components/Overlay.js.map +1 -1
- package/lib/module/index.js +15 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/services/oauthService.js +144 -0
- package/lib/module/services/oauthService.js.map +1 -1
- package/lib/module/utils/encryption.js +43 -6
- package/lib/module/utils/encryption.js.map +1 -1
- package/package.json +1 -1
- package/src/api/index.ts +113 -20
- package/src/components/Onairos.tsx +117 -0
- package/src/components/OnairosButton.tsx +157 -42
- package/src/components/Overlay.tsx +24 -6
- package/src/index.ts +19 -5
- package/src/services/oauthService.ts +174 -0
- package/src/types/index.ts +38 -7
- package/src/utils/encryption.ts +45 -6
package/lib/module/api/index.js
CHANGED
|
@@ -1,27 +1,116 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Onairos API service for handling API requests
|
|
5
|
+
*/
|
|
6
|
+
export const onairosApi = {
|
|
7
|
+
baseUrl: 'https://api2.onairos.uk',
|
|
8
|
+
/**
|
|
9
|
+
* Make a GET request to the API
|
|
10
|
+
* @param endpoint The endpoint to request
|
|
11
|
+
* @returns The response data
|
|
12
|
+
*/
|
|
13
|
+
get: async endpoint => {
|
|
8
14
|
try {
|
|
9
|
-
const response = await axios.get(`${
|
|
15
|
+
const response = await axios.get(`${onairosApi.baseUrl}/${endpoint}`);
|
|
10
16
|
return response.data;
|
|
11
17
|
} catch (error) {
|
|
12
|
-
console.error(
|
|
18
|
+
console.error(`GET ${endpoint} error:`, error);
|
|
13
19
|
throw error;
|
|
14
20
|
}
|
|
15
|
-
}
|
|
16
|
-
|
|
21
|
+
},
|
|
22
|
+
/**
|
|
23
|
+
* Make a POST request to the API
|
|
24
|
+
* @param endpoint The endpoint to request
|
|
25
|
+
* @param data The data to send
|
|
26
|
+
* @returns The response data
|
|
27
|
+
*/
|
|
28
|
+
post: async (endpoint, data) => {
|
|
17
29
|
try {
|
|
18
|
-
const response = await axios.post(`${
|
|
30
|
+
const response = await axios.post(`${onairosApi.baseUrl}/${endpoint}`, data);
|
|
19
31
|
return response.data;
|
|
20
32
|
} catch (error) {
|
|
21
|
-
console.error(
|
|
33
|
+
console.error(`POST ${endpoint} error:`, error);
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
/**
|
|
38
|
+
* Get the server's public key for encryption
|
|
39
|
+
* @returns The server's public key
|
|
40
|
+
*/
|
|
41
|
+
getServerPublicKey: async () => {
|
|
42
|
+
try {
|
|
43
|
+
const response = await onairosApi.get('public/getPublicKey');
|
|
44
|
+
return response.publicKey;
|
|
45
|
+
} catch (error) {
|
|
46
|
+
console.error('Error getting server public key:', error);
|
|
47
|
+
return '';
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
/**
|
|
51
|
+
* Validate credentials with the server
|
|
52
|
+
* @param username The username to validate
|
|
53
|
+
* @returns Whether the credentials are valid
|
|
54
|
+
*/
|
|
55
|
+
validateCredentials: async username => {
|
|
56
|
+
try {
|
|
57
|
+
const response = await onairosApi.post('validate', {
|
|
58
|
+
username
|
|
59
|
+
});
|
|
60
|
+
return response.valid === true;
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error('Error validating credentials:', error);
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
/**
|
|
67
|
+
* Get account information for a user
|
|
68
|
+
* @param username The username to get account info for
|
|
69
|
+
* @returns The account information
|
|
70
|
+
*/
|
|
71
|
+
getAccountInfo: async username => {
|
|
72
|
+
try {
|
|
73
|
+
const response = await onairosApi.post('getAccountInfo', {
|
|
74
|
+
Info: {
|
|
75
|
+
username
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return response.AccountInfo;
|
|
79
|
+
} catch (error) {
|
|
80
|
+
console.error('Error getting account info:', error);
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* Get API URL and token for a user
|
|
86
|
+
* @param params The parameters for the request
|
|
87
|
+
* @returns The API URL and token
|
|
88
|
+
*/
|
|
89
|
+
getApiUrl: async params => {
|
|
90
|
+
try {
|
|
91
|
+
const response = await onairosApi.post('getAPIUrlMobile', {
|
|
92
|
+
Info: {
|
|
93
|
+
storage: 'local',
|
|
94
|
+
appId: params.appId,
|
|
95
|
+
confirmations: params.confirmations,
|
|
96
|
+
developerURL: 'devURL',
|
|
97
|
+
EncryptedUserPin: params.encryptedModelKey,
|
|
98
|
+
account: params.username,
|
|
99
|
+
proofMode: false
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
if (response && response.apiUrl && response.token) {
|
|
103
|
+
return {
|
|
104
|
+
apiUrl: response.apiUrl,
|
|
105
|
+
token: response.token
|
|
106
|
+
};
|
|
107
|
+
} else {
|
|
108
|
+
throw new Error('Invalid response from getAPIUrlMobile');
|
|
109
|
+
}
|
|
110
|
+
} catch (error) {
|
|
111
|
+
console.error('Error getting API URL:', error);
|
|
22
112
|
throw error;
|
|
23
113
|
}
|
|
24
114
|
}
|
|
25
|
-
}
|
|
26
|
-
export const onairosApi = new OnairosApi();
|
|
115
|
+
};
|
|
27
116
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["axios","
|
|
1
|
+
{"version":3,"names":["axios","onairosApi","baseUrl","get","endpoint","response","data","error","console","post","getServerPublicKey","publicKey","validateCredentials","username","valid","getAccountInfo","Info","AccountInfo","getApiUrl","params","storage","appId","confirmations","developerURL","EncryptedUserPin","encryptedModelKey","account","proofMode","apiUrl","token","Error"],"sourceRoot":"..\\..\\..\\src","sources":["api/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React, { useState, useCallback, useEffect } from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import { OnairosButton } from './OnairosButton';
|
|
4
|
+
import { hasCredentials, getCredentials } from '../utils/secureStorage';
|
|
5
|
+
/**
|
|
6
|
+
* Main Onairos component - wraps OnairosButton with additional state management and logic
|
|
7
|
+
*/
|
|
8
|
+
export const Onairos = ({
|
|
9
|
+
AppName,
|
|
10
|
+
returnLink,
|
|
11
|
+
requestData,
|
|
12
|
+
buttonType = 'normal',
|
|
13
|
+
buttonForm = 'default',
|
|
14
|
+
buttonWidth,
|
|
15
|
+
buttonHeight,
|
|
16
|
+
color,
|
|
17
|
+
hasStroke,
|
|
18
|
+
preferredPlatform,
|
|
19
|
+
onResolved,
|
|
20
|
+
onRejection,
|
|
21
|
+
testMode = false,
|
|
22
|
+
containerStyle
|
|
23
|
+
}) => {
|
|
24
|
+
const [isInitialized, setIsInitialized] = useState(false);
|
|
25
|
+
const [hasExistingCredentials, setHasExistingCredentials] = useState(false);
|
|
26
|
+
const initialize = useCallback(async () => {
|
|
27
|
+
try {
|
|
28
|
+
// Check for existing credentials
|
|
29
|
+
const credentialsExist = await hasCredentials();
|
|
30
|
+
setHasExistingCredentials(credentialsExist);
|
|
31
|
+
if (credentialsExist) {
|
|
32
|
+
// Load credentials to verify they are valid
|
|
33
|
+
const credentials = await getCredentials();
|
|
34
|
+
if (!credentials || !credentials.username || !credentials.userPin) {
|
|
35
|
+
setHasExistingCredentials(false);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error('Error initializing Onairos:', error);
|
|
40
|
+
} finally {
|
|
41
|
+
setIsInitialized(true);
|
|
42
|
+
}
|
|
43
|
+
}, []);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
initialize();
|
|
46
|
+
}, [initialize]);
|
|
47
|
+
const handleResolved = useCallback((apiUrl, token, userData) => {
|
|
48
|
+
if (onResolved) {
|
|
49
|
+
onResolved(apiUrl, token, userData);
|
|
50
|
+
}
|
|
51
|
+
}, [onResolved]);
|
|
52
|
+
const handleRejection = useCallback(error => {
|
|
53
|
+
if (onRejection) {
|
|
54
|
+
onRejection(error);
|
|
55
|
+
}
|
|
56
|
+
}, [onRejection]);
|
|
57
|
+
if (!isInitialized) {
|
|
58
|
+
// Could render a loading state here if needed
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
62
|
+
style: containerStyle
|
|
63
|
+
}, /*#__PURE__*/React.createElement(OnairosButton, {
|
|
64
|
+
AppName: AppName,
|
|
65
|
+
returnLink: returnLink,
|
|
66
|
+
requestData: requestData,
|
|
67
|
+
buttonType: buttonType,
|
|
68
|
+
buttonForm: buttonForm,
|
|
69
|
+
buttonWidth: buttonWidth,
|
|
70
|
+
buttonHeight: buttonHeight,
|
|
71
|
+
color: color,
|
|
72
|
+
hasStroke: hasStroke,
|
|
73
|
+
enabled: true,
|
|
74
|
+
preferredPlatform: preferredPlatform,
|
|
75
|
+
onResolved: handleResolved,
|
|
76
|
+
onRejection: handleRejection,
|
|
77
|
+
preCheck: async () => true,
|
|
78
|
+
testMode: testMode
|
|
79
|
+
}));
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=Onairos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","useCallback","useEffect","View","OnairosButton","hasCredentials","getCredentials","Onairos","AppName","returnLink","requestData","buttonType","buttonForm","buttonWidth","buttonHeight","color","hasStroke","preferredPlatform","onResolved","onRejection","testMode","containerStyle","isInitialized","setIsInitialized","hasExistingCredentials","setHasExistingCredentials","initialize","credentialsExist","credentials","username","userPin","error","console","handleResolved","apiUrl","token","userData","handleRejection","createElement","style","enabled","preCheck"],"sourceRoot":"..\\..\\..\\src","sources":["components/Onairos.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,QAAQ,OAAO;AAC/D,SAAmBC,IAAI,QAAQ,cAAc;AAC7C,SAASC,aAAa,QAAQ,iBAAiB;AAE/C,SAASC,cAAc,EAAEC,cAAc,QAAQ,wBAAwB;AA4BvE;AACA;AACA;AACA,OAAO,MAAMC,OAA+B,GAAGA,CAAC;EAC9CC,OAAO;EACPC,UAAU;EACVC,WAAW;EACXC,UAAU,GAAG,QAAQ;EACrBC,UAAU,GAAG,SAAS;EACtBC,WAAW;EACXC,YAAY;EACZC,KAAK;EACLC,SAAS;EACTC,iBAAiB;EACjBC,UAAU;EACVC,WAAW;EACXC,QAAQ,GAAG,KAAK;EAChBC;AACF,CAAC,KAAK;EACJ,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGvB,QAAQ,CAAC,KAAK,CAAC;EACzD,MAAM,CAACwB,sBAAsB,EAAEC,yBAAyB,CAAC,GAAGzB,QAAQ,CAAC,KAAK,CAAC;EAE3E,MAAM0B,UAAU,GAAGzB,WAAW,CAAC,YAAY;IACzC,IAAI;MACF;MACA,MAAM0B,gBAAgB,GAAG,MAAMtB,cAAc,CAAC,CAAC;MAC/CoB,yBAAyB,CAACE,gBAAgB,CAAC;MAE3C,IAAIA,gBAAgB,EAAE;QACpB;QACA,MAAMC,WAAW,GAAG,MAAMtB,cAAc,CAAC,CAAC;QAC1C,IAAI,CAACsB,WAAW,IAAI,CAACA,WAAW,CAACC,QAAQ,IAAI,CAACD,WAAW,CAACE,OAAO,EAAE;UACjEL,yBAAyB,CAAC,KAAK,CAAC;QAClC;MACF;IACF,CAAC,CAAC,OAAOM,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;IACrD,CAAC,SAAS;MACRR,gBAAgB,CAAC,IAAI,CAAC;IACxB;EACF,CAAC,EAAE,EAAE,CAAC;EAENrB,SAAS,CAAC,MAAM;IACdwB,UAAU,CAAC,CAAC;EACd,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAEhB,MAAMO,cAAc,GAAGhC,WAAW,CAAC,CAACiC,MAAc,EAAEC,KAAa,EAAEC,QAAa,KAAK;IACnF,IAAIlB,UAAU,EAAE;MACdA,UAAU,CAACgB,MAAM,EAAEC,KAAK,EAAEC,QAAQ,CAAC;IACrC;EACF,CAAC,EAAE,CAAClB,UAAU,CAAC,CAAC;EAEhB,MAAMmB,eAAe,GAAGpC,WAAW,CAAE8B,KAAc,IAAK;IACtD,IAAIZ,WAAW,EAAE;MACfA,WAAW,CAACY,KAAK,CAAC;IACpB;EACF,CAAC,EAAE,CAACZ,WAAW,CAAC,CAAC;EAEjB,IAAI,CAACG,aAAa,EAAE;IAClB;IACA,OAAO,IAAI;EACb;EAEA,oBACEvB,KAAA,CAAAuC,aAAA,CAACnC,IAAI;IAACoC,KAAK,EAAElB;EAAe,gBAC1BtB,KAAA,CAAAuC,aAAA,CAAClC,aAAa;IACZI,OAAO,EAAEA,OAAQ;IACjBC,UAAU,EAAEA,UAAW;IACvBC,WAAW,EAAEA,WAAY;IACzBC,UAAU,EAAEA,UAAW;IACvBC,UAAU,EAAEA,UAAW;IACvBC,WAAW,EAAEA,WAAY;IACzBC,YAAY,EAAEA,YAAa;IAC3BC,KAAK,EAAEA,KAAM;IACbC,SAAS,EAAEA,SAAU;IACrBwB,OAAO,EAAE,IAAK;IACdvB,iBAAiB,EAAEA,iBAAkB;IACrCC,UAAU,EAAEe,cAAe;IAC3Bd,WAAW,EAAEkB,eAAgB;IAC7BI,QAAQ,EAAE,MAAAA,CAAA,KAAY,IAAK;IAC3BrB,QAAQ,EAAEA;EAAS,CACpB,CACG,CAAC;AAEX,CAAC","ignoreList":[]}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { TouchableOpacity, Text, StyleSheet, View } from 'react-native';
|
|
1
|
+
import React, { useState, useCallback } from 'react';
|
|
2
|
+
import { TouchableOpacity, Text, StyleSheet, View, ActivityIndicator, Alert } from 'react-native';
|
|
3
3
|
import { UniversalOnboarding } from './UniversalOnboarding';
|
|
4
|
+
import { Overlay } from './Overlay';
|
|
5
|
+
import { hasCredentials, getCredentials, clearCredentials } from '../utils/secureStorage';
|
|
6
|
+
import { onairosApi } from '../api';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* OnairosButton Component - A sign-in button similar to Google/Apple sign-in
|
|
10
|
+
*/
|
|
4
11
|
export const OnairosButton = ({
|
|
5
12
|
returnLink,
|
|
6
13
|
prefillUrl,
|
|
7
14
|
AppName,
|
|
8
15
|
buttonType = 'normal',
|
|
9
16
|
requestData,
|
|
10
|
-
buttonWidth =
|
|
11
|
-
buttonHeight,
|
|
12
|
-
hasStroke =
|
|
17
|
+
buttonWidth = 240,
|
|
18
|
+
buttonHeight = 48,
|
|
19
|
+
hasStroke = true,
|
|
13
20
|
enabled = true,
|
|
14
21
|
buttonForm = 'default',
|
|
15
22
|
onRejection,
|
|
@@ -22,38 +29,97 @@ export const OnairosButton = ({
|
|
|
22
29
|
testMode = false
|
|
23
30
|
}) => {
|
|
24
31
|
const [showOnboarding, setShowOnboarding] = useState(false);
|
|
32
|
+
const [showOverlay, setShowOverlay] = useState(false);
|
|
33
|
+
const [storedCredentials, setStoredCredentials] = useState(null);
|
|
34
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
35
|
+
const isDarkMode = color === 'black' || !color && !hasStroke;
|
|
25
36
|
const handlePress = async () => {
|
|
26
|
-
if (!enabled) return;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
if (!enabled || isLoading) return;
|
|
38
|
+
setIsLoading(true);
|
|
39
|
+
try {
|
|
40
|
+
if (preCheck) {
|
|
41
|
+
const shouldProceed = await preCheck();
|
|
42
|
+
if (!shouldProceed) {
|
|
43
|
+
onRejection === null || onRejection === void 0 || onRejection('Precheck validation failed');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
32
46
|
}
|
|
47
|
+
|
|
48
|
+
// Check if credentials exist
|
|
49
|
+
const hasStoredCreds = await hasCredentials();
|
|
50
|
+
if (hasStoredCreds) {
|
|
51
|
+
// If credentials exist, fetch them and verify
|
|
52
|
+
const credentials = await getCredentials();
|
|
53
|
+
if (!credentials || !credentials.username || !credentials.userPin) {
|
|
54
|
+
// Invalid credentials, clear and start fresh
|
|
55
|
+
await clearCredentials();
|
|
56
|
+
setShowOnboarding(true);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Validate credentials with server
|
|
61
|
+
const isValid = await onairosApi.validateCredentials(credentials.username);
|
|
62
|
+
if (!isValid) {
|
|
63
|
+
// Clear invalid credentials
|
|
64
|
+
await clearCredentials();
|
|
65
|
+
setShowOnboarding(true);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Store and display overlay with valid credentials
|
|
70
|
+
setStoredCredentials(credentials);
|
|
71
|
+
setShowOverlay(true);
|
|
72
|
+
} else {
|
|
73
|
+
// If no credentials, show onboarding
|
|
74
|
+
setShowOnboarding(true);
|
|
75
|
+
}
|
|
76
|
+
} catch (error) {
|
|
77
|
+
console.error('Error during button press flow:', error);
|
|
78
|
+
Alert.alert('Error', 'An error occurred. Please try again later.');
|
|
79
|
+
onRejection === null || onRejection === void 0 || onRejection(error instanceof Error ? error.message : 'Unknown error');
|
|
80
|
+
} finally {
|
|
81
|
+
setIsLoading(false);
|
|
33
82
|
}
|
|
34
|
-
setShowOnboarding(true);
|
|
35
83
|
};
|
|
36
|
-
const handleOnboardingComplete = (apiUrl, token, data) => {
|
|
84
|
+
const handleOnboardingComplete = useCallback((apiUrl, token, data) => {
|
|
37
85
|
setShowOnboarding(false);
|
|
38
|
-
|
|
39
|
-
|
|
86
|
+
if (onResolved) {
|
|
87
|
+
onResolved(apiUrl, token, data);
|
|
88
|
+
}
|
|
89
|
+
}, [onResolved]);
|
|
90
|
+
const handleOverlayResolved = useCallback((apiUrl, token, data) => {
|
|
91
|
+
setShowOverlay(false);
|
|
92
|
+
if (onResolved) {
|
|
93
|
+
onResolved(apiUrl, token, data);
|
|
94
|
+
}
|
|
95
|
+
}, [onResolved]);
|
|
96
|
+
|
|
97
|
+
// Calculate button styles based on props
|
|
40
98
|
const buttonStyle = [styles.button, buttonType === 'pill' && styles.pillButton, hasStroke && styles.strokedButton, {
|
|
41
|
-
width: buttonWidth
|
|
42
|
-
}, buttonHeight ? {
|
|
99
|
+
width: buttonWidth,
|
|
43
100
|
height: buttonHeight
|
|
44
|
-
}
|
|
101
|
+
}, color ? {
|
|
45
102
|
backgroundColor: color
|
|
46
|
-
} : null, swerv && styles.swervButton].filter(Boolean);
|
|
47
|
-
|
|
103
|
+
} : null, isDarkMode ? styles.darkButton : styles.lightButton, swerv && styles.swervButton, !enabled && styles.disabledButton].filter(Boolean);
|
|
104
|
+
|
|
105
|
+
// Calculate text styles based on props
|
|
106
|
+
const textStyle = [styles.buttonText, isDarkMode ? styles.lightText : styles.darkText, !enabled && styles.disabledText].filter(Boolean);
|
|
48
107
|
return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
49
108
|
style: buttonStyle,
|
|
50
109
|
onPress: handlePress,
|
|
51
|
-
disabled: !enabled
|
|
52
|
-
|
|
110
|
+
disabled: !enabled || isLoading,
|
|
111
|
+
accessibilityLabel: `Sign in with Onairos`
|
|
112
|
+
}, isLoading ? /*#__PURE__*/React.createElement(ActivityIndicator, {
|
|
113
|
+
size: "small",
|
|
114
|
+
color: isDarkMode ? '#fff' : '#000'
|
|
115
|
+
}) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text, {
|
|
53
116
|
style: textStyle
|
|
54
|
-
},
|
|
117
|
+
}, "Sign in with Onairos"))), showOnboarding && /*#__PURE__*/React.createElement(UniversalOnboarding, {
|
|
55
118
|
visible: showOnboarding,
|
|
56
|
-
onClose: () =>
|
|
119
|
+
onClose: () => {
|
|
120
|
+
setShowOnboarding(false);
|
|
121
|
+
onRejection === null || onRejection === void 0 || onRejection('User closed onboarding');
|
|
122
|
+
},
|
|
57
123
|
AppName: AppName,
|
|
58
124
|
requestData: requestData,
|
|
59
125
|
returnLink: returnLink,
|
|
@@ -61,19 +127,24 @@ export const OnairosButton = ({
|
|
|
61
127
|
preferredPlatform: preferredPlatform,
|
|
62
128
|
debug: debug,
|
|
63
129
|
test: testMode
|
|
130
|
+
}), showOverlay && storedCredentials && /*#__PURE__*/React.createElement(Overlay, {
|
|
131
|
+
data: requestData || {},
|
|
132
|
+
username: storedCredentials.username,
|
|
133
|
+
modelKey: storedCredentials.userPin || '',
|
|
134
|
+
onResolved: handleOverlayResolved
|
|
64
135
|
}));
|
|
65
136
|
};
|
|
66
137
|
const styles = StyleSheet.create({
|
|
67
138
|
button: {
|
|
68
|
-
|
|
69
|
-
paddingVertical: 12,
|
|
70
|
-
paddingHorizontal: 24,
|
|
71
|
-
borderRadius: 8,
|
|
139
|
+
flexDirection: 'row',
|
|
72
140
|
alignItems: 'center',
|
|
73
|
-
justifyContent: 'center'
|
|
141
|
+
justifyContent: 'center',
|
|
142
|
+
paddingVertical: 12,
|
|
143
|
+
paddingHorizontal: 16,
|
|
144
|
+
borderRadius: 4
|
|
74
145
|
},
|
|
75
146
|
pillButton: {
|
|
76
|
-
borderRadius:
|
|
147
|
+
borderRadius: 24
|
|
77
148
|
},
|
|
78
149
|
strokedButton: {
|
|
79
150
|
backgroundColor: 'transparent',
|
|
@@ -85,16 +156,30 @@ const styles = StyleSheet.create({
|
|
|
85
156
|
rotate: '-2deg'
|
|
86
157
|
}]
|
|
87
158
|
},
|
|
159
|
+
darkButton: {
|
|
160
|
+
backgroundColor: '#000',
|
|
161
|
+
borderColor: '#000'
|
|
162
|
+
},
|
|
163
|
+
lightButton: {
|
|
164
|
+
backgroundColor: '#fff',
|
|
165
|
+
borderColor: '#000'
|
|
166
|
+
},
|
|
167
|
+
disabledButton: {
|
|
168
|
+
opacity: 0.6
|
|
169
|
+
},
|
|
88
170
|
buttonText: {
|
|
89
|
-
color: '#fff',
|
|
90
171
|
fontSize: 16,
|
|
91
|
-
fontWeight: '600'
|
|
172
|
+
fontWeight: '600',
|
|
173
|
+
textAlign: 'center'
|
|
174
|
+
},
|
|
175
|
+
lightText: {
|
|
176
|
+
color: '#fff'
|
|
92
177
|
},
|
|
93
|
-
|
|
178
|
+
darkText: {
|
|
94
179
|
color: '#000'
|
|
95
180
|
},
|
|
96
|
-
|
|
97
|
-
|
|
181
|
+
disabledText: {
|
|
182
|
+
opacity: 0.7
|
|
98
183
|
}
|
|
99
184
|
});
|
|
100
185
|
//# sourceMappingURL=OnairosButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","TouchableOpacity","Text","StyleSheet","View","UniversalOnboarding","OnairosButton","returnLink","prefillUrl","AppName","buttonType","requestData","buttonWidth","buttonHeight","hasStroke","enabled","buttonForm","onRejection","onResolved","preCheck","color","swerv","debug","preferredPlatform","testMode","showOnboarding","setShowOnboarding","handlePress","shouldProceed","handleOnboardingComplete","apiUrl","token","data","buttonStyle","styles","button","pillButton","strokedButton","width","height","backgroundColor","swervButton","filter","Boolean","textStyle","buttonText","
|
|
1
|
+
{"version":3,"names":["React","useState","useCallback","TouchableOpacity","Text","StyleSheet","View","ActivityIndicator","Alert","UniversalOnboarding","Overlay","hasCredentials","getCredentials","clearCredentials","onairosApi","OnairosButton","returnLink","prefillUrl","AppName","buttonType","requestData","buttonWidth","buttonHeight","hasStroke","enabled","buttonForm","onRejection","onResolved","preCheck","color","swerv","debug","preferredPlatform","testMode","showOnboarding","setShowOnboarding","showOverlay","setShowOverlay","storedCredentials","setStoredCredentials","isLoading","setIsLoading","isDarkMode","handlePress","shouldProceed","hasStoredCreds","credentials","username","userPin","isValid","validateCredentials","error","console","alert","Error","message","handleOnboardingComplete","apiUrl","token","data","handleOverlayResolved","buttonStyle","styles","button","pillButton","strokedButton","width","height","backgroundColor","darkButton","lightButton","swervButton","disabledButton","filter","Boolean","textStyle","buttonText","lightText","darkText","disabledText","createElement","style","onPress","disabled","accessibilityLabel","size","Fragment","visible","onClose","onComplete","test","modelKey","create","flexDirection","alignItems","justifyContent","paddingVertical","paddingHorizontal","borderRadius","borderWidth","borderColor","transform","rotate","opacity","fontSize","fontWeight","textAlign"],"sourceRoot":"..\\..\\..\\src","sources":["components/OnairosButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
-
import React, { useState, useEffect } from 'react';
|
|
3
|
-
import { View, Text, StyleSheet, TouchableOpacity, ScrollView, Alert, Platform } from 'react-native';
|
|
2
|
+
import React, { useState, useEffect, useRef } from 'react';
|
|
3
|
+
import { View, Text, StyleSheet, TouchableOpacity, ScrollView, Alert, Platform, Dimensions } from 'react-native';
|
|
4
4
|
import { BottomSheetModal, BottomSheetBackdrop } from '@gorhom/bottom-sheet';
|
|
5
5
|
// import DeviceInfo from 'react-native-device-info'; // Comment out device info import
|
|
6
6
|
import { COLORS } from '../constants';
|
|
@@ -14,7 +14,9 @@ export const Overlay = ({
|
|
|
14
14
|
}) => {
|
|
15
15
|
const [selections, setSelections] = useState({});
|
|
16
16
|
const [details, setDetails] = useState('');
|
|
17
|
-
const bottomSheetRef =
|
|
17
|
+
const bottomSheetRef = useRef(null);
|
|
18
|
+
const snapPoints = ['60%']; // Set to 60% of screen height
|
|
19
|
+
|
|
18
20
|
useEffect(() => {
|
|
19
21
|
// Initialize selection state
|
|
20
22
|
const initialSelections = {};
|
|
@@ -23,6 +25,12 @@ export const Overlay = ({
|
|
|
23
25
|
});
|
|
24
26
|
setSelections(initialSelections);
|
|
25
27
|
getDetails();
|
|
28
|
+
|
|
29
|
+
// Present the bottom sheet when component mounts
|
|
30
|
+
setTimeout(() => {
|
|
31
|
+
var _bottomSheetRef$curre;
|
|
32
|
+
(_bottomSheetRef$curre = bottomSheetRef.current) === null || _bottomSheetRef$curre === void 0 || _bottomSheetRef$curre.present();
|
|
33
|
+
}, 100);
|
|
26
34
|
}, []);
|
|
27
35
|
const getDetails = async () => {
|
|
28
36
|
try {
|
|
@@ -37,8 +45,8 @@ export const Overlay = ({
|
|
|
37
45
|
}
|
|
38
46
|
};
|
|
39
47
|
const closeOverlay = () => {
|
|
40
|
-
var _bottomSheetRef$
|
|
41
|
-
(_bottomSheetRef$
|
|
48
|
+
var _bottomSheetRef$curre2;
|
|
49
|
+
(_bottomSheetRef$curre2 = bottomSheetRef.current) === null || _bottomSheetRef$curre2 === void 0 || _bottomSheetRef$curre2.dismiss();
|
|
42
50
|
};
|
|
43
51
|
const confirmSelection = async () => {
|
|
44
52
|
try {
|
|
@@ -80,11 +88,16 @@ export const Overlay = ({
|
|
|
80
88
|
const selectedCount = Object.values(selections).filter(Boolean).length;
|
|
81
89
|
return /*#__PURE__*/React.createElement(BottomSheetModal, {
|
|
82
90
|
ref: bottomSheetRef,
|
|
83
|
-
snapPoints:
|
|
91
|
+
snapPoints: snapPoints,
|
|
92
|
+
handleIndicatorStyle: styles.handleIndicator,
|
|
84
93
|
backdropComponent: props => /*#__PURE__*/React.createElement(BottomSheetBackdrop, _extends({}, props, {
|
|
85
94
|
appearsOnIndex: 0,
|
|
86
|
-
disappearsOnIndex: -1
|
|
87
|
-
|
|
95
|
+
disappearsOnIndex: -1,
|
|
96
|
+
opacity: 0.7
|
|
97
|
+
})),
|
|
98
|
+
enablePanDownToClose: true,
|
|
99
|
+
keyboardBehavior: "interactive",
|
|
100
|
+
keyboardBlurBehavior: "restore"
|
|
88
101
|
}, /*#__PURE__*/React.createElement(View, {
|
|
89
102
|
style: styles.container
|
|
90
103
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -134,12 +147,19 @@ export const Overlay = ({
|
|
|
134
147
|
style: styles.footerButtonText
|
|
135
148
|
}, "Confirm")))));
|
|
136
149
|
};
|
|
150
|
+
const {
|
|
151
|
+
width: SCREEN_WIDTH
|
|
152
|
+
} = Dimensions.get('window');
|
|
137
153
|
const styles = StyleSheet.create({
|
|
138
154
|
container: {
|
|
139
155
|
flex: 1,
|
|
140
156
|
backgroundColor: COLORS.white,
|
|
141
|
-
|
|
142
|
-
|
|
157
|
+
width: SCREEN_WIDTH
|
|
158
|
+
},
|
|
159
|
+
handleIndicator: {
|
|
160
|
+
backgroundColor: '#999',
|
|
161
|
+
width: 40,
|
|
162
|
+
height: 5
|
|
143
163
|
},
|
|
144
164
|
header: {
|
|
145
165
|
flexDirection: 'row',
|
|
@@ -162,7 +182,7 @@ const styles = StyleSheet.create({
|
|
|
162
182
|
},
|
|
163
183
|
username: {
|
|
164
184
|
fontSize: 18,
|
|
165
|
-
color: COLORS.
|
|
185
|
+
color: COLORS.white
|
|
166
186
|
},
|
|
167
187
|
content: {
|
|
168
188
|
flex: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","View","Text","StyleSheet","TouchableOpacity","ScrollView","Alert","Platform","BottomSheetModal","BottomSheetBackdrop","COLORS","onairosApi","encryptModelKey","getServerPublicKey","Overlay","data","username","modelKey","onResolved","selections","setSelections","details","setDetails","bottomSheetRef","
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","useRef","View","Text","StyleSheet","TouchableOpacity","ScrollView","Alert","Platform","Dimensions","BottomSheetModal","BottomSheetBackdrop","COLORS","onairosApi","encryptModelKey","getServerPublicKey","Overlay","data","username","modelKey","onResolved","selections","setSelections","details","setDetails","bottomSheetRef","snapPoints","initialSelections","Object","keys","forEach","key","getDetails","setTimeout","_bottomSheetRef$curre","current","present","response","post","Info","AccountInfo","e","console","error","closeOverlay","_bottomSheetRef$curre2","dismiss","confirmSelection","appId","select","ios","android","default","serverPublicKey","encryptedModelKey","storage","confirmations","developerURL","EncryptedUserPin","account","proofMode","apiUrl","token","showErrorModal","errorMessage","alert","text","selectedCount","values","filter","Boolean","length","createElement","ref","handleIndicatorStyle","styles","handleIndicator","backdropComponent","props","_extends","appearsOnIndex","disappearsOnIndex","opacity","enablePanDownToClose","keyboardBehavior","keyboardBlurBehavior","style","container","header","headerTitle","onPress","closeButton","content","entries","map","value","card","checkboxContainer","prev","checkbox","checkboxSelected","cardContent","cardTitle","type","cardDescription","descriptions","reward","cardReward","footer","footerButton","footerButtonText","width","SCREEN_WIDTH","get","create","flex","backgroundColor","white","height","flexDirection","alignItems","justifyContent","padding","primary","borderTopLeftRadius","borderTopRightRadius","fontSize","color","fontWeight","borderRadius","marginBottom","shadowColor","black","shadowOffset","shadowOpacity","shadowRadius","elevation","borderWidth","borderColor","marginRight","gray","success","borderTopWidth","borderTopColor","lightGray","paddingVertical","paddingHorizontal"],"sourceRoot":"..\\..\\..\\src","sources":["components/Overlay.tsx"],"mappings":"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","ignoreList":[]}
|