@onairos/react-native 2.0.4 → 2.0.6
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/components/OnairosButton.js +15 -18
- package/lib/commonjs/components/OnairosButton.js.map +1 -1
- package/lib/commonjs/hooks/useConnections.js +28 -8
- package/lib/commonjs/hooks/useConnections.js.map +1 -1
- package/lib/commonjs/hooks/useCredentials.js +16 -6
- package/lib/commonjs/hooks/useCredentials.js.map +1 -1
- package/lib/module/components/OnairosButton.js +15 -18
- package/lib/module/components/OnairosButton.js.map +1 -1
- package/lib/module/hooks/useConnections.js +28 -8
- package/lib/module/hooks/useConnections.js.map +1 -1
- package/lib/module/hooks/useCredentials.js +16 -6
- package/lib/module/hooks/useCredentials.js.map +1 -1
- package/package.json +1 -1
- package/src/components/OnairosButton.tsx +8 -1
- package/src/hooks/useConnections.ts +33 -11
- package/src/hooks/useCredentials.ts +18 -5
- package/src/types/index.ts +4 -1
|
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.OnairosButton = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
|
-
var _UniversalOnboarding = require("./UniversalOnboarding");
|
|
10
9
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
|
+
// import { UniversalOnboarding } from './UniversalOnboarding';
|
|
11
|
+
|
|
11
12
|
const OnairosButton = ({
|
|
12
13
|
returnLink,
|
|
13
14
|
prefillUrl,
|
|
@@ -38,12 +39,18 @@ const OnairosButton = ({
|
|
|
38
39
|
return;
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
|
|
43
|
+
// Temporarily disabled OAuth integration
|
|
44
|
+
console.log('OAuth integration temporarily disabled');
|
|
45
|
+
onRejection === null || onRejection === void 0 || onRejection();
|
|
46
|
+
/*
|
|
47
|
+
if (buttonForm === 'signup') {
|
|
48
|
+
setShowOnboarding(true);
|
|
49
|
+
} else {
|
|
50
|
+
// Handle login flow
|
|
51
|
+
// TODO: Implement login flow according to account.md
|
|
52
|
+
}
|
|
53
|
+
*/
|
|
47
54
|
};
|
|
48
55
|
const handleOnboardingComplete = (apiUrl, token, data) => {
|
|
49
56
|
setShowOnboarding(false);
|
|
@@ -63,17 +70,7 @@ const OnairosButton = ({
|
|
|
63
70
|
disabled: !enabled
|
|
64
71
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
65
72
|
style: textStyle
|
|
66
|
-
}, AppName))
|
|
67
|
-
visible: showOnboarding,
|
|
68
|
-
onClose: () => setShowOnboarding(false),
|
|
69
|
-
AppName: AppName,
|
|
70
|
-
requestData: requestData,
|
|
71
|
-
returnLink: returnLink,
|
|
72
|
-
onComplete: handleOnboardingComplete,
|
|
73
|
-
preferredPlatform: preferredPlatform,
|
|
74
|
-
debug: debug,
|
|
75
|
-
test: testMode
|
|
76
|
-
}));
|
|
73
|
+
}, AppName)));
|
|
77
74
|
};
|
|
78
75
|
exports.OnairosButton = OnairosButton;
|
|
79
76
|
const styles = _reactNative.StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","OnairosButton","returnLink","prefillUrl","AppName","buttonType","requestData","buttonWidth","buttonHeight","hasStroke","enabled","buttonForm","onRejection","onResolved","preCheck","color","swerv","debug","preferredPlatform","testMode","showOnboarding","setShowOnboarding","useState","handlePress","shouldProceed","console","log","handleOnboardingComplete","apiUrl","token","data","buttonStyle","styles","button","pillButton","strokedButton","width","height","backgroundColor","swervButton","filter","Boolean","textStyle","buttonText","strokedButtonText","customColorText","createElement","View","TouchableOpacity","style","onPress","disabled","Text","exports","StyleSheet","create","paddingVertical","paddingHorizontal","borderRadius","alignItems","justifyContent","borderWidth","borderColor","transform","rotate","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/OnairosButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,7 +13,9 @@ const useConnections = () => {
|
|
|
13
13
|
const [isConnecting, setIsConnecting] = (0, _react.useState)(false);
|
|
14
14
|
const getConnectionStatus = (0, _react.useCallback)(async () => {
|
|
15
15
|
try {
|
|
16
|
-
const stored = await Keychain.getGenericPassword(
|
|
16
|
+
const stored = await Keychain.getGenericPassword({
|
|
17
|
+
service: _constants.STORAGE_KEYS.connections
|
|
18
|
+
});
|
|
17
19
|
if (stored) {
|
|
18
20
|
return JSON.parse(stored.password);
|
|
19
21
|
}
|
|
@@ -33,22 +35,38 @@ const useConnections = () => {
|
|
|
33
35
|
const connectPlatform = (0, _react.useCallback)(async platform => {
|
|
34
36
|
setIsConnecting(true);
|
|
35
37
|
try {
|
|
38
|
+
console.log(`[OAuth] Starting connection for ${platform}`);
|
|
39
|
+
|
|
36
40
|
// Get OAuth URL from API
|
|
37
|
-
const
|
|
41
|
+
const oauthEndpoint = _constants.API_ENDPOINTS.oauth[platform];
|
|
42
|
+
if (!oauthEndpoint) {
|
|
43
|
+
throw new Error(`No OAuth endpoint configured for ${platform}`);
|
|
44
|
+
}
|
|
45
|
+
const apiUrl = `${_constants.API_ENDPOINTS.base}${oauthEndpoint}`;
|
|
46
|
+
console.log(`[OAuth] Fetching URL from: ${apiUrl}`);
|
|
47
|
+
const response = await fetch(apiUrl);
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
throw new Error(`API request failed with status ${response.status}`);
|
|
50
|
+
}
|
|
38
51
|
const {
|
|
39
52
|
url
|
|
40
53
|
} = await response.json();
|
|
41
54
|
if (!url) {
|
|
42
|
-
throw new Error('No OAuth URL received');
|
|
55
|
+
throw new Error('No OAuth URL received from API');
|
|
56
|
+
}
|
|
57
|
+
console.log(`[OAuth] Opening URL: ${url}`);
|
|
58
|
+
|
|
59
|
+
// Check if URL can be opened
|
|
60
|
+
const canOpen = await _reactNative.Linking.canOpenURL(url);
|
|
61
|
+
if (!canOpen) {
|
|
62
|
+
throw new Error(`Cannot open URL: ${url}`);
|
|
43
63
|
}
|
|
44
64
|
|
|
45
65
|
// Open OAuth URL
|
|
46
66
|
await _reactNative.Linking.openURL(url);
|
|
47
|
-
|
|
48
|
-
// Connection status will be updated when the OAuth callback is received
|
|
49
|
-
// This is handled in the UniversalOnboarding component
|
|
67
|
+
console.log(`[OAuth] URL opened successfully`);
|
|
50
68
|
} catch (error) {
|
|
51
|
-
console.error(`Error connecting to ${platform}:`, error);
|
|
69
|
+
console.error(`[OAuth] Error connecting to ${platform}:`, error);
|
|
52
70
|
throw error;
|
|
53
71
|
} finally {
|
|
54
72
|
setIsConnecting(false);
|
|
@@ -66,9 +84,11 @@ const useConnections = () => {
|
|
|
66
84
|
}, [getConnectionStatus, saveConnectionStatus]);
|
|
67
85
|
const handleOAuthCallback = (0, _react.useCallback)(async (platform, data) => {
|
|
68
86
|
try {
|
|
87
|
+
console.log(`[OAuth] Handling callback for ${platform}:`, data);
|
|
69
88
|
const status = await getConnectionStatus();
|
|
70
89
|
status[platform] = {
|
|
71
|
-
userName: data.userName
|
|
90
|
+
userName: data.userName || `User (${platform})`,
|
|
91
|
+
connected: true
|
|
72
92
|
};
|
|
73
93
|
await saveConnectionStatus(status);
|
|
74
94
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","Keychain","_interopRequireWildcard","_constants","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useConnections","isConnecting","setIsConnecting","useState","getConnectionStatus","useCallback","stored","getGenericPassword","STORAGE_KEYS","connections","JSON","parse","password","error","console","saveConnectionStatus","status","setGenericPassword","stringify","connectPlatform","platform","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","Keychain","_interopRequireWildcard","_constants","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useConnections","isConnecting","setIsConnecting","useState","getConnectionStatus","useCallback","stored","getGenericPassword","service","STORAGE_KEYS","connections","JSON","parse","password","error","console","saveConnectionStatus","status","setGenericPassword","stringify","connectPlatform","platform","log","oauthEndpoint","API_ENDPOINTS","oauth","Error","apiUrl","base","response","fetch","ok","url","json","canOpen","Linking","canOpenURL","openURL","disconnectPlatform","handleOAuthCallback","data","userName","connected","exports"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useConnections.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,7 +11,9 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
11
11
|
const useCredentials = () => {
|
|
12
12
|
const hasCredentials = (0, _react.useCallback)(async () => {
|
|
13
13
|
try {
|
|
14
|
-
const credentials = await Keychain.getGenericPassword(
|
|
14
|
+
const credentials = await Keychain.getGenericPassword({
|
|
15
|
+
service: _constants.STORAGE_KEYS.credentials
|
|
16
|
+
});
|
|
15
17
|
return !!credentials;
|
|
16
18
|
} catch (error) {
|
|
17
19
|
console.error('Error checking credentials:', error);
|
|
@@ -20,7 +22,9 @@ const useCredentials = () => {
|
|
|
20
22
|
}, []);
|
|
21
23
|
const getCredentials = (0, _react.useCallback)(async () => {
|
|
22
24
|
try {
|
|
23
|
-
const credentials = await Keychain.getGenericPassword(
|
|
25
|
+
const credentials = await Keychain.getGenericPassword({
|
|
26
|
+
service: _constants.STORAGE_KEYS.credentials
|
|
27
|
+
});
|
|
24
28
|
if (credentials) {
|
|
25
29
|
return JSON.parse(credentials.password);
|
|
26
30
|
}
|
|
@@ -32,11 +36,15 @@ const useCredentials = () => {
|
|
|
32
36
|
}, []);
|
|
33
37
|
const storeCredentials = (0, _react.useCallback)(async (username, userPin, accessToken) => {
|
|
34
38
|
try {
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
const options = {
|
|
40
|
+
accessControl: Keychain.ACCESS_CONTROL.BIOMETRY_ANY,
|
|
41
|
+
accessible: Keychain.ACCESSIBLE.WHEN_UNLOCKED,
|
|
42
|
+
service: _constants.STORAGE_KEYS.credentials
|
|
43
|
+
};
|
|
44
|
+
await Keychain.setGenericPassword(username, JSON.stringify({
|
|
37
45
|
userPin,
|
|
38
46
|
accessToken
|
|
39
|
-
}));
|
|
47
|
+
}), options);
|
|
40
48
|
return true;
|
|
41
49
|
} catch (error) {
|
|
42
50
|
console.error('Error storing credentials:', error);
|
|
@@ -45,7 +53,9 @@ const useCredentials = () => {
|
|
|
45
53
|
}, []);
|
|
46
54
|
const clearCredentials = (0, _react.useCallback)(async () => {
|
|
47
55
|
try {
|
|
48
|
-
await Keychain.resetGenericPassword(
|
|
56
|
+
await Keychain.resetGenericPassword({
|
|
57
|
+
service: _constants.STORAGE_KEYS.credentials
|
|
58
|
+
});
|
|
49
59
|
} catch (error) {
|
|
50
60
|
console.error('Error clearing credentials:', error);
|
|
51
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","Keychain","_interopRequireWildcard","_constants","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useCredentials","hasCredentials","useCallback","credentials","getGenericPassword","STORAGE_KEYS","error","console","getCredentials","JSON","parse","password","storeCredentials","username","userPin","accessToken","setGenericPassword","stringify","clearCredentials","resetGenericPassword","validateCredentials","response","fetch","method","headers","body","data","json","isValid","valid","exports"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useCredentials.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAA4C,SAAAE,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAGrC,MAAMkB,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMC,cAAc,GAAG,IAAAC,kBAAW,EAAC,YAA8B;IAC/D,IAAI;MACF,MAAMC,WAAW,GAAG,MAAMzB,QAAQ,CAAC0B,kBAAkB,
|
|
1
|
+
{"version":3,"names":["_react","require","Keychain","_interopRequireWildcard","_constants","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useCredentials","hasCredentials","useCallback","credentials","getGenericPassword","service","STORAGE_KEYS","error","console","getCredentials","JSON","parse","password","storeCredentials","username","userPin","accessToken","options","accessControl","ACCESS_CONTROL","BIOMETRY_ANY","accessible","ACCESSIBLE","WHEN_UNLOCKED","setGenericPassword","stringify","clearCredentials","resetGenericPassword","validateCredentials","response","fetch","method","headers","body","data","json","isValid","valid","exports"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useCredentials.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { TouchableOpacity, Text, StyleSheet, View } from 'react-native';
|
|
3
|
-
import { UniversalOnboarding } from './UniversalOnboarding';
|
|
3
|
+
// import { UniversalOnboarding } from './UniversalOnboarding';
|
|
4
|
+
|
|
4
5
|
export const OnairosButton = ({
|
|
5
6
|
returnLink,
|
|
6
7
|
prefillUrl,
|
|
@@ -31,12 +32,18 @@ export const OnairosButton = ({
|
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
|
|
36
|
+
// Temporarily disabled OAuth integration
|
|
37
|
+
console.log('OAuth integration temporarily disabled');
|
|
38
|
+
onRejection === null || onRejection === void 0 || onRejection();
|
|
39
|
+
/*
|
|
40
|
+
if (buttonForm === 'signup') {
|
|
41
|
+
setShowOnboarding(true);
|
|
42
|
+
} else {
|
|
43
|
+
// Handle login flow
|
|
44
|
+
// TODO: Implement login flow according to account.md
|
|
45
|
+
}
|
|
46
|
+
*/
|
|
40
47
|
};
|
|
41
48
|
const handleOnboardingComplete = (apiUrl, token, data) => {
|
|
42
49
|
setShowOnboarding(false);
|
|
@@ -56,17 +63,7 @@ export const OnairosButton = ({
|
|
|
56
63
|
disabled: !enabled
|
|
57
64
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
58
65
|
style: textStyle
|
|
59
|
-
}, AppName))
|
|
60
|
-
visible: showOnboarding,
|
|
61
|
-
onClose: () => setShowOnboarding(false),
|
|
62
|
-
AppName: AppName,
|
|
63
|
-
requestData: requestData,
|
|
64
|
-
returnLink: returnLink,
|
|
65
|
-
onComplete: handleOnboardingComplete,
|
|
66
|
-
preferredPlatform: preferredPlatform,
|
|
67
|
-
debug: debug,
|
|
68
|
-
test: testMode
|
|
69
|
-
}));
|
|
66
|
+
}, AppName)));
|
|
70
67
|
};
|
|
71
68
|
const styles = StyleSheet.create({
|
|
72
69
|
button: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","TouchableOpacity","Text","StyleSheet","View","
|
|
1
|
+
{"version":3,"names":["React","useState","TouchableOpacity","Text","StyleSheet","View","OnairosButton","returnLink","prefillUrl","AppName","buttonType","requestData","buttonWidth","buttonHeight","hasStroke","enabled","buttonForm","onRejection","onResolved","preCheck","color","swerv","debug","preferredPlatform","testMode","showOnboarding","setShowOnboarding","handlePress","shouldProceed","console","log","handleOnboardingComplete","apiUrl","token","data","buttonStyle","styles","button","pillButton","strokedButton","width","height","backgroundColor","swervButton","filter","Boolean","textStyle","buttonText","strokedButtonText","customColorText","createElement","style","onPress","disabled","create","paddingVertical","paddingHorizontal","borderRadius","alignItems","justifyContent","borderWidth","borderColor","transform","rotate","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/OnairosButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,7 +6,9 @@ export const useConnections = () => {
|
|
|
6
6
|
const [isConnecting, setIsConnecting] = useState(false);
|
|
7
7
|
const getConnectionStatus = useCallback(async () => {
|
|
8
8
|
try {
|
|
9
|
-
const stored = await Keychain.getGenericPassword(
|
|
9
|
+
const stored = await Keychain.getGenericPassword({
|
|
10
|
+
service: STORAGE_KEYS.connections
|
|
11
|
+
});
|
|
10
12
|
if (stored) {
|
|
11
13
|
return JSON.parse(stored.password);
|
|
12
14
|
}
|
|
@@ -26,22 +28,38 @@ export const useConnections = () => {
|
|
|
26
28
|
const connectPlatform = useCallback(async platform => {
|
|
27
29
|
setIsConnecting(true);
|
|
28
30
|
try {
|
|
31
|
+
console.log(`[OAuth] Starting connection for ${platform}`);
|
|
32
|
+
|
|
29
33
|
// Get OAuth URL from API
|
|
30
|
-
const
|
|
34
|
+
const oauthEndpoint = API_ENDPOINTS.oauth[platform];
|
|
35
|
+
if (!oauthEndpoint) {
|
|
36
|
+
throw new Error(`No OAuth endpoint configured for ${platform}`);
|
|
37
|
+
}
|
|
38
|
+
const apiUrl = `${API_ENDPOINTS.base}${oauthEndpoint}`;
|
|
39
|
+
console.log(`[OAuth] Fetching URL from: ${apiUrl}`);
|
|
40
|
+
const response = await fetch(apiUrl);
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
throw new Error(`API request failed with status ${response.status}`);
|
|
43
|
+
}
|
|
31
44
|
const {
|
|
32
45
|
url
|
|
33
46
|
} = await response.json();
|
|
34
47
|
if (!url) {
|
|
35
|
-
throw new Error('No OAuth URL received');
|
|
48
|
+
throw new Error('No OAuth URL received from API');
|
|
49
|
+
}
|
|
50
|
+
console.log(`[OAuth] Opening URL: ${url}`);
|
|
51
|
+
|
|
52
|
+
// Check if URL can be opened
|
|
53
|
+
const canOpen = await Linking.canOpenURL(url);
|
|
54
|
+
if (!canOpen) {
|
|
55
|
+
throw new Error(`Cannot open URL: ${url}`);
|
|
36
56
|
}
|
|
37
57
|
|
|
38
58
|
// Open OAuth URL
|
|
39
59
|
await Linking.openURL(url);
|
|
40
|
-
|
|
41
|
-
// Connection status will be updated when the OAuth callback is received
|
|
42
|
-
// This is handled in the UniversalOnboarding component
|
|
60
|
+
console.log(`[OAuth] URL opened successfully`);
|
|
43
61
|
} catch (error) {
|
|
44
|
-
console.error(`Error connecting to ${platform}:`, error);
|
|
62
|
+
console.error(`[OAuth] Error connecting to ${platform}:`, error);
|
|
45
63
|
throw error;
|
|
46
64
|
} finally {
|
|
47
65
|
setIsConnecting(false);
|
|
@@ -59,9 +77,11 @@ export const useConnections = () => {
|
|
|
59
77
|
}, [getConnectionStatus, saveConnectionStatus]);
|
|
60
78
|
const handleOAuthCallback = useCallback(async (platform, data) => {
|
|
61
79
|
try {
|
|
80
|
+
console.log(`[OAuth] Handling callback for ${platform}:`, data);
|
|
62
81
|
const status = await getConnectionStatus();
|
|
63
82
|
status[platform] = {
|
|
64
|
-
userName: data.userName
|
|
83
|
+
userName: data.userName || `User (${platform})`,
|
|
84
|
+
connected: true
|
|
65
85
|
};
|
|
66
86
|
await saveConnectionStatus(status);
|
|
67
87
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useCallback","Linking","Keychain","API_ENDPOINTS","STORAGE_KEYS","useConnections","isConnecting","setIsConnecting","getConnectionStatus","stored","getGenericPassword","connections","JSON","parse","password","error","console","saveConnectionStatus","status","setGenericPassword","stringify","connectPlatform","platform","
|
|
1
|
+
{"version":3,"names":["useState","useCallback","Linking","Keychain","API_ENDPOINTS","STORAGE_KEYS","useConnections","isConnecting","setIsConnecting","getConnectionStatus","stored","getGenericPassword","service","connections","JSON","parse","password","error","console","saveConnectionStatus","status","setGenericPassword","stringify","connectPlatform","platform","log","oauthEndpoint","oauth","Error","apiUrl","base","response","fetch","ok","url","json","canOpen","canOpenURL","openURL","disconnectPlatform","handleOAuthCallback","data","userName","connected"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useConnections.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,9 @@ import { STORAGE_KEYS } from '../constants';
|
|
|
4
4
|
export const useCredentials = () => {
|
|
5
5
|
const hasCredentials = useCallback(async () => {
|
|
6
6
|
try {
|
|
7
|
-
const credentials = await Keychain.getGenericPassword(
|
|
7
|
+
const credentials = await Keychain.getGenericPassword({
|
|
8
|
+
service: STORAGE_KEYS.credentials
|
|
9
|
+
});
|
|
8
10
|
return !!credentials;
|
|
9
11
|
} catch (error) {
|
|
10
12
|
console.error('Error checking credentials:', error);
|
|
@@ -13,7 +15,9 @@ export const useCredentials = () => {
|
|
|
13
15
|
}, []);
|
|
14
16
|
const getCredentials = useCallback(async () => {
|
|
15
17
|
try {
|
|
16
|
-
const credentials = await Keychain.getGenericPassword(
|
|
18
|
+
const credentials = await Keychain.getGenericPassword({
|
|
19
|
+
service: STORAGE_KEYS.credentials
|
|
20
|
+
});
|
|
17
21
|
if (credentials) {
|
|
18
22
|
return JSON.parse(credentials.password);
|
|
19
23
|
}
|
|
@@ -25,11 +29,15 @@ export const useCredentials = () => {
|
|
|
25
29
|
}, []);
|
|
26
30
|
const storeCredentials = useCallback(async (username, userPin, accessToken) => {
|
|
27
31
|
try {
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
const options = {
|
|
33
|
+
accessControl: Keychain.ACCESS_CONTROL.BIOMETRY_ANY,
|
|
34
|
+
accessible: Keychain.ACCESSIBLE.WHEN_UNLOCKED,
|
|
35
|
+
service: STORAGE_KEYS.credentials
|
|
36
|
+
};
|
|
37
|
+
await Keychain.setGenericPassword(username, JSON.stringify({
|
|
30
38
|
userPin,
|
|
31
39
|
accessToken
|
|
32
|
-
}));
|
|
40
|
+
}), options);
|
|
33
41
|
return true;
|
|
34
42
|
} catch (error) {
|
|
35
43
|
console.error('Error storing credentials:', error);
|
|
@@ -38,7 +46,9 @@ export const useCredentials = () => {
|
|
|
38
46
|
}, []);
|
|
39
47
|
const clearCredentials = useCallback(async () => {
|
|
40
48
|
try {
|
|
41
|
-
await Keychain.resetGenericPassword(
|
|
49
|
+
await Keychain.resetGenericPassword({
|
|
50
|
+
service: STORAGE_KEYS.credentials
|
|
51
|
+
});
|
|
42
52
|
} catch (error) {
|
|
43
53
|
console.error('Error clearing credentials:', error);
|
|
44
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","Keychain","STORAGE_KEYS","useCredentials","hasCredentials","credentials","getGenericPassword","error","console","getCredentials","JSON","parse","password","storeCredentials","username","userPin","accessToken","setGenericPassword","stringify","clearCredentials","resetGenericPassword","validateCredentials","response","fetch","method","headers","body","data","json","isValid","valid"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useCredentials.ts"],"mappings":"AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,OAAO,KAAKC,QAAQ,MAAM,uBAAuB;AACjD,SAASC,YAAY,QAAQ,cAAc;AAG3C,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMC,cAAc,GAAGJ,WAAW,CAAC,YAA8B;IAC/D,IAAI;MACF,MAAMK,WAAW,GAAG,MAAMJ,QAAQ,CAACK,kBAAkB,
|
|
1
|
+
{"version":3,"names":["useCallback","Keychain","STORAGE_KEYS","useCredentials","hasCredentials","credentials","getGenericPassword","service","error","console","getCredentials","JSON","parse","password","storeCredentials","username","userPin","accessToken","options","accessControl","ACCESS_CONTROL","BIOMETRY_ANY","accessible","ACCESSIBLE","WHEN_UNLOCKED","setGenericPassword","stringify","clearCredentials","resetGenericPassword","validateCredentials","response","fetch","method","headers","body","data","json","isValid","valid"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useCredentials.ts"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { TouchableOpacity, Text, StyleSheet, View, Dimensions, ViewStyle, TextStyle } from 'react-native';
|
|
3
|
-
import { UniversalOnboarding } from './UniversalOnboarding';
|
|
3
|
+
// import { UniversalOnboarding } from './UniversalOnboarding';
|
|
4
4
|
import { COLORS } from '../constants';
|
|
5
5
|
import type { OnairosButtonProps } from '../types';
|
|
6
6
|
|
|
@@ -37,12 +37,17 @@ export const OnairosButton: React.FC<OnairosButtonProps> = ({
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
// Temporarily disabled OAuth integration
|
|
41
|
+
console.log('OAuth integration temporarily disabled');
|
|
42
|
+
onRejection?.();
|
|
43
|
+
/*
|
|
40
44
|
if (buttonForm === 'signup') {
|
|
41
45
|
setShowOnboarding(true);
|
|
42
46
|
} else {
|
|
43
47
|
// Handle login flow
|
|
44
48
|
// TODO: Implement login flow according to account.md
|
|
45
49
|
}
|
|
50
|
+
*/
|
|
46
51
|
};
|
|
47
52
|
|
|
48
53
|
const handleOnboardingComplete = (apiUrl: string, token: string, data: any) => {
|
|
@@ -76,6 +81,7 @@ export const OnairosButton: React.FC<OnairosButtonProps> = ({
|
|
|
76
81
|
<Text style={textStyle}>{AppName}</Text>
|
|
77
82
|
</TouchableOpacity>
|
|
78
83
|
|
|
84
|
+
{/* Temporarily disabled UniversalOnboarding
|
|
79
85
|
<UniversalOnboarding
|
|
80
86
|
visible={showOnboarding}
|
|
81
87
|
onClose={() => setShowOnboarding(false)}
|
|
@@ -87,6 +93,7 @@ export const OnairosButton: React.FC<OnairosButtonProps> = ({
|
|
|
87
93
|
debug={debug}
|
|
88
94
|
test={testMode}
|
|
89
95
|
/>
|
|
96
|
+
*/}
|
|
90
97
|
</View>
|
|
91
98
|
);
|
|
92
99
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useState, useCallback } from 'react';
|
|
2
|
-
import { Linking } from 'react-native';
|
|
2
|
+
import { Linking, Platform } from 'react-native';
|
|
3
3
|
import * as Keychain from 'react-native-keychain';
|
|
4
4
|
import { API_ENDPOINTS, STORAGE_KEYS } from '../constants';
|
|
5
5
|
import type { ConnectionStatus } from '../types';
|
|
@@ -9,7 +9,7 @@ export const useConnections = () => {
|
|
|
9
9
|
|
|
10
10
|
const getConnectionStatus = useCallback(async (): Promise<ConnectionStatus> => {
|
|
11
11
|
try {
|
|
12
|
-
const stored = await Keychain.getGenericPassword(STORAGE_KEYS.connections);
|
|
12
|
+
const stored = await Keychain.getGenericPassword({ service: STORAGE_KEYS.connections });
|
|
13
13
|
if (stored) {
|
|
14
14
|
return JSON.parse(stored.password);
|
|
15
15
|
}
|
|
@@ -34,23 +34,41 @@ export const useConnections = () => {
|
|
|
34
34
|
const connectPlatform = useCallback(async (platform: string) => {
|
|
35
35
|
setIsConnecting(true);
|
|
36
36
|
try {
|
|
37
|
+
console.log(`[OAuth] Starting connection for ${platform}`);
|
|
38
|
+
|
|
37
39
|
// Get OAuth URL from API
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
const oauthEndpoint = API_ENDPOINTS.oauth[platform as keyof typeof API_ENDPOINTS.oauth];
|
|
41
|
+
if (!oauthEndpoint) {
|
|
42
|
+
throw new Error(`No OAuth endpoint configured for ${platform}`);
|
|
43
|
+
}
|
|
42
44
|
|
|
45
|
+
const apiUrl = `${API_ENDPOINTS.base}${oauthEndpoint}`;
|
|
46
|
+
console.log(`[OAuth] Fetching URL from: ${apiUrl}`);
|
|
47
|
+
|
|
48
|
+
const response = await fetch(apiUrl);
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
throw new Error(`API request failed with status ${response.status}`);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const { url } = await response.json();
|
|
43
54
|
if (!url) {
|
|
44
|
-
throw new Error('No OAuth URL received');
|
|
55
|
+
throw new Error('No OAuth URL received from API');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
console.log(`[OAuth] Opening URL: ${url}`);
|
|
59
|
+
|
|
60
|
+
// Check if URL can be opened
|
|
61
|
+
const canOpen = await Linking.canOpenURL(url);
|
|
62
|
+
if (!canOpen) {
|
|
63
|
+
throw new Error(`Cannot open URL: ${url}`);
|
|
45
64
|
}
|
|
46
65
|
|
|
47
66
|
// Open OAuth URL
|
|
48
67
|
await Linking.openURL(url);
|
|
68
|
+
console.log(`[OAuth] URL opened successfully`);
|
|
49
69
|
|
|
50
|
-
// Connection status will be updated when the OAuth callback is received
|
|
51
|
-
// This is handled in the UniversalOnboarding component
|
|
52
70
|
} catch (error) {
|
|
53
|
-
console.error(`Error connecting to ${platform}:`, error);
|
|
71
|
+
console.error(`[OAuth] Error connecting to ${platform}:`, error);
|
|
54
72
|
throw error;
|
|
55
73
|
} finally {
|
|
56
74
|
setIsConnecting(false);
|
|
@@ -70,8 +88,12 @@ export const useConnections = () => {
|
|
|
70
88
|
|
|
71
89
|
const handleOAuthCallback = useCallback(async (platform: string, data: any) => {
|
|
72
90
|
try {
|
|
91
|
+
console.log(`[OAuth] Handling callback for ${platform}:`, data);
|
|
73
92
|
const status = await getConnectionStatus();
|
|
74
|
-
status[platform as keyof ConnectionStatus] = {
|
|
93
|
+
status[platform as keyof ConnectionStatus] = {
|
|
94
|
+
userName: data.userName || `User (${platform})`,
|
|
95
|
+
connected: true
|
|
96
|
+
};
|
|
75
97
|
await saveConnectionStatus(status);
|
|
76
98
|
return true;
|
|
77
99
|
} catch (error) {
|
|
@@ -6,7 +6,9 @@ import type { CredentialsResult } from '../types';
|
|
|
6
6
|
export const useCredentials = () => {
|
|
7
7
|
const hasCredentials = useCallback(async (): Promise<boolean> => {
|
|
8
8
|
try {
|
|
9
|
-
const credentials = await Keychain.getGenericPassword(
|
|
9
|
+
const credentials = await Keychain.getGenericPassword({
|
|
10
|
+
service: STORAGE_KEYS.credentials
|
|
11
|
+
});
|
|
10
12
|
return !!credentials;
|
|
11
13
|
} catch (error) {
|
|
12
14
|
console.error('Error checking credentials:', error);
|
|
@@ -16,7 +18,9 @@ export const useCredentials = () => {
|
|
|
16
18
|
|
|
17
19
|
const getCredentials = useCallback(async () => {
|
|
18
20
|
try {
|
|
19
|
-
const credentials = await Keychain.getGenericPassword(
|
|
21
|
+
const credentials = await Keychain.getGenericPassword({
|
|
22
|
+
service: STORAGE_KEYS.credentials
|
|
23
|
+
});
|
|
20
24
|
if (credentials) {
|
|
21
25
|
return JSON.parse(credentials.password);
|
|
22
26
|
}
|
|
@@ -33,9 +37,16 @@ export const useCredentials = () => {
|
|
|
33
37
|
accessToken: string
|
|
34
38
|
): Promise<boolean> => {
|
|
35
39
|
try {
|
|
40
|
+
const options: Keychain.Options = {
|
|
41
|
+
accessControl: Keychain.ACCESS_CONTROL.BIOMETRY_ANY,
|
|
42
|
+
accessible: Keychain.ACCESSIBLE.WHEN_UNLOCKED,
|
|
43
|
+
service: STORAGE_KEYS.credentials
|
|
44
|
+
};
|
|
45
|
+
|
|
36
46
|
await Keychain.setGenericPassword(
|
|
37
|
-
|
|
38
|
-
JSON.stringify({
|
|
47
|
+
username,
|
|
48
|
+
JSON.stringify({ userPin, accessToken }),
|
|
49
|
+
options
|
|
39
50
|
);
|
|
40
51
|
return true;
|
|
41
52
|
} catch (error) {
|
|
@@ -46,7 +57,9 @@ export const useCredentials = () => {
|
|
|
46
57
|
|
|
47
58
|
const clearCredentials = useCallback(async (): Promise<void> => {
|
|
48
59
|
try {
|
|
49
|
-
await Keychain.resetGenericPassword(
|
|
60
|
+
await Keychain.resetGenericPassword({
|
|
61
|
+
service: STORAGE_KEYS.credentials
|
|
62
|
+
});
|
|
50
63
|
} catch (error) {
|
|
51
64
|
console.error('Error clearing credentials:', error);
|
|
52
65
|
}
|
package/src/types/index.ts
CHANGED