@onairos/react-native 2.0.6 → 2.0.8
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 +13 -15
- package/lib/commonjs/components/OnairosButton.js.map +1 -1
- package/lib/commonjs/hooks/useConnections.js +18 -36
- package/lib/commonjs/hooks/useConnections.js.map +1 -1
- package/lib/module/components/OnairosButton.js +13 -15
- package/lib/module/components/OnairosButton.js.map +1 -1
- package/lib/module/hooks/useConnections.js +19 -37
- package/lib/module/hooks/useConnections.js.map +1 -1
- package/package.json +1 -1
- package/src/components/OnairosButton.tsx +3 -15
- package/src/hooks/useConnections.ts +26 -44
|
@@ -6,9 +6,8 @@ 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");
|
|
9
10
|
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
|
-
|
|
12
11
|
const OnairosButton = ({
|
|
13
12
|
returnLink,
|
|
14
13
|
prefillUrl,
|
|
@@ -39,18 +38,7 @@ const OnairosButton = ({
|
|
|
39
38
|
return;
|
|
40
39
|
}
|
|
41
40
|
}
|
|
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
|
-
*/
|
|
41
|
+
setShowOnboarding(true);
|
|
54
42
|
};
|
|
55
43
|
const handleOnboardingComplete = (apiUrl, token, data) => {
|
|
56
44
|
setShowOnboarding(false);
|
|
@@ -70,7 +58,17 @@ const OnairosButton = ({
|
|
|
70
58
|
disabled: !enabled
|
|
71
59
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
72
60
|
style: textStyle
|
|
73
|
-
}, AppName))
|
|
61
|
+
}, AppName)), /*#__PURE__*/_react.default.createElement(_UniversalOnboarding.UniversalOnboarding, {
|
|
62
|
+
visible: showOnboarding,
|
|
63
|
+
onClose: () => setShowOnboarding(false),
|
|
64
|
+
AppName: AppName,
|
|
65
|
+
requestData: requestData,
|
|
66
|
+
returnLink: returnLink,
|
|
67
|
+
onComplete: handleOnboardingComplete,
|
|
68
|
+
preferredPlatform: preferredPlatform,
|
|
69
|
+
debug: debug,
|
|
70
|
+
test: testMode
|
|
71
|
+
}));
|
|
74
72
|
};
|
|
75
73
|
exports.OnairosButton = OnairosButton;
|
|
76
74
|
const styles = _reactNative.StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
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","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_UniversalOnboarding","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","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","UniversalOnboarding","visible","onClose","onComplete","test","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":[]}
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useConnections = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
|
-
var _reactNative = require("react-native");
|
|
9
8
|
var Keychain = _interopRequireWildcard(require("react-native-keychain"));
|
|
10
9
|
var _constants = require("../constants");
|
|
11
10
|
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); }
|
|
@@ -27,7 +26,9 @@ const useConnections = () => {
|
|
|
27
26
|
}, []);
|
|
28
27
|
const saveConnectionStatus = (0, _react.useCallback)(async status => {
|
|
29
28
|
try {
|
|
30
|
-
await Keychain.setGenericPassword(
|
|
29
|
+
await Keychain.setGenericPassword('connections', JSON.stringify(status), {
|
|
30
|
+
service: _constants.STORAGE_KEYS.connections
|
|
31
|
+
});
|
|
31
32
|
} catch (error) {
|
|
32
33
|
console.error('Error saving connection status:', error);
|
|
33
34
|
}
|
|
@@ -35,43 +36,24 @@ const useConnections = () => {
|
|
|
35
36
|
const connectPlatform = (0, _react.useCallback)(async platform => {
|
|
36
37
|
setIsConnecting(true);
|
|
37
38
|
try {
|
|
38
|
-
console.log(`[
|
|
39
|
-
|
|
40
|
-
// Get OAuth URL from API
|
|
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
|
-
}
|
|
51
|
-
const {
|
|
52
|
-
url
|
|
53
|
-
} = await response.json();
|
|
54
|
-
if (!url) {
|
|
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}`);
|
|
63
|
-
}
|
|
39
|
+
console.log(`[Mock] Connecting to ${platform}`);
|
|
64
40
|
|
|
65
|
-
//
|
|
66
|
-
await
|
|
67
|
-
|
|
41
|
+
// Simulate connection delay
|
|
42
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
43
|
+
const status = await getConnectionStatus();
|
|
44
|
+
status[platform] = {
|
|
45
|
+
userName: `Mock User (${platform})`,
|
|
46
|
+
connected: true
|
|
47
|
+
};
|
|
48
|
+
await saveConnectionStatus(status);
|
|
49
|
+
console.log(`[Mock] Successfully connected to ${platform}`);
|
|
68
50
|
} catch (error) {
|
|
69
|
-
console.error(`
|
|
51
|
+
console.error(`Error connecting to ${platform}:`, error);
|
|
70
52
|
throw error;
|
|
71
53
|
} finally {
|
|
72
54
|
setIsConnecting(false);
|
|
73
55
|
}
|
|
74
|
-
}, []);
|
|
56
|
+
}, [getConnectionStatus, saveConnectionStatus]);
|
|
75
57
|
const disconnectPlatform = (0, _react.useCallback)(async platform => {
|
|
76
58
|
try {
|
|
77
59
|
const status = await getConnectionStatus();
|
|
@@ -84,16 +66,16 @@ const useConnections = () => {
|
|
|
84
66
|
}, [getConnectionStatus, saveConnectionStatus]);
|
|
85
67
|
const handleOAuthCallback = (0, _react.useCallback)(async (platform, data) => {
|
|
86
68
|
try {
|
|
87
|
-
console.log(`[
|
|
69
|
+
console.log(`[Mock] Handling callback for ${platform}`);
|
|
88
70
|
const status = await getConnectionStatus();
|
|
89
71
|
status[platform] = {
|
|
90
|
-
userName: data.userName || `User (${platform})`,
|
|
72
|
+
userName: data.userName || `Mock User (${platform})`,
|
|
91
73
|
connected: true
|
|
92
74
|
};
|
|
93
75
|
await saveConnectionStatus(status);
|
|
94
76
|
return true;
|
|
95
77
|
} catch (error) {
|
|
96
|
-
console.error('Error handling
|
|
78
|
+
console.error('Error handling callback:', error);
|
|
97
79
|
return false;
|
|
98
80
|
}
|
|
99
81
|
}, [getConnectionStatus, saveConnectionStatus]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","
|
|
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","useConnections","isConnecting","setIsConnecting","useState","getConnectionStatus","useCallback","stored","getGenericPassword","service","STORAGE_KEYS","connections","JSON","parse","password","error","console","saveConnectionStatus","status","setGenericPassword","stringify","connectPlatform","platform","log","Promise","resolve","setTimeout","userName","connected","disconnectPlatform","handleOAuthCallback","data","exports"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useConnections.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { TouchableOpacity, Text, StyleSheet, View } from 'react-native';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { UniversalOnboarding } from './UniversalOnboarding';
|
|
5
4
|
export const OnairosButton = ({
|
|
6
5
|
returnLink,
|
|
7
6
|
prefillUrl,
|
|
@@ -32,18 +31,7 @@ export const OnairosButton = ({
|
|
|
32
31
|
return;
|
|
33
32
|
}
|
|
34
33
|
}
|
|
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
|
-
*/
|
|
34
|
+
setShowOnboarding(true);
|
|
47
35
|
};
|
|
48
36
|
const handleOnboardingComplete = (apiUrl, token, data) => {
|
|
49
37
|
setShowOnboarding(false);
|
|
@@ -63,7 +51,17 @@ export const OnairosButton = ({
|
|
|
63
51
|
disabled: !enabled
|
|
64
52
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
65
53
|
style: textStyle
|
|
66
|
-
}, AppName))
|
|
54
|
+
}, AppName)), /*#__PURE__*/React.createElement(UniversalOnboarding, {
|
|
55
|
+
visible: showOnboarding,
|
|
56
|
+
onClose: () => setShowOnboarding(false),
|
|
57
|
+
AppName: AppName,
|
|
58
|
+
requestData: requestData,
|
|
59
|
+
returnLink: returnLink,
|
|
60
|
+
onComplete: handleOnboardingComplete,
|
|
61
|
+
preferredPlatform: preferredPlatform,
|
|
62
|
+
debug: debug,
|
|
63
|
+
test: testMode
|
|
64
|
+
}));
|
|
67
65
|
};
|
|
68
66
|
const styles = StyleSheet.create({
|
|
69
67
|
button: {
|
|
@@ -1 +1 @@
|
|
|
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","
|
|
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","strokedButtonText","customColorText","createElement","style","onPress","disabled","visible","onClose","onComplete","test","create","paddingVertical","paddingHorizontal","borderRadius","alignItems","justifyContent","borderWidth","borderColor","transform","rotate","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/OnairosButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { useState, useCallback } from 'react';
|
|
2
|
-
import { Linking } from 'react-native';
|
|
3
2
|
import * as Keychain from 'react-native-keychain';
|
|
4
|
-
import {
|
|
3
|
+
import { STORAGE_KEYS } from '../constants';
|
|
5
4
|
export const useConnections = () => {
|
|
6
5
|
const [isConnecting, setIsConnecting] = useState(false);
|
|
7
6
|
const getConnectionStatus = useCallback(async () => {
|
|
@@ -20,7 +19,9 @@ export const useConnections = () => {
|
|
|
20
19
|
}, []);
|
|
21
20
|
const saveConnectionStatus = useCallback(async status => {
|
|
22
21
|
try {
|
|
23
|
-
await Keychain.setGenericPassword(
|
|
22
|
+
await Keychain.setGenericPassword('connections', JSON.stringify(status), {
|
|
23
|
+
service: STORAGE_KEYS.connections
|
|
24
|
+
});
|
|
24
25
|
} catch (error) {
|
|
25
26
|
console.error('Error saving connection status:', error);
|
|
26
27
|
}
|
|
@@ -28,43 +29,24 @@ export const useConnections = () => {
|
|
|
28
29
|
const connectPlatform = useCallback(async platform => {
|
|
29
30
|
setIsConnecting(true);
|
|
30
31
|
try {
|
|
31
|
-
console.log(`[
|
|
32
|
-
|
|
33
|
-
// Get OAuth URL from API
|
|
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
|
-
}
|
|
44
|
-
const {
|
|
45
|
-
url
|
|
46
|
-
} = await response.json();
|
|
47
|
-
if (!url) {
|
|
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}`);
|
|
56
|
-
}
|
|
32
|
+
console.log(`[Mock] Connecting to ${platform}`);
|
|
57
33
|
|
|
58
|
-
//
|
|
59
|
-
await
|
|
60
|
-
|
|
34
|
+
// Simulate connection delay
|
|
35
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
36
|
+
const status = await getConnectionStatus();
|
|
37
|
+
status[platform] = {
|
|
38
|
+
userName: `Mock User (${platform})`,
|
|
39
|
+
connected: true
|
|
40
|
+
};
|
|
41
|
+
await saveConnectionStatus(status);
|
|
42
|
+
console.log(`[Mock] Successfully connected to ${platform}`);
|
|
61
43
|
} catch (error) {
|
|
62
|
-
console.error(`
|
|
44
|
+
console.error(`Error connecting to ${platform}:`, error);
|
|
63
45
|
throw error;
|
|
64
46
|
} finally {
|
|
65
47
|
setIsConnecting(false);
|
|
66
48
|
}
|
|
67
|
-
}, []);
|
|
49
|
+
}, [getConnectionStatus, saveConnectionStatus]);
|
|
68
50
|
const disconnectPlatform = useCallback(async platform => {
|
|
69
51
|
try {
|
|
70
52
|
const status = await getConnectionStatus();
|
|
@@ -77,16 +59,16 @@ export const useConnections = () => {
|
|
|
77
59
|
}, [getConnectionStatus, saveConnectionStatus]);
|
|
78
60
|
const handleOAuthCallback = useCallback(async (platform, data) => {
|
|
79
61
|
try {
|
|
80
|
-
console.log(`[
|
|
62
|
+
console.log(`[Mock] Handling callback for ${platform}`);
|
|
81
63
|
const status = await getConnectionStatus();
|
|
82
64
|
status[platform] = {
|
|
83
|
-
userName: data.userName || `User (${platform})`,
|
|
65
|
+
userName: data.userName || `Mock User (${platform})`,
|
|
84
66
|
connected: true
|
|
85
67
|
};
|
|
86
68
|
await saveConnectionStatus(status);
|
|
87
69
|
return true;
|
|
88
70
|
} catch (error) {
|
|
89
|
-
console.error('Error handling
|
|
71
|
+
console.error('Error handling callback:', error);
|
|
90
72
|
return false;
|
|
91
73
|
}
|
|
92
74
|
}, [getConnectionStatus, saveConnectionStatus]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useCallback","
|
|
1
|
+
{"version":3,"names":["useState","useCallback","Keychain","STORAGE_KEYS","useConnections","isConnecting","setIsConnecting","getConnectionStatus","stored","getGenericPassword","service","connections","JSON","parse","password","error","console","saveConnectionStatus","status","setGenericPassword","stringify","connectPlatform","platform","log","Promise","resolve","setTimeout","userName","connected","disconnectPlatform","handleOAuthCallback","data"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useConnections.ts"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
|
-
import { TouchableOpacity, Text, StyleSheet, View,
|
|
3
|
-
|
|
2
|
+
import { TouchableOpacity, Text, StyleSheet, View, ViewStyle, TextStyle } from 'react-native';
|
|
3
|
+
import { UniversalOnboarding } from './UniversalOnboarding';
|
|
4
4
|
import { COLORS } from '../constants';
|
|
5
5
|
import type { OnairosButtonProps } from '../types';
|
|
6
6
|
|
|
@@ -37,17 +37,7 @@ export const OnairosButton: React.FC<OnairosButtonProps> = ({
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
console.log('OAuth integration temporarily disabled');
|
|
42
|
-
onRejection?.();
|
|
43
|
-
/*
|
|
44
|
-
if (buttonForm === 'signup') {
|
|
45
|
-
setShowOnboarding(true);
|
|
46
|
-
} else {
|
|
47
|
-
// Handle login flow
|
|
48
|
-
// TODO: Implement login flow according to account.md
|
|
49
|
-
}
|
|
50
|
-
*/
|
|
40
|
+
setShowOnboarding(true);
|
|
51
41
|
};
|
|
52
42
|
|
|
53
43
|
const handleOnboardingComplete = (apiUrl: string, token: string, data: any) => {
|
|
@@ -81,7 +71,6 @@ export const OnairosButton: React.FC<OnairosButtonProps> = ({
|
|
|
81
71
|
<Text style={textStyle}>{AppName}</Text>
|
|
82
72
|
</TouchableOpacity>
|
|
83
73
|
|
|
84
|
-
{/* Temporarily disabled UniversalOnboarding
|
|
85
74
|
<UniversalOnboarding
|
|
86
75
|
visible={showOnboarding}
|
|
87
76
|
onClose={() => setShowOnboarding(false)}
|
|
@@ -93,7 +82,6 @@ export const OnairosButton: React.FC<OnairosButtonProps> = ({
|
|
|
93
82
|
debug={debug}
|
|
94
83
|
test={testMode}
|
|
95
84
|
/>
|
|
96
|
-
*/}
|
|
97
85
|
</View>
|
|
98
86
|
);
|
|
99
87
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { useState, useCallback } from 'react';
|
|
2
|
-
import { Linking, Platform } from 'react-native';
|
|
3
2
|
import * as Keychain from 'react-native-keychain';
|
|
4
|
-
import {
|
|
3
|
+
import { STORAGE_KEYS } from '../constants';
|
|
5
4
|
import type { ConnectionStatus } from '../types';
|
|
6
5
|
|
|
7
6
|
export const useConnections = () => {
|
|
@@ -9,7 +8,9 @@ export const useConnections = () => {
|
|
|
9
8
|
|
|
10
9
|
const getConnectionStatus = useCallback(async (): Promise<ConnectionStatus> => {
|
|
11
10
|
try {
|
|
12
|
-
const stored = await Keychain.getGenericPassword({
|
|
11
|
+
const stored = await Keychain.getGenericPassword({
|
|
12
|
+
service: STORAGE_KEYS.connections
|
|
13
|
+
});
|
|
13
14
|
if (stored) {
|
|
14
15
|
return JSON.parse(stored.password);
|
|
15
16
|
}
|
|
@@ -23,8 +24,9 @@ export const useConnections = () => {
|
|
|
23
24
|
const saveConnectionStatus = useCallback(async (status: ConnectionStatus) => {
|
|
24
25
|
try {
|
|
25
26
|
await Keychain.setGenericPassword(
|
|
26
|
-
|
|
27
|
-
JSON.stringify(status)
|
|
27
|
+
'connections',
|
|
28
|
+
JSON.stringify(status),
|
|
29
|
+
{ service: STORAGE_KEYS.connections }
|
|
28
30
|
);
|
|
29
31
|
} catch (error) {
|
|
30
32
|
console.error('Error saving connection status:', error);
|
|
@@ -34,51 +36,31 @@ export const useConnections = () => {
|
|
|
34
36
|
const connectPlatform = useCallback(async (platform: string) => {
|
|
35
37
|
setIsConnecting(true);
|
|
36
38
|
try {
|
|
37
|
-
console.log(`[
|
|
39
|
+
console.log(`[Mock] Connecting to ${platform}`);
|
|
38
40
|
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
if (!oauthEndpoint) {
|
|
42
|
-
throw new Error(`No OAuth endpoint configured for ${platform}`);
|
|
43
|
-
}
|
|
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();
|
|
54
|
-
if (!url) {
|
|
55
|
-
throw new Error('No OAuth URL received from API');
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
console.log(`[OAuth] Opening URL: ${url}`);
|
|
41
|
+
// Simulate connection delay
|
|
42
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
59
43
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
console.log(`[OAuth] URL opened successfully`);
|
|
69
|
-
|
|
44
|
+
const status = await getConnectionStatus();
|
|
45
|
+
status[platform] = {
|
|
46
|
+
userName: `Mock User (${platform})`,
|
|
47
|
+
connected: true
|
|
48
|
+
};
|
|
49
|
+
await saveConnectionStatus(status);
|
|
50
|
+
|
|
51
|
+
console.log(`[Mock] Successfully connected to ${platform}`);
|
|
70
52
|
} catch (error) {
|
|
71
|
-
console.error(`
|
|
53
|
+
console.error(`Error connecting to ${platform}:`, error);
|
|
72
54
|
throw error;
|
|
73
55
|
} finally {
|
|
74
56
|
setIsConnecting(false);
|
|
75
57
|
}
|
|
76
|
-
}, []);
|
|
58
|
+
}, [getConnectionStatus, saveConnectionStatus]);
|
|
77
59
|
|
|
78
60
|
const disconnectPlatform = useCallback(async (platform: string) => {
|
|
79
61
|
try {
|
|
80
62
|
const status = await getConnectionStatus();
|
|
81
|
-
delete status[platform
|
|
63
|
+
delete status[platform];
|
|
82
64
|
await saveConnectionStatus(status);
|
|
83
65
|
} catch (error) {
|
|
84
66
|
console.error(`Error disconnecting ${platform}:`, error);
|
|
@@ -88,16 +70,16 @@ export const useConnections = () => {
|
|
|
88
70
|
|
|
89
71
|
const handleOAuthCallback = useCallback(async (platform: string, data: any) => {
|
|
90
72
|
try {
|
|
91
|
-
console.log(`[
|
|
73
|
+
console.log(`[Mock] Handling callback for ${platform}`);
|
|
92
74
|
const status = await getConnectionStatus();
|
|
93
|
-
status[platform
|
|
94
|
-
userName: data.userName || `User (${platform})`,
|
|
95
|
-
connected: true
|
|
75
|
+
status[platform] = {
|
|
76
|
+
userName: data.userName || `Mock User (${platform})`,
|
|
77
|
+
connected: true
|
|
96
78
|
};
|
|
97
79
|
await saveConnectionStatus(status);
|
|
98
80
|
return true;
|
|
99
81
|
} catch (error) {
|
|
100
|
-
console.error('Error handling
|
|
82
|
+
console.error('Error handling callback:', error);
|
|
101
83
|
return false;
|
|
102
84
|
}
|
|
103
85
|
}, [getConnectionStatus, saveConnectionStatus]);
|