@onairos/react-native 3.0.36 → 3.0.38
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/TrainingModal.js +20 -8
- package/lib/commonjs/components/TrainingModal.js.map +1 -1
- package/lib/commonjs/components/UniversalOnboarding.js +187 -55
- package/lib/commonjs/components/UniversalOnboarding.js.map +1 -1
- package/lib/commonjs/hooks/useCredentials.js +88 -8
- package/lib/commonjs/hooks/useCredentials.js.map +1 -1
- package/lib/module/components/TrainingModal.js +20 -8
- package/lib/module/components/TrainingModal.js.map +1 -1
- package/lib/module/components/UniversalOnboarding.js +188 -56
- package/lib/module/components/UniversalOnboarding.js.map +1 -1
- package/lib/module/hooks/useCredentials.js +88 -7
- package/lib/module/hooks/useCredentials.js.map +1 -1
- package/lib/typescript/components/TrainingModal.d.ts.map +1 -1
- package/lib/typescript/components/UniversalOnboarding.d.ts.map +1 -1
- package/lib/typescript/hooks/useCredentials.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/TrainingModal.tsx +18 -3
- package/src/components/UniversalOnboarding.tsx +202 -49
- package/src/hooks/useCredentials.ts +83 -8
|
@@ -5,13 +5,88 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useCredentials = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
|
-
var Keychain = _interopRequireWildcard(require("react-native-keychain"));
|
|
9
8
|
var _constants = require("../constants");
|
|
10
|
-
|
|
9
|
+
// Create a mock storage for environments without Keychain access
|
|
10
|
+
const mockCredentialStorage = {};
|
|
11
|
+
|
|
12
|
+
// Try to import Keychain, but provide fallbacks if not available
|
|
13
|
+
let Keychain = null;
|
|
14
|
+
try {
|
|
15
|
+
Keychain = require('react-native-keychain');
|
|
16
|
+
} catch (error) {
|
|
17
|
+
console.warn('react-native-keychain module not available in useCredentials, using mock storage');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Check if Keychain is properly initialized and available
|
|
21
|
+
const isKeychainAvailable = () => {
|
|
22
|
+
try {
|
|
23
|
+
return Keychain && typeof Keychain.getGenericPassword === 'function';
|
|
24
|
+
} catch (e) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// Safe wrapper for getGenericPassword
|
|
30
|
+
const safeGetGenericPassword = async options => {
|
|
31
|
+
try {
|
|
32
|
+
if (isKeychainAvailable()) {
|
|
33
|
+
return await Keychain.getGenericPassword(options);
|
|
34
|
+
} else {
|
|
35
|
+
const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
|
|
36
|
+
return mockCredentialStorage[key] || null;
|
|
37
|
+
}
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.warn('Keychain access failed, using mock storage', error);
|
|
40
|
+
const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
|
|
41
|
+
return mockCredentialStorage[key] || null;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// Safe wrapper for setGenericPassword
|
|
46
|
+
const safeSetGenericPassword = async (username, password, options) => {
|
|
47
|
+
try {
|
|
48
|
+
if (isKeychainAvailable()) {
|
|
49
|
+
return await Keychain.setGenericPassword(username, password, options);
|
|
50
|
+
} else {
|
|
51
|
+
const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
|
|
52
|
+
mockCredentialStorage[key] = {
|
|
53
|
+
username,
|
|
54
|
+
password
|
|
55
|
+
};
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
} catch (error) {
|
|
59
|
+
console.warn('Keychain access failed, using mock storage', error);
|
|
60
|
+
const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
|
|
61
|
+
mockCredentialStorage[key] = {
|
|
62
|
+
username,
|
|
63
|
+
password
|
|
64
|
+
};
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// Safe wrapper for resetGenericPassword
|
|
70
|
+
const safeResetGenericPassword = async options => {
|
|
71
|
+
try {
|
|
72
|
+
if (isKeychainAvailable()) {
|
|
73
|
+
return await Keychain.resetGenericPassword(options);
|
|
74
|
+
} else {
|
|
75
|
+
const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
|
|
76
|
+
delete mockCredentialStorage[key];
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
} catch (error) {
|
|
80
|
+
console.warn('Keychain access failed, using mock storage', error);
|
|
81
|
+
const key = (options === null || options === void 0 ? void 0 : options.service) || 'default';
|
|
82
|
+
delete mockCredentialStorage[key];
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
11
86
|
const useCredentials = () => {
|
|
12
87
|
const hasCredentials = (0, _react.useCallback)(async () => {
|
|
13
88
|
try {
|
|
14
|
-
const credentials = await
|
|
89
|
+
const credentials = await safeGetGenericPassword({
|
|
15
90
|
service: _constants.STORAGE_KEYS.credentials
|
|
16
91
|
});
|
|
17
92
|
return !!credentials;
|
|
@@ -22,7 +97,7 @@ const useCredentials = () => {
|
|
|
22
97
|
}, []);
|
|
23
98
|
const getCredentials = (0, _react.useCallback)(async () => {
|
|
24
99
|
try {
|
|
25
|
-
const credentials = await
|
|
100
|
+
const credentials = await safeGetGenericPassword({
|
|
26
101
|
service: _constants.STORAGE_KEYS.credentials
|
|
27
102
|
});
|
|
28
103
|
if (credentials) {
|
|
@@ -37,11 +112,16 @@ const useCredentials = () => {
|
|
|
37
112
|
const storeCredentials = (0, _react.useCallback)(async (username, userPin, accessToken) => {
|
|
38
113
|
try {
|
|
39
114
|
const options = {
|
|
40
|
-
accessControl: Keychain.ACCESS_CONTROL.BIOMETRY_ANY,
|
|
41
|
-
accessible: Keychain.ACCESSIBLE.WHEN_UNLOCKED,
|
|
42
115
|
service: _constants.STORAGE_KEYS.credentials
|
|
43
116
|
};
|
|
44
|
-
|
|
117
|
+
|
|
118
|
+
// Only use secure storage options on real devices
|
|
119
|
+
if (isKeychainAvailable()) {
|
|
120
|
+
var _Keychain$ACCESS_CONT, _Keychain$ACCESSIBLE;
|
|
121
|
+
options.accessControl = (_Keychain$ACCESS_CONT = Keychain.ACCESS_CONTROL) === null || _Keychain$ACCESS_CONT === void 0 ? void 0 : _Keychain$ACCESS_CONT.BIOMETRY_ANY;
|
|
122
|
+
options.accessible = (_Keychain$ACCESSIBLE = Keychain.ACCESSIBLE) === null || _Keychain$ACCESSIBLE === void 0 ? void 0 : _Keychain$ACCESSIBLE.WHEN_UNLOCKED;
|
|
123
|
+
}
|
|
124
|
+
await safeSetGenericPassword(username, JSON.stringify({
|
|
45
125
|
userPin,
|
|
46
126
|
accessToken
|
|
47
127
|
}), options);
|
|
@@ -53,7 +133,7 @@ const useCredentials = () => {
|
|
|
53
133
|
}, []);
|
|
54
134
|
const clearCredentials = (0, _react.useCallback)(async () => {
|
|
55
135
|
try {
|
|
56
|
-
await
|
|
136
|
+
await safeResetGenericPassword({
|
|
57
137
|
service: _constants.STORAGE_KEYS.credentials
|
|
58
138
|
});
|
|
59
139
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","
|
|
1
|
+
{"version":3,"names":["_react","require","_constants","mockCredentialStorage","Keychain","error","console","warn","isKeychainAvailable","getGenericPassword","e","safeGetGenericPassword","options","key","service","safeSetGenericPassword","username","password","setGenericPassword","safeResetGenericPassword","resetGenericPassword","useCredentials","hasCredentials","useCallback","credentials","STORAGE_KEYS","getCredentials","JSON","parse","storeCredentials","userPin","accessToken","_Keychain$ACCESS_CONT","_Keychain$ACCESSIBLE","accessControl","ACCESS_CONTROL","BIOMETRY_ANY","accessible","ACCESSIBLE","WHEN_UNLOCKED","stringify","clearCredentials","validateCredentials","response","fetch","method","headers","body","data","json","success","isValid","valid","exports"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useCredentials.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { View, Text, StyleSheet, TouchableOpacity, ActivityIndicator, Dimensions, Modal, TouchableWithoutFeedback, SafeAreaView } from 'react-native';
|
|
3
|
-
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
4
3
|
import { COLORS } from '../constants';
|
|
5
4
|
const {
|
|
6
5
|
width,
|
|
@@ -34,15 +33,15 @@ export const TrainingModal = ({
|
|
|
34
33
|
style: styles.container
|
|
35
34
|
}, /*#__PURE__*/React.createElement(View, {
|
|
36
35
|
style: styles.content
|
|
37
|
-
}, /*#__PURE__*/React.createElement(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}), /*#__PURE__*/React.createElement(Text, {
|
|
36
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
37
|
+
style: styles.onairosLogo
|
|
38
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
39
|
+
style: styles.onairosLogoText
|
|
40
|
+
}, "O")), /*#__PURE__*/React.createElement(Text, {
|
|
42
41
|
style: styles.title
|
|
43
|
-
}, "Training Your AI
|
|
42
|
+
}, "Training Your AI"), /*#__PURE__*/React.createElement(Text, {
|
|
44
43
|
style: styles.subtitle
|
|
45
|
-
}, "
|
|
44
|
+
}, "Creating your personalized model"), /*#__PURE__*/React.createElement(View, {
|
|
46
45
|
style: styles.progressContainer
|
|
47
46
|
}, /*#__PURE__*/React.createElement(View, {
|
|
48
47
|
style: styles.progressBar
|
|
@@ -194,6 +193,19 @@ const styles = StyleSheet.create({
|
|
|
194
193
|
fontSize: 16,
|
|
195
194
|
fontWeight: '600',
|
|
196
195
|
color: '#000'
|
|
196
|
+
},
|
|
197
|
+
onairosLogo: {
|
|
198
|
+
width: 48,
|
|
199
|
+
height: 48,
|
|
200
|
+
borderRadius: 24,
|
|
201
|
+
backgroundColor: COLORS.primary,
|
|
202
|
+
justifyContent: 'center',
|
|
203
|
+
alignItems: 'center'
|
|
204
|
+
},
|
|
205
|
+
onairosLogoText: {
|
|
206
|
+
fontSize: 24,
|
|
207
|
+
fontWeight: '600',
|
|
208
|
+
color: '#fff'
|
|
197
209
|
}
|
|
198
210
|
});
|
|
199
211
|
//# sourceMappingURL=TrainingModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Text","StyleSheet","TouchableOpacity","ActivityIndicator","Dimensions","Modal","TouchableWithoutFeedback","SafeAreaView","
|
|
1
|
+
{"version":3,"names":["React","View","Text","StyleSheet","TouchableOpacity","ActivityIndicator","Dimensions","Modal","TouchableWithoutFeedback","SafeAreaView","COLORS","width","height","get","TrainingModal","visible","progress","eta","onCancel","onComplete","modelKey","username","progressPercentage","Math","round","createElement","transparent","animationType","statusBarTranslucent","onRequestClose","style","styles","modalOverlay","bottomSheet","handleContainer","handle","container","content","onairosLogo","onairosLogoText","title","subtitle","progressContainer","progressBar","progressFill","progressText","etaText","loadingContainer","size","color","primary","loadingText","footer","cancelButton","onPress","cancelButtonText","completeButton","completeButtonText","create","flex","backgroundColor","justifyContent","alignItems","borderTopLeftRadius","borderTopRightRadius","overflow","paddingTop","paddingBottom","borderRadius","padding","fontSize","fontWeight","marginTop","marginBottom","text","textAlign","secondary","border","flexDirection","marginLeft","borderTopWidth","borderTopColor","paddingHorizontal","paddingVertical","borderWidth","borderColor"],"sourceRoot":"..\\..\\..\\src","sources":["components/TrainingModal.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
2
|
-
import { View, Text, StyleSheet, TouchableOpacity, Dimensions, Platform, Modal, Animated, SafeAreaView, TouchableWithoutFeedback, ScrollView, Image,
|
|
2
|
+
import { View, Text, StyleSheet, TouchableOpacity, ActivityIndicator, Dimensions, Platform, Modal, Animated, SafeAreaView, TouchableWithoutFeedback, ScrollView, Image, Linking } from 'react-native';
|
|
3
3
|
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
4
4
|
import { PinInput } from './PinInput';
|
|
5
5
|
import { TrainingModal } from './TrainingModal';
|
|
6
6
|
import { OAuthWebView } from './onboarding/OAuthWebView';
|
|
7
7
|
import { useConnections } from '../hooks/useConnections';
|
|
8
|
+
import { COLORS } from '../constants';
|
|
8
9
|
import { initiateOAuth, initiateNativeAuth, hasNativeSDK, isOAuthCallback } from '../services/platformAuthService';
|
|
9
10
|
const {
|
|
10
11
|
height,
|
|
@@ -36,6 +37,7 @@ export const UniversalOnboarding = ({
|
|
|
36
37
|
const [currentPlatform, setCurrentPlatform] = useState('');
|
|
37
38
|
const [username, setUsername] = useState('Avatar');
|
|
38
39
|
const [isConnectingPlatform, setIsConnectingPlatform] = useState(false);
|
|
40
|
+
const [showLoginWebView, setShowLoginWebView] = useState(false);
|
|
39
41
|
const platforms = [{
|
|
40
42
|
id: 'instagram',
|
|
41
43
|
name: 'Instagram',
|
|
@@ -226,34 +228,10 @@ export const UniversalOnboarding = ({
|
|
|
226
228
|
* Handles OAuth callback URLs
|
|
227
229
|
*/
|
|
228
230
|
const handleOAuthCallback = useCallback(url => {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
const platform = parsedUrl.searchParams.get('platform') || currentPlatform;
|
|
234
|
-
if (code && platform) {
|
|
235
|
-
// Update connections state
|
|
236
|
-
setConnections(prev => ({
|
|
237
|
-
...prev,
|
|
238
|
-
[platform]: {
|
|
239
|
-
userName: username,
|
|
240
|
-
connected: true
|
|
241
|
-
}
|
|
242
|
-
}));
|
|
243
|
-
|
|
244
|
-
// Update platform toggles
|
|
245
|
-
setPlatformToggles(prev => ({
|
|
246
|
-
...prev,
|
|
247
|
-
[platform]: true
|
|
248
|
-
}));
|
|
249
|
-
|
|
250
|
-
// Return to the connect step
|
|
251
|
-
setStep('connect');
|
|
252
|
-
}
|
|
253
|
-
} catch (error) {
|
|
254
|
-
console.error('Error handling OAuth callback:', error);
|
|
255
|
-
}
|
|
256
|
-
}, [currentPlatform, username]);
|
|
231
|
+
console.log('OAuth callback received:', url);
|
|
232
|
+
// Handle the OAuth callback here
|
|
233
|
+
// This would typically extract the authorization code and complete the OAuth flow
|
|
234
|
+
}, []);
|
|
257
235
|
|
|
258
236
|
/**
|
|
259
237
|
* Handles completion of the OAuth flow
|
|
@@ -285,6 +263,28 @@ export const UniversalOnboarding = ({
|
|
|
285
263
|
setCurrentPlatform('');
|
|
286
264
|
setStep('connect');
|
|
287
265
|
}, [currentPlatform, username]);
|
|
266
|
+
|
|
267
|
+
// Function to handle "Already have an account" button
|
|
268
|
+
const handleAlreadyHaveAccount = useCallback(() => {
|
|
269
|
+
console.log('Already have an account clicked - opening login WebView');
|
|
270
|
+
setShowLoginWebView(true);
|
|
271
|
+
// TODO: Open WebView to check for existing Onairos login details
|
|
272
|
+
}, []);
|
|
273
|
+
|
|
274
|
+
// Function to check for existing account (spoofed for now)
|
|
275
|
+
const checkExistingAccount = useCallback(async () => {
|
|
276
|
+
console.log('Checking for existing account...');
|
|
277
|
+
// TODO: Implement actual logic to check cookies/storage for existing account
|
|
278
|
+
// For now, this is spoofed and doesn't do anything
|
|
279
|
+
return false;
|
|
280
|
+
}, []);
|
|
281
|
+
|
|
282
|
+
// Function to handle login WebView completion
|
|
283
|
+
const handleLoginWebViewComplete = useCallback(() => {
|
|
284
|
+
console.log('Login WebView completed');
|
|
285
|
+
setShowLoginWebView(false);
|
|
286
|
+
// TODO: If login successful, skip onboarding and call onComplete
|
|
287
|
+
}, []);
|
|
288
288
|
const handlePinSubmit = useCallback(async userPin => {
|
|
289
289
|
setPin(userPin);
|
|
290
290
|
setStep('training');
|
|
@@ -314,9 +314,14 @@ export const UniversalOnboarding = ({
|
|
|
314
314
|
return Object.values(platformToggles).some(value => value === true);
|
|
315
315
|
}, [platformToggles]);
|
|
316
316
|
const handleProceed = () => {
|
|
317
|
-
|
|
317
|
+
console.log('Proceeding to next step');
|
|
318
|
+
// Show success screen first
|
|
319
|
+
setStep('success');
|
|
320
|
+
|
|
321
|
+
// After a delay, proceed to PIN
|
|
322
|
+
setTimeout(() => {
|
|
318
323
|
setStep('pin');
|
|
319
|
-
}
|
|
324
|
+
}, 3000);
|
|
320
325
|
};
|
|
321
326
|
return /*#__PURE__*/React.createElement(Modal, {
|
|
322
327
|
visible: visible,
|
|
@@ -359,7 +364,12 @@ export const UniversalOnboarding = ({
|
|
|
359
364
|
style: styles.onairosIcon
|
|
360
365
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
361
366
|
style: styles.onairosIconText
|
|
362
|
-
}, "O")))
|
|
367
|
+
}, "O"))), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
368
|
+
style: styles.alreadyHaveAccountButton,
|
|
369
|
+
onPress: handleAlreadyHaveAccount
|
|
370
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
371
|
+
style: styles.alreadyHaveAccountText
|
|
372
|
+
}, "Already have an account?"))), /*#__PURE__*/React.createElement(ScrollView, {
|
|
363
373
|
style: styles.content,
|
|
364
374
|
contentContainerStyle: styles.scrollContent,
|
|
365
375
|
showsVerticalScrollIndicator: true,
|
|
@@ -375,9 +385,11 @@ export const UniversalOnboarding = ({
|
|
|
375
385
|
style: styles.privacyMessage
|
|
376
386
|
}, "None of your app data is shared with ANYONE")), /*#__PURE__*/React.createElement(View, {
|
|
377
387
|
style: styles.platformsContainer
|
|
378
|
-
}, platforms.map(platform => /*#__PURE__*/React.createElement(
|
|
388
|
+
}, platforms.map(platform => /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
379
389
|
key: platform.id,
|
|
380
|
-
style: styles.platformItem
|
|
390
|
+
style: styles.platformItem,
|
|
391
|
+
onPress: () => togglePlatform(platform.id),
|
|
392
|
+
disabled: isConnectingPlatform
|
|
381
393
|
}, /*#__PURE__*/React.createElement(View, {
|
|
382
394
|
style: styles.platformInfo
|
|
383
395
|
}, /*#__PURE__*/React.createElement(Image, {
|
|
@@ -386,15 +398,16 @@ export const UniversalOnboarding = ({
|
|
|
386
398
|
resizeMode: "contain"
|
|
387
399
|
}), /*#__PURE__*/React.createElement(Text, {
|
|
388
400
|
style: styles.platformName
|
|
389
|
-
}, platform.name)), /*#__PURE__*/React.createElement(
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
401
|
+
}, platform.name)), isConnectingPlatform && currentPlatform === platform.id ? /*#__PURE__*/React.createElement(ActivityIndicator, {
|
|
402
|
+
size: "small",
|
|
403
|
+
color: COLORS.primary
|
|
404
|
+
}) : /*#__PURE__*/React.createElement(View, {
|
|
405
|
+
style: [styles.platformToggle, platformToggles[platform.id] && styles.platformToggleActive]
|
|
406
|
+
}, platformToggles[platform.id] && /*#__PURE__*/React.createElement(Icon, {
|
|
407
|
+
name: "check",
|
|
408
|
+
size: 16,
|
|
409
|
+
color: "#fff"
|
|
410
|
+
})))))), /*#__PURE__*/React.createElement(View, {
|
|
398
411
|
style: styles.footer
|
|
399
412
|
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
400
413
|
style: styles.footerButtonCancel,
|
|
@@ -407,7 +420,32 @@ export const UniversalOnboarding = ({
|
|
|
407
420
|
disabled: !canProceedToPin()
|
|
408
421
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
409
422
|
style: styles.footerButtonTextConfirm
|
|
410
|
-
}, "Connect")))), step === '
|
|
423
|
+
}, "Connect")))), step === 'success' && /*#__PURE__*/React.createElement(View, {
|
|
424
|
+
style: styles.successContainer
|
|
425
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
426
|
+
style: styles.successContent
|
|
427
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
428
|
+
style: styles.successIcon
|
|
429
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
430
|
+
name: "check",
|
|
431
|
+
size: 48,
|
|
432
|
+
color: "#fff"
|
|
433
|
+
})), /*#__PURE__*/React.createElement(Text, {
|
|
434
|
+
style: styles.successTitle
|
|
435
|
+
}, "Never Connect Again!"), /*#__PURE__*/React.createElement(Text, {
|
|
436
|
+
style: styles.successSubtitle
|
|
437
|
+
}, "Setup for future use complete"), /*#__PURE__*/React.createElement(View, {
|
|
438
|
+
style: styles.successMessage
|
|
439
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
440
|
+
style: styles.successMessageText
|
|
441
|
+
}, "Your connections are saved securely. Next time you use ", AppName, ", you'll be automatically connected.")), /*#__PURE__*/React.createElement(View, {
|
|
442
|
+
style: styles.progressIndicator
|
|
443
|
+
}, /*#__PURE__*/React.createElement(ActivityIndicator, {
|
|
444
|
+
size: "small",
|
|
445
|
+
color: "#4CAF50"
|
|
446
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
447
|
+
style: styles.progressText
|
|
448
|
+
}, "Continuing...")))), step === 'pin' && /*#__PURE__*/React.createElement(PinInput, {
|
|
411
449
|
onSubmit: handlePinSubmit,
|
|
412
450
|
minLength: 8,
|
|
413
451
|
requireSpecialChar: true,
|
|
@@ -438,6 +476,16 @@ export const UniversalOnboarding = ({
|
|
|
438
476
|
},
|
|
439
477
|
onSuccess: handleOAuthSuccess,
|
|
440
478
|
onComplete: () => setStep('connect')
|
|
479
|
+
}), showLoginWebView && /*#__PURE__*/React.createElement(OAuthWebView, {
|
|
480
|
+
url: "https://onairos.uk/login" // TODO: Replace with actual login URL
|
|
481
|
+
,
|
|
482
|
+
platform: "onairos",
|
|
483
|
+
onClose: () => setShowLoginWebView(false),
|
|
484
|
+
onSuccess: result => {
|
|
485
|
+
console.log('Login successful:', result);
|
|
486
|
+
handleLoginWebViewComplete();
|
|
487
|
+
},
|
|
488
|
+
onComplete: handleLoginWebViewComplete
|
|
441
489
|
})))))));
|
|
442
490
|
};
|
|
443
491
|
const styles = StyleSheet.create({
|
|
@@ -509,20 +557,20 @@ const styles = StyleSheet.create({
|
|
|
509
557
|
color: '#000'
|
|
510
558
|
},
|
|
511
559
|
titleContainer: {
|
|
512
|
-
marginBottom:
|
|
560
|
+
marginBottom: 20
|
|
513
561
|
},
|
|
514
562
|
mainTitle: {
|
|
515
|
-
fontSize:
|
|
563
|
+
fontSize: 20,
|
|
516
564
|
fontWeight: '600',
|
|
517
565
|
color: '#000',
|
|
518
566
|
textAlign: 'center',
|
|
519
|
-
marginBottom:
|
|
567
|
+
marginBottom: 12
|
|
520
568
|
},
|
|
521
569
|
privacyMessage: {
|
|
522
570
|
fontSize: 14,
|
|
523
571
|
color: '#666',
|
|
524
572
|
textAlign: 'center',
|
|
525
|
-
marginBottom:
|
|
573
|
+
marginBottom: 12
|
|
526
574
|
},
|
|
527
575
|
content: {
|
|
528
576
|
flex: 1,
|
|
@@ -530,8 +578,7 @@ const styles = StyleSheet.create({
|
|
|
530
578
|
},
|
|
531
579
|
scrollContent: {
|
|
532
580
|
flexGrow: 1,
|
|
533
|
-
paddingBottom:
|
|
534
|
-
minHeight: '100%'
|
|
581
|
+
paddingBottom: 20
|
|
535
582
|
},
|
|
536
583
|
platformsContainer: {
|
|
537
584
|
marginTop: 16
|
|
@@ -540,20 +587,21 @@ const styles = StyleSheet.create({
|
|
|
540
587
|
flexDirection: 'row',
|
|
541
588
|
justifyContent: 'space-between',
|
|
542
589
|
alignItems: 'center',
|
|
543
|
-
padding:
|
|
590
|
+
padding: 12,
|
|
544
591
|
backgroundColor: '#fff',
|
|
545
|
-
borderRadius:
|
|
546
|
-
marginBottom:
|
|
592
|
+
borderRadius: 12,
|
|
593
|
+
marginBottom: 8,
|
|
547
594
|
borderWidth: 1,
|
|
548
595
|
borderColor: '#eee'
|
|
549
596
|
},
|
|
550
597
|
platformInfo: {
|
|
551
598
|
flexDirection: 'row',
|
|
552
|
-
alignItems: 'center'
|
|
599
|
+
alignItems: 'center',
|
|
600
|
+
flex: 1
|
|
553
601
|
},
|
|
554
602
|
platformIcon: {
|
|
555
|
-
width:
|
|
556
|
-
height:
|
|
603
|
+
width: 24,
|
|
604
|
+
height: 24,
|
|
557
605
|
marginRight: 12
|
|
558
606
|
},
|
|
559
607
|
platformName: {
|
|
@@ -593,6 +641,90 @@ const styles = StyleSheet.create({
|
|
|
593
641
|
color: '#000',
|
|
594
642
|
fontSize: 16,
|
|
595
643
|
fontWeight: '600'
|
|
644
|
+
},
|
|
645
|
+
alreadyHaveAccountButton: {
|
|
646
|
+
paddingVertical: 8,
|
|
647
|
+
paddingHorizontal: 16
|
|
648
|
+
},
|
|
649
|
+
alreadyHaveAccountText: {
|
|
650
|
+
color: '#666',
|
|
651
|
+
fontSize: 16
|
|
652
|
+
},
|
|
653
|
+
successContainer: {
|
|
654
|
+
flex: 1,
|
|
655
|
+
justifyContent: 'center',
|
|
656
|
+
alignItems: 'center'
|
|
657
|
+
},
|
|
658
|
+
successContent: {
|
|
659
|
+
backgroundColor: '#fff',
|
|
660
|
+
padding: 24,
|
|
661
|
+
borderRadius: 16,
|
|
662
|
+
alignItems: 'center'
|
|
663
|
+
},
|
|
664
|
+
successIcon: {
|
|
665
|
+
backgroundColor: '#4CAF50',
|
|
666
|
+
borderRadius: 24,
|
|
667
|
+
padding: 12,
|
|
668
|
+
marginBottom: 16
|
|
669
|
+
},
|
|
670
|
+
successTitle: {
|
|
671
|
+
fontSize: 22,
|
|
672
|
+
fontWeight: '600',
|
|
673
|
+
color: '#000',
|
|
674
|
+
textAlign: 'center',
|
|
675
|
+
marginBottom: 16
|
|
676
|
+
},
|
|
677
|
+
successSubtitle: {
|
|
678
|
+
fontSize: 14,
|
|
679
|
+
color: '#666',
|
|
680
|
+
textAlign: 'center',
|
|
681
|
+
marginBottom: 16
|
|
682
|
+
},
|
|
683
|
+
successMessage: {
|
|
684
|
+
backgroundColor: '#f0f0f0',
|
|
685
|
+
padding: 16,
|
|
686
|
+
borderRadius: 8,
|
|
687
|
+
marginBottom: 16
|
|
688
|
+
},
|
|
689
|
+
successMessageText: {
|
|
690
|
+
fontSize: 14,
|
|
691
|
+
color: '#666'
|
|
692
|
+
},
|
|
693
|
+
platformToggle: {
|
|
694
|
+
width: 24,
|
|
695
|
+
height: 24,
|
|
696
|
+
borderRadius: 12,
|
|
697
|
+
borderWidth: 1,
|
|
698
|
+
borderColor: '#ccc',
|
|
699
|
+
alignItems: 'center',
|
|
700
|
+
justifyContent: 'center',
|
|
701
|
+
backgroundColor: '#fff'
|
|
702
|
+
},
|
|
703
|
+
platformToggleActive: {
|
|
704
|
+
borderColor: '#000',
|
|
705
|
+
backgroundColor: '#000'
|
|
706
|
+
},
|
|
707
|
+
// Dark mode styles
|
|
708
|
+
darkPlatformItem: {
|
|
709
|
+
backgroundColor: '#333',
|
|
710
|
+
borderColor: '#555'
|
|
711
|
+
},
|
|
712
|
+
darkText: {
|
|
713
|
+
color: '#fff'
|
|
714
|
+
},
|
|
715
|
+
darkSubText: {
|
|
716
|
+
color: '#ccc'
|
|
717
|
+
},
|
|
718
|
+
progressIndicator: {
|
|
719
|
+
flexDirection: 'row',
|
|
720
|
+
alignItems: 'center',
|
|
721
|
+
marginTop: 16
|
|
722
|
+
},
|
|
723
|
+
progressText: {
|
|
724
|
+
fontSize: 16,
|
|
725
|
+
fontWeight: '500',
|
|
726
|
+
color: '#000',
|
|
727
|
+
marginLeft: 8
|
|
596
728
|
}
|
|
597
729
|
});
|
|
598
730
|
//# sourceMappingURL=UniversalOnboarding.js.map
|