@onairos/react-native 1.0.1 → 1.0.3
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 +29 -121
- package/lib/commonjs/components/OnairosButton.js.map +1 -1
- package/lib/commonjs/components/UniversalOnboarding.js +8 -5
- package/lib/commonjs/components/UniversalOnboarding.js.map +1 -1
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/components/OnairosButton.js +31 -122
- package/lib/module/components/OnairosButton.js.map +1 -1
- package/lib/module/components/UniversalOnboarding.js +8 -5
- package/lib/module/components/UniversalOnboarding.js.map +1 -1
- package/lib/module/index.js +8 -31
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/package.json +3 -3
- package/src/components/OnairosButton.tsx +33 -134
- package/src/components/UniversalOnboarding.tsx +7 -4
- package/src/types/index.ts +24 -12
- package/src/types.ts +29 -0
|
@@ -6,159 +6,67 @@ 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 _MaterialIcons = _interopRequireDefault(require("react-native-vector-icons/MaterialIcons"));
|
|
10
9
|
var _UniversalOnboarding = require("./UniversalOnboarding");
|
|
11
|
-
var
|
|
12
|
-
var _useCredentials = require("../hooks/useCredentials");
|
|
13
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
var _constants = require("../constants");
|
|
14
11
|
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); }
|
|
15
|
-
// import { validateCredentials } from '../utils/auth';
|
|
16
|
-
// import { COLORS } from '../constants';
|
|
17
|
-
|
|
18
12
|
const OnairosButton = ({
|
|
13
|
+
title,
|
|
14
|
+
onPress,
|
|
15
|
+
style,
|
|
16
|
+
buttonType = 'default',
|
|
17
|
+
buttonForm = 'signup',
|
|
19
18
|
AppName,
|
|
20
19
|
requestData,
|
|
21
20
|
returnLink,
|
|
21
|
+
onComplete,
|
|
22
22
|
embedd = false,
|
|
23
|
-
color = '#00BFA5',
|
|
24
|
-
icon = 'auto_awesome',
|
|
25
|
-
onResolved,
|
|
26
|
-
login = false,
|
|
27
|
-
buttonType = 'circle',
|
|
28
23
|
debug = false,
|
|
29
24
|
test = false
|
|
30
25
|
}) => {
|
|
31
26
|
const [showOnboarding, setShowOnboarding] = (0, _react.useState)(false);
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
hasCredentials,
|
|
35
|
-
getCredentials,
|
|
36
|
-
validateCredentials
|
|
37
|
-
} = (0, _useCredentials.useCredentials)();
|
|
38
|
-
const [loading, setLoading] = (0, _react.useState)(false);
|
|
39
|
-
const handlePress = (0, _react.useCallback)(async () => {
|
|
40
|
-
setLoading(true);
|
|
41
|
-
try {
|
|
42
|
-
const hasExisting = await hasCredentials();
|
|
43
|
-
if (!hasExisting) {
|
|
44
|
-
setShowOnboarding(true);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const credentials = await getCredentials();
|
|
48
|
-
if (!credentials) {
|
|
49
|
-
setShowOnboarding(true);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const validationResult = await validateCredentials(credentials.username);
|
|
53
|
-
if (!validationResult.isValid) {
|
|
54
|
-
setShowOnboarding(true);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// If we have valid credentials, show data request modal
|
|
59
|
-
setShowDataRequest(true);
|
|
60
|
-
} catch (error) {
|
|
61
|
-
console.error('Error in button press:', error);
|
|
27
|
+
const handlePress = () => {
|
|
28
|
+
if (buttonForm === 'signup') {
|
|
62
29
|
setShowOnboarding(true);
|
|
63
|
-
}
|
|
64
|
-
|
|
30
|
+
} else {
|
|
31
|
+
onPress();
|
|
65
32
|
}
|
|
66
|
-
}
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
console.error('Error handling data request accept:', error);
|
|
76
|
-
}
|
|
77
|
-
}, [getCredentials, onResolved]);
|
|
78
|
-
(0, _react.useEffect)(() => {
|
|
79
|
-
// Setup deep linking
|
|
80
|
-
const handleDeepLink = ({
|
|
81
|
-
url
|
|
82
|
-
}) => {
|
|
83
|
-
if (url.includes('onairosreact://authenticate')) {
|
|
84
|
-
// Handle authentication callback
|
|
85
|
-
const params = new URL(url).searchParams;
|
|
86
|
-
const nonce = params.get('nonce');
|
|
87
|
-
const callback = params.get('callback');
|
|
88
|
-
if (nonce && callback) {
|
|
89
|
-
// Process authentication
|
|
90
|
-
setShowOnboarding(false);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
_reactNative.Linking.addEventListener('url', handleDeepLink);
|
|
95
|
-
return () => {
|
|
96
|
-
// Cleanup deep linking
|
|
97
|
-
// Note: Remove event listener based on RN version
|
|
98
|
-
// if (Platform.OS === 'android') {
|
|
99
|
-
// Linking.removeEventListener('url', handleDeepLink);
|
|
100
|
-
// }
|
|
101
|
-
};
|
|
102
|
-
}, []);
|
|
103
|
-
const buttonStyles = [styles.button, buttonType === 'pill' ? styles.pillButton : styles.circleButton, {
|
|
104
|
-
backgroundColor: color
|
|
105
|
-
}];
|
|
106
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
107
|
-
style: buttonStyles,
|
|
108
|
-
onPress: handlePress,
|
|
109
|
-
disabled: loading
|
|
110
|
-
}, /*#__PURE__*/_react.default.createElement(_MaterialIcons.default, {
|
|
111
|
-
name: icon,
|
|
112
|
-
size: 24,
|
|
113
|
-
color: "white"
|
|
114
|
-
}), buttonType === 'pill' && /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
33
|
+
};
|
|
34
|
+
const handleOnboardingComplete = (apiUrl, token, data) => {
|
|
35
|
+
setShowOnboarding(false);
|
|
36
|
+
onComplete(apiUrl, token, data);
|
|
37
|
+
};
|
|
38
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, null, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
39
|
+
style: [styles.button, buttonType === 'pill' && styles.pillButton, style],
|
|
40
|
+
onPress: handlePress
|
|
41
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
115
42
|
style: styles.buttonText
|
|
116
|
-
},
|
|
43
|
+
}, title)), /*#__PURE__*/_react.default.createElement(_UniversalOnboarding.UniversalOnboarding, {
|
|
117
44
|
visible: showOnboarding,
|
|
118
45
|
onClose: () => setShowOnboarding(false),
|
|
119
46
|
AppName: AppName,
|
|
120
47
|
requestData: requestData,
|
|
121
48
|
returnLink: returnLink,
|
|
122
|
-
onComplete:
|
|
49
|
+
onComplete: handleOnboardingComplete,
|
|
123
50
|
embedd: embedd,
|
|
124
51
|
debug: debug,
|
|
125
52
|
test: test
|
|
126
|
-
}), /*#__PURE__*/_react.default.createElement(_DataRequestModal.DataRequestModal, {
|
|
127
|
-
visible: showDataRequest,
|
|
128
|
-
onClose: () => setShowDataRequest(false),
|
|
129
|
-
onAccept: handleDataRequestAccept,
|
|
130
|
-
requestData: requestData,
|
|
131
|
-
AppName: AppName
|
|
132
53
|
}));
|
|
133
54
|
};
|
|
134
55
|
exports.OnairosButton = OnairosButton;
|
|
135
56
|
const styles = _reactNative.StyleSheet.create({
|
|
136
57
|
button: {
|
|
58
|
+
backgroundColor: _constants.COLORS.primary,
|
|
59
|
+
paddingVertical: 12,
|
|
60
|
+
paddingHorizontal: 24,
|
|
61
|
+
borderRadius: 8,
|
|
137
62
|
alignItems: 'center',
|
|
138
|
-
justifyContent: 'center'
|
|
139
|
-
elevation: 3,
|
|
140
|
-
shadowColor: '#000',
|
|
141
|
-
shadowOffset: {
|
|
142
|
-
width: 0,
|
|
143
|
-
height: 2
|
|
144
|
-
},
|
|
145
|
-
shadowOpacity: 0.25,
|
|
146
|
-
shadowRadius: 3.84
|
|
147
|
-
},
|
|
148
|
-
circleButton: {
|
|
149
|
-
width: 60,
|
|
150
|
-
height: 60,
|
|
151
|
-
borderRadius: 30
|
|
63
|
+
justifyContent: 'center'
|
|
152
64
|
},
|
|
153
65
|
pillButton: {
|
|
154
|
-
|
|
155
|
-
paddingHorizontal: 16,
|
|
156
|
-
paddingVertical: 12,
|
|
157
|
-
borderRadius: 25
|
|
66
|
+
borderRadius: 20
|
|
158
67
|
},
|
|
159
68
|
buttonText: {
|
|
160
|
-
color: '
|
|
161
|
-
marginLeft: 8,
|
|
69
|
+
color: '#fff',
|
|
162
70
|
fontSize: 16,
|
|
163
71
|
fontWeight: '600'
|
|
164
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_UniversalOnboarding","_constants","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","OnairosButton","title","onPress","style","buttonType","buttonForm","AppName","requestData","returnLink","onComplete","embedd","debug","test","showOnboarding","setShowOnboarding","useState","handlePress","handleOnboardingComplete","apiUrl","token","data","createElement","View","TouchableOpacity","styles","button","pillButton","Text","buttonText","UniversalOnboarding","visible","onClose","exports","StyleSheet","create","backgroundColor","COLORS","primary","paddingVertical","paddingHorizontal","borderRadius","alignItems","justifyContent","color","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/OnairosButton.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -25,14 +25,15 @@ const UniversalOnboarding = ({
|
|
|
25
25
|
requestData,
|
|
26
26
|
returnLink,
|
|
27
27
|
onComplete,
|
|
28
|
-
embedd,
|
|
29
|
-
debug,
|
|
30
|
-
test
|
|
28
|
+
embedd = false,
|
|
29
|
+
debug = false,
|
|
30
|
+
test = false
|
|
31
31
|
}) => {
|
|
32
32
|
const bottomSheetRef = (0, _react.useRef)(null);
|
|
33
33
|
const [step, setStep] = (0, _react.useState)('connect');
|
|
34
34
|
const [connections, setConnections] = (0, _react.useState)({});
|
|
35
35
|
const [pin, setPin] = (0, _react.useState)('');
|
|
36
|
+
const [selectedTier, setSelectedTier] = (0, _react.useState)('Medium');
|
|
36
37
|
const [training, setTraining] = (0, _react.useState)({
|
|
37
38
|
progress: 0,
|
|
38
39
|
eta: ''
|
|
@@ -85,11 +86,13 @@ const UniversalOnboarding = ({
|
|
|
85
86
|
clearInterval(interval);
|
|
86
87
|
onComplete('https://api2.onairos.uk', 'dummy-token', {
|
|
87
88
|
pin: userPin,
|
|
88
|
-
connections
|
|
89
|
+
connections,
|
|
90
|
+
selectedTier,
|
|
91
|
+
tierData: requestData[selectedTier]
|
|
89
92
|
});
|
|
90
93
|
}
|
|
91
94
|
}, 1000);
|
|
92
|
-
}, [connections, onComplete]);
|
|
95
|
+
}, [connections, onComplete, selectedTier, requestData]);
|
|
93
96
|
const canProceedToPin = (0, _react.useMemo)(() => {
|
|
94
97
|
const connectedPlatforms = Object.values(connections).filter(Boolean).length;
|
|
95
98
|
return connectedPlatforms >= 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_bottomSheet","_interopRequireDefault","_MaterialIcons","_PlatformList","_PinInput","_TrainingModal","_useConnections","_constants","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","height","Dimensions","UniversalOnboarding","visible","onClose","AppName","requestData","returnLink","onComplete","embedd","debug","test","bottomSheetRef","useRef","step","setStep","useState","connections","setConnections","pin","setPin","training","setTraining","progress","eta","connectPlatform","disconnectPlatform","getConnectionStatus","isConnecting","useConnections","snapPoints","useMemo","useEffect","_bottomSheetRef$curre","current","expand","loadInitialStatus","_bottomSheetRef$curre2","close","useCallback","status","handlePlatformToggle","platform","connect","error","console","handlePinSubmit","userPin","interval","setInterval","Math","round","clearInterval","canProceedToPin","connectedPlatforms","values","filter","Boolean","length","renderHeader","createElement","View","style","styles","header","name","size","color","COLORS","primary","Text","headerTitle","TouchableOpacity","onPress","closeButton","renderContent","PlatformList","onToggle","isLoading","canProceed","onProceed","PinInput","onSubmit","minLength","requireSpecialChar","requireNumber","TrainingModal","onCancel","ref","enablePanDownToClose","index","container","exports","StyleSheet","create","flex","backgroundColor","flexDirection","alignItems","padding","headerBg","borderTopLeftRadius","borderTopRightRadius","fontSize","fontWeight","marginLeft"],"sourceRoot":"..\\..\\..\\src","sources":["components/UniversalOnboarding.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAQA,IAAAE,YAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,cAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,cAAA,GAAAP,OAAA;AACA,IAAAQ,eAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAT,OAAA;AAAsC,SAAAG,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAX,wBAAAW,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAf,uBAAA,YAAAA,CAAAW,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAGtC,MAAM;EAAEgB;AAAO,CAAC,GAAGC,uBAAU,CAACR,GAAG,CAAC,QAAQ,CAAC;AAEpC,MAAMS,mBAAuD,GAAGA,CAAC;EACtEC,OAAO;EACPC,OAAO;EACPC,OAAO;EACPC,WAAW;EACXC,UAAU;EACVC,UAAU;EACVC,MAAM;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_bottomSheet","_interopRequireDefault","_MaterialIcons","_PlatformList","_PinInput","_TrainingModal","_useConnections","_constants","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","height","Dimensions","UniversalOnboarding","visible","onClose","AppName","requestData","returnLink","onComplete","embedd","debug","test","bottomSheetRef","useRef","step","setStep","useState","connections","setConnections","pin","setPin","selectedTier","setSelectedTier","training","setTraining","progress","eta","connectPlatform","disconnectPlatform","getConnectionStatus","isConnecting","useConnections","snapPoints","useMemo","useEffect","_bottomSheetRef$curre","current","expand","loadInitialStatus","_bottomSheetRef$curre2","close","useCallback","status","handlePlatformToggle","platform","connect","error","console","handlePinSubmit","userPin","interval","setInterval","Math","round","clearInterval","tierData","canProceedToPin","connectedPlatforms","values","filter","Boolean","length","renderHeader","createElement","View","style","styles","header","name","size","color","COLORS","primary","Text","headerTitle","TouchableOpacity","onPress","closeButton","renderContent","PlatformList","onToggle","isLoading","canProceed","onProceed","PinInput","onSubmit","minLength","requireSpecialChar","requireNumber","TrainingModal","onCancel","ref","enablePanDownToClose","index","container","exports","StyleSheet","create","flex","backgroundColor","flexDirection","alignItems","padding","headerBg","borderTopLeftRadius","borderTopRightRadius","fontSize","fontWeight","marginLeft"],"sourceRoot":"..\\..\\..\\src","sources":["components/UniversalOnboarding.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"..\\..\\src","sources":["types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -1,155 +1,64 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
import { TouchableOpacity,
|
|
3
|
-
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { TouchableOpacity, Text, StyleSheet, View } from 'react-native';
|
|
4
3
|
import { UniversalOnboarding } from './UniversalOnboarding';
|
|
5
|
-
import {
|
|
6
|
-
import { useCredentials } from '../hooks/useCredentials';
|
|
7
|
-
// import { validateCredentials } from '../utils/auth';
|
|
8
|
-
// import { COLORS } from '../constants';
|
|
9
|
-
|
|
4
|
+
import { COLORS } from '../constants';
|
|
10
5
|
export const OnairosButton = ({
|
|
6
|
+
title,
|
|
7
|
+
onPress,
|
|
8
|
+
style,
|
|
9
|
+
buttonType = 'default',
|
|
10
|
+
buttonForm = 'signup',
|
|
11
11
|
AppName,
|
|
12
12
|
requestData,
|
|
13
13
|
returnLink,
|
|
14
|
+
onComplete,
|
|
14
15
|
embedd = false,
|
|
15
|
-
color = '#00BFA5',
|
|
16
|
-
icon = 'auto_awesome',
|
|
17
|
-
onResolved,
|
|
18
|
-
login = false,
|
|
19
|
-
buttonType = 'circle',
|
|
20
16
|
debug = false,
|
|
21
17
|
test = false
|
|
22
18
|
}) => {
|
|
23
19
|
const [showOnboarding, setShowOnboarding] = useState(false);
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
hasCredentials,
|
|
27
|
-
getCredentials,
|
|
28
|
-
validateCredentials
|
|
29
|
-
} = useCredentials();
|
|
30
|
-
const [loading, setLoading] = useState(false);
|
|
31
|
-
const handlePress = useCallback(async () => {
|
|
32
|
-
setLoading(true);
|
|
33
|
-
try {
|
|
34
|
-
const hasExisting = await hasCredentials();
|
|
35
|
-
if (!hasExisting) {
|
|
36
|
-
setShowOnboarding(true);
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const credentials = await getCredentials();
|
|
40
|
-
if (!credentials) {
|
|
41
|
-
setShowOnboarding(true);
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
const validationResult = await validateCredentials(credentials.username);
|
|
45
|
-
if (!validationResult.isValid) {
|
|
46
|
-
setShowOnboarding(true);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// If we have valid credentials, show data request modal
|
|
51
|
-
setShowDataRequest(true);
|
|
52
|
-
} catch (error) {
|
|
53
|
-
console.error('Error in button press:', error);
|
|
20
|
+
const handlePress = () => {
|
|
21
|
+
if (buttonForm === 'signup') {
|
|
54
22
|
setShowOnboarding(true);
|
|
55
|
-
}
|
|
56
|
-
|
|
23
|
+
} else {
|
|
24
|
+
onPress();
|
|
57
25
|
}
|
|
58
|
-
}
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
console.error('Error handling data request accept:', error);
|
|
68
|
-
}
|
|
69
|
-
}, [getCredentials, onResolved]);
|
|
70
|
-
useEffect(() => {
|
|
71
|
-
// Setup deep linking
|
|
72
|
-
const handleDeepLink = ({
|
|
73
|
-
url
|
|
74
|
-
}) => {
|
|
75
|
-
if (url.includes('onairosreact://authenticate')) {
|
|
76
|
-
// Handle authentication callback
|
|
77
|
-
const params = new URL(url).searchParams;
|
|
78
|
-
const nonce = params.get('nonce');
|
|
79
|
-
const callback = params.get('callback');
|
|
80
|
-
if (nonce && callback) {
|
|
81
|
-
// Process authentication
|
|
82
|
-
setShowOnboarding(false);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
Linking.addEventListener('url', handleDeepLink);
|
|
87
|
-
return () => {
|
|
88
|
-
// Cleanup deep linking
|
|
89
|
-
// Note: Remove event listener based on RN version
|
|
90
|
-
// if (Platform.OS === 'android') {
|
|
91
|
-
// Linking.removeEventListener('url', handleDeepLink);
|
|
92
|
-
// }
|
|
93
|
-
};
|
|
94
|
-
}, []);
|
|
95
|
-
const buttonStyles = [styles.button, buttonType === 'pill' ? styles.pillButton : styles.circleButton, {
|
|
96
|
-
backgroundColor: color
|
|
97
|
-
}];
|
|
98
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
99
|
-
style: buttonStyles,
|
|
100
|
-
onPress: handlePress,
|
|
101
|
-
disabled: loading
|
|
102
|
-
}, /*#__PURE__*/React.createElement(Icon, {
|
|
103
|
-
name: icon,
|
|
104
|
-
size: 24,
|
|
105
|
-
color: "white"
|
|
106
|
-
}), buttonType === 'pill' && /*#__PURE__*/React.createElement(Text, {
|
|
26
|
+
};
|
|
27
|
+
const handleOnboardingComplete = (apiUrl, token, data) => {
|
|
28
|
+
setShowOnboarding(false);
|
|
29
|
+
onComplete(apiUrl, token, data);
|
|
30
|
+
};
|
|
31
|
+
return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
32
|
+
style: [styles.button, buttonType === 'pill' && styles.pillButton, style],
|
|
33
|
+
onPress: handlePress
|
|
34
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
107
35
|
style: styles.buttonText
|
|
108
|
-
},
|
|
36
|
+
}, title)), /*#__PURE__*/React.createElement(UniversalOnboarding, {
|
|
109
37
|
visible: showOnboarding,
|
|
110
38
|
onClose: () => setShowOnboarding(false),
|
|
111
39
|
AppName: AppName,
|
|
112
40
|
requestData: requestData,
|
|
113
41
|
returnLink: returnLink,
|
|
114
|
-
onComplete:
|
|
42
|
+
onComplete: handleOnboardingComplete,
|
|
115
43
|
embedd: embedd,
|
|
116
44
|
debug: debug,
|
|
117
45
|
test: test
|
|
118
|
-
}), /*#__PURE__*/React.createElement(DataRequestModal, {
|
|
119
|
-
visible: showDataRequest,
|
|
120
|
-
onClose: () => setShowDataRequest(false),
|
|
121
|
-
onAccept: handleDataRequestAccept,
|
|
122
|
-
requestData: requestData,
|
|
123
|
-
AppName: AppName
|
|
124
46
|
}));
|
|
125
47
|
};
|
|
126
48
|
const styles = StyleSheet.create({
|
|
127
49
|
button: {
|
|
50
|
+
backgroundColor: COLORS.primary,
|
|
51
|
+
paddingVertical: 12,
|
|
52
|
+
paddingHorizontal: 24,
|
|
53
|
+
borderRadius: 8,
|
|
128
54
|
alignItems: 'center',
|
|
129
|
-
justifyContent: 'center'
|
|
130
|
-
elevation: 3,
|
|
131
|
-
shadowColor: '#000',
|
|
132
|
-
shadowOffset: {
|
|
133
|
-
width: 0,
|
|
134
|
-
height: 2
|
|
135
|
-
},
|
|
136
|
-
shadowOpacity: 0.25,
|
|
137
|
-
shadowRadius: 3.84
|
|
138
|
-
},
|
|
139
|
-
circleButton: {
|
|
140
|
-
width: 60,
|
|
141
|
-
height: 60,
|
|
142
|
-
borderRadius: 30
|
|
55
|
+
justifyContent: 'center'
|
|
143
56
|
},
|
|
144
57
|
pillButton: {
|
|
145
|
-
|
|
146
|
-
paddingHorizontal: 16,
|
|
147
|
-
paddingVertical: 12,
|
|
148
|
-
borderRadius: 25
|
|
58
|
+
borderRadius: 20
|
|
149
59
|
},
|
|
150
60
|
buttonText: {
|
|
151
|
-
color: '
|
|
152
|
-
marginLeft: 8,
|
|
61
|
+
color: '#fff',
|
|
153
62
|
fontSize: 16,
|
|
154
63
|
fontWeight: '600'
|
|
155
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","useState","TouchableOpacity","Text","StyleSheet","View","UniversalOnboarding","COLORS","OnairosButton","title","onPress","style","buttonType","buttonForm","AppName","requestData","returnLink","onComplete","embedd","debug","test","showOnboarding","setShowOnboarding","handlePress","handleOnboardingComplete","apiUrl","token","data","createElement","styles","button","pillButton","buttonText","visible","onClose","create","backgroundColor","primary","paddingVertical","paddingHorizontal","borderRadius","alignItems","justifyContent","color","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/OnairosButton.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,gBAAgB,EAAEC,IAAI,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AACvE,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,MAAM,QAAQ,cAAc;AAGrC,OAAO,MAAMC,aAA2C,GAAGA,CAAC;EAC1DC,KAAK;EACLC,OAAO;EACPC,KAAK;EACLC,UAAU,GAAG,SAAS;EACtBC,UAAU,GAAG,QAAQ;EACrBC,OAAO;EACPC,WAAW;EACXC,UAAU;EACVC,UAAU;EACVC,MAAM,GAAG,KAAK;EACdC,KAAK,GAAG,KAAK;EACbC,IAAI,GAAG;AACT,CAAC,KAAK;EACJ,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAGrB,QAAQ,CAAC,KAAK,CAAC;EAE3D,MAAMsB,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAIV,UAAU,KAAK,QAAQ,EAAE;MAC3BS,iBAAiB,CAAC,IAAI,CAAC;IACzB,CAAC,MAAM;MACLZ,OAAO,CAAC,CAAC;IACX;EACF,CAAC;EAED,MAAMc,wBAAwB,GAAGA,CAACC,MAAc,EAAEC,KAAa,EAAEC,IAAS,KAAK;IAC7EL,iBAAiB,CAAC,KAAK,CAAC;IACxBL,UAAU,CAACQ,MAAM,EAAEC,KAAK,EAAEC,IAAI,CAAC;EACjC,CAAC;EAED,oBACE3B,KAAA,CAAA4B,aAAA,CAACvB,IAAI,qBACHL,KAAA,CAAA4B,aAAA,CAAC1B,gBAAgB;IACfS,KAAK,EAAE,CACLkB,MAAM,CAACC,MAAM,EACblB,UAAU,KAAK,MAAM,IAAIiB,MAAM,CAACE,UAAU,EAC1CpB,KAAK,CACL;IACFD,OAAO,EAAEa;EAAY,gBAErBvB,KAAA,CAAA4B,aAAA,CAACzB,IAAI;IAACQ,KAAK,EAAEkB,MAAM,CAACG;EAAW,GAAEvB,KAAY,CAC7B,CAAC,eAEnBT,KAAA,CAAA4B,aAAA,CAACtB,mBAAmB;IAClB2B,OAAO,EAAEZ,cAAe;IACxBa,OAAO,EAAEA,CAAA,KAAMZ,iBAAiB,CAAC,KAAK,CAAE;IACxCR,OAAO,EAAEA,OAAQ;IACjBC,WAAW,EAAEA,WAAY;IACzBC,UAAU,EAAEA,UAAW;IACvBC,UAAU,EAAEO,wBAAyB;IACrCN,MAAM,EAAEA,MAAO;IACfC,KAAK,EAAEA,KAAM;IACbC,IAAI,EAAEA;EAAK,CACZ,CACG,CAAC;AAEX,CAAC;AAED,MAAMS,MAAM,GAAGzB,UAAU,CAAC+B,MAAM,CAAC;EAC/BL,MAAM,EAAE;IACNM,eAAe,EAAE7B,MAAM,CAAC8B,OAAO;IAC/BC,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE,EAAE;IACrBC,YAAY,EAAE,CAAC;IACfC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDX,UAAU,EAAE;IACVS,YAAY,EAAE;EAChB,CAAC;EACDR,UAAU,EAAE;IACVW,KAAK,EAAE,MAAM;IACbC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -17,14 +17,15 @@ export const UniversalOnboarding = ({
|
|
|
17
17
|
requestData,
|
|
18
18
|
returnLink,
|
|
19
19
|
onComplete,
|
|
20
|
-
embedd,
|
|
21
|
-
debug,
|
|
22
|
-
test
|
|
20
|
+
embedd = false,
|
|
21
|
+
debug = false,
|
|
22
|
+
test = false
|
|
23
23
|
}) => {
|
|
24
24
|
const bottomSheetRef = useRef(null);
|
|
25
25
|
const [step, setStep] = useState('connect');
|
|
26
26
|
const [connections, setConnections] = useState({});
|
|
27
27
|
const [pin, setPin] = useState('');
|
|
28
|
+
const [selectedTier, setSelectedTier] = useState('Medium');
|
|
28
29
|
const [training, setTraining] = useState({
|
|
29
30
|
progress: 0,
|
|
30
31
|
eta: ''
|
|
@@ -77,11 +78,13 @@ export const UniversalOnboarding = ({
|
|
|
77
78
|
clearInterval(interval);
|
|
78
79
|
onComplete('https://api2.onairos.uk', 'dummy-token', {
|
|
79
80
|
pin: userPin,
|
|
80
|
-
connections
|
|
81
|
+
connections,
|
|
82
|
+
selectedTier,
|
|
83
|
+
tierData: requestData[selectedTier]
|
|
81
84
|
});
|
|
82
85
|
}
|
|
83
86
|
}, 1000);
|
|
84
|
-
}, [connections, onComplete]);
|
|
87
|
+
}, [connections, onComplete, selectedTier, requestData]);
|
|
85
88
|
const canProceedToPin = useMemo(() => {
|
|
86
89
|
const connectedPlatforms = Object.values(connections).filter(Boolean).length;
|
|
87
90
|
return connectedPlatforms >= 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","View","Text","StyleSheet","TouchableOpacity","Dimensions","BottomSheet","Icon","PlatformList","PinInput","TrainingModal","useConnections","COLORS","height","get","UniversalOnboarding","visible","onClose","AppName","requestData","returnLink","onComplete","embedd","debug","test","bottomSheetRef","step","setStep","connections","setConnections","pin","setPin","training","setTraining","progress","eta","connectPlatform","disconnectPlatform","getConnectionStatus","isConnecting","snapPoints","_bottomSheetRef$curre","current","expand","loadInitialStatus","_bottomSheetRef$curre2","close","status","handlePlatformToggle","platform","connect","error","console","handlePinSubmit","userPin","interval","setInterval","Math","round","clearInterval","canProceedToPin","connectedPlatforms","Object","values","filter","Boolean","length","renderHeader","createElement","style","styles","header","name","size","color","primary","headerTitle","onPress","closeButton","renderContent","onToggle","isLoading","canProceed","onProceed","onSubmit","minLength","requireSpecialChar","requireNumber","onCancel","ref","enablePanDownToClose","index","container","create","flex","backgroundColor","flexDirection","alignItems","padding","headerBg","borderTopLeftRadius","borderTopRightRadius","fontSize","fontWeight","marginLeft"],"sourceRoot":"..\\..\\..\\src","sources":["components/UniversalOnboarding.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAChF,SACEC,IAAI,EACJC,IAAI,EACJC,UAAU,EACVC,gBAAgB,EAEhBC,UAAU,QACL,cAAc;AACrB,OAAOC,WAAW,MAAM,sBAAsB;AAC9C,OAAOC,IAAI,MAAM,yCAAyC;AAC1D,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,MAAM,QAAQ,cAAc;AAGrC,MAAM;EAAEC;AAAO,CAAC,GAAGR,UAAU,CAACS,GAAG,CAAC,QAAQ,CAAC;AAE3C,OAAO,MAAMC,mBAAuD,GAAGA,CAAC;EACtEC,OAAO;EACPC,OAAO;EACPC,OAAO;EACPC,WAAW;EACXC,UAAU;EACVC,UAAU;EACVC,MAAM;
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","View","Text","StyleSheet","TouchableOpacity","Dimensions","BottomSheet","Icon","PlatformList","PinInput","TrainingModal","useConnections","COLORS","height","get","UniversalOnboarding","visible","onClose","AppName","requestData","returnLink","onComplete","embedd","debug","test","bottomSheetRef","step","setStep","connections","setConnections","pin","setPin","selectedTier","setSelectedTier","training","setTraining","progress","eta","connectPlatform","disconnectPlatform","getConnectionStatus","isConnecting","snapPoints","_bottomSheetRef$curre","current","expand","loadInitialStatus","_bottomSheetRef$curre2","close","status","handlePlatformToggle","platform","connect","error","console","handlePinSubmit","userPin","interval","setInterval","Math","round","clearInterval","tierData","canProceedToPin","connectedPlatforms","Object","values","filter","Boolean","length","renderHeader","createElement","style","styles","header","name","size","color","primary","headerTitle","onPress","closeButton","renderContent","onToggle","isLoading","canProceed","onProceed","onSubmit","minLength","requireSpecialChar","requireNumber","onCancel","ref","enablePanDownToClose","index","container","create","flex","backgroundColor","flexDirection","alignItems","padding","headerBg","borderTopLeftRadius","borderTopRightRadius","fontSize","fontWeight","marginLeft"],"sourceRoot":"..\\..\\..\\src","sources":["components/UniversalOnboarding.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,34 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import OnairosButton from './components/OnairosButton';
|
|
2
|
+
import * as AuthUtils from './utils/auth';
|
|
3
|
+
import * as CryptoUtils from './utils/crypto';
|
|
4
|
+
import * as ApiUtils from './utils/api';
|
|
5
5
|
|
|
6
|
-
//
|
|
7
|
-
export
|
|
8
|
-
export { PinCreationScreen } from './components/screens/PinCreationScreen';
|
|
9
|
-
export { LoadingScreen } from './components/screens/LoadingScreen';
|
|
6
|
+
// Export the main component
|
|
7
|
+
export default OnairosButton;
|
|
10
8
|
|
|
11
|
-
//
|
|
12
|
-
export {
|
|
13
|
-
export { PlatformConnector } from './components/onboarding/PlatformConnector';
|
|
14
|
-
export { OnboardingHeader } from './components/onboarding/OnboardingHeader';
|
|
15
|
-
export { PinInput } from './components/onboarding/PinInput';
|
|
16
|
-
|
|
17
|
-
// Hooks
|
|
18
|
-
export { useConnections } from './hooks/useConnections';
|
|
19
|
-
export { useCredentials } from './hooks/useCredentials';
|
|
20
|
-
|
|
21
|
-
// Utilities
|
|
22
|
-
export { storeCredentials, getCredentials, hasCredentials, deleteCredentials, updateCredentials, generateDeviceUsername, verifyCredentials } from './utils/secureStorage';
|
|
23
|
-
export { validateCredentials, createAccount, authenticate, refreshToken, getPlatformData, getUserProfile, updatePlatformConnections } from './utils/onairosApi';
|
|
24
|
-
export { rsaEncrypt, sha256, base64ToBuffer } from './utils/crypto';
|
|
25
|
-
export { logDebug, logError, isDebugMode } from './utils/debugHelper';
|
|
26
|
-
|
|
27
|
-
// Services
|
|
28
|
-
export { connectPlatform, disconnectPlatform, initializeOAuthService, cleanupOAuthService, storePlatformConnection } from './services/oauthService';
|
|
29
|
-
|
|
30
|
-
// Types
|
|
31
|
-
|
|
32
|
-
// Constants
|
|
33
|
-
export { COLORS, PLATFORMS, API_ENDPOINTS, STORAGE_KEYS, PIN_REQUIREMENTS, DEEP_LINK_CONFIG } from './constants';
|
|
9
|
+
// Export utilities for advanced usage
|
|
10
|
+
export { AuthUtils, CryptoUtils, ApiUtils };
|
|
34
11
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OnairosButton","
|
|
1
|
+
{"version":3,"names":["OnairosButton","AuthUtils","CryptoUtils","ApiUtils"],"sourceRoot":"..\\..\\src","sources":["index.js"],"mappings":"AAAA,OAAOA,aAAa,MAAM,4BAA4B;AACtD,OAAO,KAAKC,SAAS,MAAM,cAAc;AACzC,OAAO,KAAKC,WAAW,MAAM,gBAAgB;AAC7C,OAAO,KAAKC,QAAQ,MAAM,aAAa;;AAEvC;AACA,eAAeH,aAAa;;AAE5B;AACA,SACEC,SAAS,EACTC,WAAW,EACXC,QAAQ","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"..\\..\\src","sources":["types.ts"],"mappings":"","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onairos/react-native",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Onairos React Native SDK for social media authentication and AI model training",
|
|
5
|
-
"main": "lib/commonjs/index",
|
|
6
|
-
"module": "lib/module/index",
|
|
5
|
+
"main": "lib/commonjs/index.js",
|
|
6
|
+
"module": "lib/module/index.js",
|
|
7
7
|
"types": "lib/typescript/index.d.ts",
|
|
8
8
|
"react-native": "src/index",
|
|
9
9
|
"source": "src/index",
|
|
@@ -1,132 +1,49 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
import {
|
|
3
|
-
TouchableOpacity,
|
|
4
|
-
StyleSheet,
|
|
5
|
-
View,
|
|
6
|
-
Text,
|
|
7
|
-
Platform,
|
|
8
|
-
Linking,
|
|
9
|
-
Modal,
|
|
10
|
-
} from 'react-native';
|
|
11
|
-
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
12
|
-
import * as Keychain from 'react-native-keychain';
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { TouchableOpacity, Text, StyleSheet, View } from 'react-native';
|
|
13
3
|
import { UniversalOnboarding } from './UniversalOnboarding';
|
|
14
|
-
import {
|
|
15
|
-
import { useCredentials } from '../hooks/useCredentials';
|
|
16
|
-
// import { validateCredentials } from '../utils/auth';
|
|
17
|
-
// import { COLORS } from '../constants';
|
|
4
|
+
import { COLORS } from '../constants';
|
|
18
5
|
import type { OnairosButtonProps } from '../types';
|
|
19
6
|
|
|
20
7
|
export const OnairosButton: React.FC<OnairosButtonProps> = ({
|
|
8
|
+
title,
|
|
9
|
+
onPress,
|
|
10
|
+
style,
|
|
11
|
+
buttonType = 'default',
|
|
12
|
+
buttonForm = 'signup',
|
|
21
13
|
AppName,
|
|
22
14
|
requestData,
|
|
23
15
|
returnLink,
|
|
16
|
+
onComplete,
|
|
24
17
|
embedd = false,
|
|
25
|
-
color = '#00BFA5',
|
|
26
|
-
icon = 'auto_awesome',
|
|
27
|
-
onResolved,
|
|
28
|
-
login = false,
|
|
29
|
-
buttonType = 'circle',
|
|
30
18
|
debug = false,
|
|
31
19
|
test = false,
|
|
32
20
|
}) => {
|
|
33
21
|
const [showOnboarding, setShowOnboarding] = useState(false);
|
|
34
|
-
const [showDataRequest, setShowDataRequest] = useState(false);
|
|
35
|
-
const { hasCredentials, getCredentials, validateCredentials } = useCredentials();
|
|
36
|
-
const [loading, setLoading] = useState(false);
|
|
37
22
|
|
|
38
|
-
const handlePress =
|
|
39
|
-
|
|
40
|
-
try {
|
|
41
|
-
const hasExisting = await hasCredentials();
|
|
42
|
-
|
|
43
|
-
if (!hasExisting) {
|
|
44
|
-
setShowOnboarding(true);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const credentials = await getCredentials();
|
|
49
|
-
if (!credentials) {
|
|
50
|
-
setShowOnboarding(true);
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const validationResult = await validateCredentials(credentials.username);
|
|
55
|
-
if (!validationResult.isValid) {
|
|
56
|
-
setShowOnboarding(true);
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// If we have valid credentials, show data request modal
|
|
61
|
-
setShowDataRequest(true);
|
|
62
|
-
} catch (error) {
|
|
63
|
-
console.error('Error in button press:', error);
|
|
23
|
+
const handlePress = () => {
|
|
24
|
+
if (buttonForm === 'signup') {
|
|
64
25
|
setShowOnboarding(true);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
}, [hasCredentials, getCredentials, validateCredentials]);
|
|
69
|
-
|
|
70
|
-
const handleDataRequestAccept = useCallback(async () => {
|
|
71
|
-
try {
|
|
72
|
-
const credentials = await getCredentials();
|
|
73
|
-
if (credentials) {
|
|
74
|
-
onResolved(
|
|
75
|
-
'https://api2.onairos.uk',
|
|
76
|
-
credentials.accessToken,
|
|
77
|
-
credentials
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
setShowDataRequest(false);
|
|
81
|
-
} catch (error) {
|
|
82
|
-
console.error('Error handling data request accept:', error);
|
|
26
|
+
} else {
|
|
27
|
+
onPress();
|
|
83
28
|
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
useEffect(() => {
|
|
87
|
-
// Setup deep linking
|
|
88
|
-
const handleDeepLink = ({ url }: { url: string }) => {
|
|
89
|
-
if (url.includes('onairosreact://authenticate')) {
|
|
90
|
-
// Handle authentication callback
|
|
91
|
-
const params = new URL(url).searchParams;
|
|
92
|
-
const nonce = params.get('nonce');
|
|
93
|
-
const callback = params.get('callback');
|
|
94
|
-
|
|
95
|
-
if (nonce && callback) {
|
|
96
|
-
// Process authentication
|
|
97
|
-
setShowOnboarding(false);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
Linking.addEventListener('url', handleDeepLink);
|
|
103
|
-
|
|
104
|
-
return () => {
|
|
105
|
-
// Cleanup deep linking
|
|
106
|
-
// Note: Remove event listener based on RN version
|
|
107
|
-
// if (Platform.OS === 'android') {
|
|
108
|
-
// Linking.removeEventListener('url', handleDeepLink);
|
|
109
|
-
// }
|
|
110
|
-
};
|
|
111
|
-
}, []);
|
|
29
|
+
};
|
|
112
30
|
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
];
|
|
31
|
+
const handleOnboardingComplete = (apiUrl: string, token: string, data: any) => {
|
|
32
|
+
setShowOnboarding(false);
|
|
33
|
+
onComplete(apiUrl, token, data);
|
|
34
|
+
};
|
|
118
35
|
|
|
119
36
|
return (
|
|
120
|
-
|
|
37
|
+
<View>
|
|
121
38
|
<TouchableOpacity
|
|
122
|
-
style={
|
|
39
|
+
style={[
|
|
40
|
+
styles.button,
|
|
41
|
+
buttonType === 'pill' && styles.pillButton,
|
|
42
|
+
style,
|
|
43
|
+
]}
|
|
123
44
|
onPress={handlePress}
|
|
124
|
-
disabled={loading}
|
|
125
45
|
>
|
|
126
|
-
<
|
|
127
|
-
{buttonType === 'pill' && (
|
|
128
|
-
<Text style={styles.buttonText}>Connect with Onairos</Text>
|
|
129
|
-
)}
|
|
46
|
+
<Text style={styles.buttonText}>{title}</Text>
|
|
130
47
|
</TouchableOpacity>
|
|
131
48
|
|
|
132
49
|
<UniversalOnboarding
|
|
@@ -135,47 +52,29 @@ export const OnairosButton: React.FC<OnairosButtonProps> = ({
|
|
|
135
52
|
AppName={AppName}
|
|
136
53
|
requestData={requestData}
|
|
137
54
|
returnLink={returnLink}
|
|
138
|
-
onComplete={
|
|
55
|
+
onComplete={handleOnboardingComplete}
|
|
139
56
|
embedd={embedd}
|
|
140
57
|
debug={debug}
|
|
141
58
|
test={test}
|
|
142
59
|
/>
|
|
143
|
-
|
|
144
|
-
<DataRequestModal
|
|
145
|
-
visible={showDataRequest}
|
|
146
|
-
onClose={() => setShowDataRequest(false)}
|
|
147
|
-
onAccept={handleDataRequestAccept}
|
|
148
|
-
requestData={requestData}
|
|
149
|
-
AppName={AppName}
|
|
150
|
-
/>
|
|
151
|
-
</>
|
|
60
|
+
</View>
|
|
152
61
|
);
|
|
153
62
|
};
|
|
154
63
|
|
|
155
64
|
const styles = StyleSheet.create({
|
|
156
65
|
button: {
|
|
66
|
+
backgroundColor: COLORS.primary,
|
|
67
|
+
paddingVertical: 12,
|
|
68
|
+
paddingHorizontal: 24,
|
|
69
|
+
borderRadius: 8,
|
|
157
70
|
alignItems: 'center',
|
|
158
71
|
justifyContent: 'center',
|
|
159
|
-
elevation: 3,
|
|
160
|
-
shadowColor: '#000',
|
|
161
|
-
shadowOffset: { width: 0, height: 2 },
|
|
162
|
-
shadowOpacity: 0.25,
|
|
163
|
-
shadowRadius: 3.84,
|
|
164
|
-
},
|
|
165
|
-
circleButton: {
|
|
166
|
-
width: 60,
|
|
167
|
-
height: 60,
|
|
168
|
-
borderRadius: 30,
|
|
169
72
|
},
|
|
170
73
|
pillButton: {
|
|
171
|
-
|
|
172
|
-
paddingHorizontal: 16,
|
|
173
|
-
paddingVertical: 12,
|
|
174
|
-
borderRadius: 25,
|
|
74
|
+
borderRadius: 20,
|
|
175
75
|
},
|
|
176
76
|
buttonText: {
|
|
177
|
-
color: '
|
|
178
|
-
marginLeft: 8,
|
|
77
|
+
color: '#fff',
|
|
179
78
|
fontSize: 16,
|
|
180
79
|
fontWeight: '600',
|
|
181
80
|
},
|
|
@@ -25,14 +25,15 @@ export const UniversalOnboarding: React.FC<UniversalOnboardingProps> = ({
|
|
|
25
25
|
requestData,
|
|
26
26
|
returnLink,
|
|
27
27
|
onComplete,
|
|
28
|
-
embedd,
|
|
29
|
-
debug,
|
|
30
|
-
test,
|
|
28
|
+
embedd = false,
|
|
29
|
+
debug = false,
|
|
30
|
+
test = false,
|
|
31
31
|
}) => {
|
|
32
32
|
const bottomSheetRef = useRef<BottomSheet>(null);
|
|
33
33
|
const [step, setStep] = useState<'connect' | 'pin' | 'training'>('connect');
|
|
34
34
|
const [connections, setConnections] = useState<ConnectionStatus>({});
|
|
35
35
|
const [pin, setPin] = useState<string>('');
|
|
36
|
+
const [selectedTier, setSelectedTier] = useState<keyof typeof requestData>('Medium');
|
|
36
37
|
const [training, setTraining] = useState<{
|
|
37
38
|
progress: number;
|
|
38
39
|
eta: string;
|
|
@@ -90,10 +91,12 @@ export const UniversalOnboarding: React.FC<UniversalOnboardingProps> = ({
|
|
|
90
91
|
onComplete('https://api2.onairos.uk', 'dummy-token', {
|
|
91
92
|
pin: userPin,
|
|
92
93
|
connections,
|
|
94
|
+
selectedTier,
|
|
95
|
+
tierData: requestData[selectedTier],
|
|
93
96
|
});
|
|
94
97
|
}
|
|
95
98
|
}, 1000);
|
|
96
|
-
}, [connections, onComplete]);
|
|
99
|
+
}, [connections, onComplete, selectedTier, requestData]);
|
|
97
100
|
|
|
98
101
|
const canProceedToPin = useMemo(() => {
|
|
99
102
|
const connectedPlatforms = Object.values(connections).filter(Boolean).length;
|
package/src/types/index.ts
CHANGED
|
@@ -1,13 +1,24 @@
|
|
|
1
|
+
export interface DataTier {
|
|
2
|
+
type: string;
|
|
3
|
+
descriptions: string;
|
|
4
|
+
reward: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
1
7
|
export interface OnairosButtonProps {
|
|
8
|
+
title: string;
|
|
9
|
+
onPress: () => void;
|
|
10
|
+
style?: any;
|
|
11
|
+
buttonType?: 'default' | 'pill';
|
|
12
|
+
buttonForm?: 'signup' | 'login';
|
|
2
13
|
AppName: string;
|
|
3
|
-
requestData:
|
|
14
|
+
requestData: {
|
|
15
|
+
Small: DataTier;
|
|
16
|
+
Medium: DataTier;
|
|
17
|
+
Large: DataTier;
|
|
18
|
+
};
|
|
4
19
|
returnLink: string;
|
|
20
|
+
onComplete: (apiUrl: string, token: string, data: any) => void;
|
|
5
21
|
embedd?: boolean;
|
|
6
|
-
color?: string;
|
|
7
|
-
icon?: string;
|
|
8
|
-
onResolved: (apiUrl: string, accessToken: string, loginDetails?: Record<string, any>) => void;
|
|
9
|
-
login?: boolean;
|
|
10
|
-
buttonType?: 'circle' | 'pill';
|
|
11
22
|
debug?: boolean;
|
|
12
23
|
test?: boolean;
|
|
13
24
|
}
|
|
@@ -16,19 +27,20 @@ export interface UniversalOnboardingProps {
|
|
|
16
27
|
visible: boolean;
|
|
17
28
|
onClose: () => void;
|
|
18
29
|
AppName: string;
|
|
19
|
-
requestData:
|
|
30
|
+
requestData: {
|
|
31
|
+
Small: DataTier;
|
|
32
|
+
Medium: DataTier;
|
|
33
|
+
Large: DataTier;
|
|
34
|
+
};
|
|
20
35
|
returnLink: string;
|
|
21
|
-
onComplete: (apiUrl: string,
|
|
36
|
+
onComplete: (apiUrl: string, token: string, data: any) => void;
|
|
22
37
|
embedd?: boolean;
|
|
23
38
|
debug?: boolean;
|
|
24
39
|
test?: boolean;
|
|
25
40
|
}
|
|
26
41
|
|
|
27
42
|
export interface ConnectionStatus {
|
|
28
|
-
|
|
29
|
-
pinterest?: { userName: string };
|
|
30
|
-
reddit?: { userName: string };
|
|
31
|
-
youtube?: { userName: string };
|
|
43
|
+
[key: string]: boolean;
|
|
32
44
|
}
|
|
33
45
|
|
|
34
46
|
export interface PlatformListProps {
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface DataTier {
|
|
2
|
+
type: string;
|
|
3
|
+
descriptions: string;
|
|
4
|
+
reward: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface UniversalOnboardingProps {
|
|
8
|
+
visible: boolean;
|
|
9
|
+
onClose: () => void;
|
|
10
|
+
AppName: string;
|
|
11
|
+
requestData: {
|
|
12
|
+
Small: DataTier;
|
|
13
|
+
Medium: DataTier;
|
|
14
|
+
Large: DataTier;
|
|
15
|
+
};
|
|
16
|
+
returnLink: string;
|
|
17
|
+
onComplete: (apiUrl: string, token: string, data: any) => void;
|
|
18
|
+
embedd?: boolean;
|
|
19
|
+
debug?: boolean;
|
|
20
|
+
test?: boolean;
|
|
21
|
+
buttonType?: 'default' | 'pill';
|
|
22
|
+
buttonForm?: 'signup' | 'login';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface ConnectionStatus {
|
|
26
|
+
[key: string]: boolean;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// ... rest of the existing types ...
|