@onairos/react-native 3.1.15 → 3.1.17
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/README.md +404 -0
- package/lib/commonjs/assets/images/Checkbox.svg +3 -3
- package/lib/commonjs/assets/images/EnochE.svg +19 -19
- package/lib/commonjs/assets/images/Personalityprofile.svg +3 -3
- package/lib/commonjs/assets/images/Personalitytraits.svg +3 -3
- package/lib/commonjs/assets/images/Userpreferences.svg +3 -3
- package/lib/commonjs/assets/images/arrow.svg +20 -20
- package/lib/commonjs/assets/images/basicproficon.svg +43 -43
- package/lib/commonjs/assets/images/basicprofile.svg +3 -3
- package/lib/commonjs/assets/images/checkmark.svg +4 -4
- package/lib/commonjs/assets/images/contentanalysis.svg +3 -3
- package/lib/commonjs/assets/images/contenticon.svg +23 -23
- package/lib/commonjs/assets/images/personalityicon.svg +18 -18
- package/lib/commonjs/assets/images/x-close.svg +3 -3
- package/lib/commonjs/components/OnairosSignInButton.js +32 -74
- package/lib/commonjs/components/OnairosSignInButton.js.map +1 -1
- package/lib/commonjs/components/UniversalOnboarding.js +4 -4
- package/lib/commonjs/config/api.js +2 -2
- package/lib/commonjs/hooks/useConnections.js +6 -6
- package/lib/commonjs/hooks/useUserConnections.js +10 -10
- package/lib/commonjs/index.js +5 -12
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/services/apiClient.js +35 -35
- package/lib/commonjs/services/apiKeyService.js +99 -99
- package/lib/commonjs/services/authService.js +82 -82
- package/lib/commonjs/services/biometricPinService.js +10 -10
- package/lib/commonjs/services/connectedAccountsService.js +32 -32
- package/lib/commonjs/services/googleAuthService.js +15 -15
- package/lib/commonjs/services/imageCompressionService.js +15 -15
- package/lib/commonjs/services/jwtStorageService.js +59 -59
- package/lib/commonjs/services/mobileTrainingService.js +14 -14
- package/lib/commonjs/services/pinEncryptionService.js +10 -10
- package/lib/commonjs/services/pinStorageUtils.js +15 -15
- package/lib/commonjs/services/platformAuthService.js +47 -47
- package/lib/commonjs/services/storageService.js +31 -31
- package/lib/commonjs/services/trainingApiHelpers.js +33 -33
- package/lib/commonjs/services/userConnectionsService.js +24 -24
- package/lib/commonjs/utils/Portal.js +4 -4
- package/lib/commonjs/utils/api.js +24 -24
- package/lib/commonjs/utils/auth.js +18 -18
- package/lib/commonjs/utils/crypto.js +13 -13
- package/lib/commonjs/utils/encryption.js +12 -12
- package/lib/commonjs/utils/eventUtils.js +52 -52
- package/lib/commonjs/utils/programmaticFlow.js +16 -16
- package/lib/commonjs/utils/retryHelper.js +27 -27
- package/lib/module/assets/images/Checkbox.svg +3 -3
- package/lib/module/assets/images/EnochE.svg +19 -19
- package/lib/module/assets/images/Personalityprofile.svg +3 -3
- package/lib/module/assets/images/Personalitytraits.svg +3 -3
- package/lib/module/assets/images/Userpreferences.svg +3 -3
- package/lib/module/assets/images/arrow.svg +20 -20
- package/lib/module/assets/images/basicproficon.svg +43 -43
- package/lib/module/assets/images/basicprofile.svg +3 -3
- package/lib/module/assets/images/checkmark.svg +4 -4
- package/lib/module/assets/images/contentanalysis.svg +3 -3
- package/lib/module/assets/images/contenticon.svg +23 -23
- package/lib/module/assets/images/personalityicon.svg +18 -18
- package/lib/module/assets/images/x-close.svg +3 -3
- package/lib/module/components/OnairosSignInButton.js +32 -74
- package/lib/module/components/OnairosSignInButton.js.map +1 -1
- package/lib/module/components/UniversalOnboarding.js +4 -4
- package/lib/module/config/api.js +2 -2
- package/lib/module/hooks/useConnections.js +6 -6
- package/lib/module/hooks/useUserConnections.js +10 -10
- package/lib/module/index.js +5 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/services/apiClient.js +35 -35
- package/lib/module/services/apiKeyService.js +99 -99
- package/lib/module/services/authService.js +82 -82
- package/lib/module/services/biometricPinService.js +10 -10
- package/lib/module/services/connectedAccountsService.js +32 -32
- package/lib/module/services/googleAuthService.js +15 -15
- package/lib/module/services/imageCompressionService.js +15 -15
- package/lib/module/services/jwtStorageService.js +59 -59
- package/lib/module/services/mobileTrainingService.js +14 -14
- package/lib/module/services/pinEncryptionService.js +10 -10
- package/lib/module/services/pinStorageUtils.js +15 -15
- package/lib/module/services/platformAuthService.js +47 -47
- package/lib/module/services/storageService.js +31 -31
- package/lib/module/services/trainingApiHelpers.js +33 -33
- package/lib/module/services/userConnectionsService.js +24 -24
- package/lib/module/utils/Portal.js +4 -4
- package/lib/module/utils/api.js +24 -24
- package/lib/module/utils/auth.js +18 -18
- package/lib/module/utils/crypto.js +13 -13
- package/lib/module/utils/encryption.js +12 -12
- package/lib/module/utils/eventUtils.js +52 -52
- package/lib/module/utils/programmaticFlow.js +16 -16
- package/lib/module/utils/retryHelper.js +27 -27
- package/lib/typescript/components/OnairosSignInButton.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +0 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +163 -163
- package/src/api/index.ts +151 -151
- package/src/assets/images/Checkbox.svg +3 -3
- package/src/assets/images/EnochE.svg +19 -19
- package/src/assets/images/Personalityprofile.svg +3 -3
- package/src/assets/images/Personalitytraits.svg +3 -3
- package/src/assets/images/Userpreferences.svg +3 -3
- package/src/assets/images/arrow.svg +20 -20
- package/src/assets/images/basicproficon.svg +43 -43
- package/src/assets/images/basicprofile.svg +3 -3
- package/src/assets/images/checkmark.svg +4 -4
- package/src/assets/images/contentanalysis.svg +3 -3
- package/src/assets/images/contenticon.svg +23 -23
- package/src/assets/images/personalityicon.svg +18 -18
- package/src/assets/images/x-close.svg +3 -3
- package/src/components/BodyText.tsx +33 -33
- package/src/components/BrandMark.tsx +62 -62
- package/src/components/CodeInput.tsx +32 -32
- package/src/components/DataRequestScreen.tsx +355 -355
- package/src/components/EmailInput.tsx +31 -31
- package/src/components/EmailVerificationModal.tsx +363 -363
- package/src/components/ExistingUserDataConfirmation.tsx +506 -506
- package/src/components/GoogleButton.tsx +55 -55
- package/src/components/HeadingGroup.tsx +49 -49
- package/src/components/ModalHeader.tsx +125 -125
- package/src/components/ModalSheet.tsx +57 -57
- package/src/components/Onairos.tsx +422 -422
- package/src/components/OnairosButton.tsx +339 -339
- package/src/components/OnairosSignInButton.tsx +130 -166
- package/src/components/Overlay.tsx +506 -506
- package/src/components/PersonaImage.tsx +79 -79
- package/src/components/PersonaLoadingScreen.tsx +201 -201
- package/src/components/PersonalizationConsentScreen.tsx +410 -410
- package/src/components/PinCreationScreen.tsx +492 -492
- package/src/components/PinInput.tsx +555 -555
- package/src/components/PlatformConnectorsStep.tsx +891 -891
- package/src/components/PlatformList.tsx +144 -144
- package/src/components/PlatformToggle.tsx +226 -226
- package/src/components/PrimaryButton.tsx +213 -213
- package/src/components/SignInMatchAnimation.tsx +225 -225
- package/src/components/SignInStep.tsx +217 -217
- package/src/components/TrainingModal.tsx +1047 -1047
- package/src/components/UniversalOnboarding.tsx +2887 -2887
- package/src/components/VerificationStep.tsx +198 -198
- package/src/components/WelcomeScreen.tsx +473 -473
- package/src/components/icons/Basicproficon.tsx +30 -30
- package/src/components/icons/Basicprofile.tsx +17 -17
- package/src/components/icons/Checkbox.tsx +17 -17
- package/src/components/icons/Checkmark.tsx +24 -24
- package/src/components/icons/Contentanalysis.tsx +17 -17
- package/src/components/icons/Contenticon.tsx +30 -30
- package/src/components/icons/EnochE.tsx +39 -39
- package/src/components/icons/Personalityicon.tsx +22 -22
- package/src/components/icons/Personalityprofile.tsx +17 -17
- package/src/components/icons/Personalitytraits.tsx +17 -17
- package/src/components/icons/Userpreferences.tsx +17 -17
- package/src/components/icons/index.ts +12 -12
- package/src/components/onboarding/OAuthWebView.tsx +232 -232
- package/src/config/api.ts +25 -25
- package/src/context/AuthContext.tsx +393 -393
- package/src/hooks/useConnectedAccounts.ts +138 -138
- package/src/hooks/useConnections.ts +161 -161
- package/src/hooks/useCredentials.ts +174 -174
- package/src/hooks/useUserConnections.ts +165 -165
- package/src/index.js +14 -14
- package/src/index.ts +94 -95
- package/src/services/apiClient.ts +336 -336
- package/src/services/apiKeyService.ts +919 -919
- package/src/services/authService.ts +1008 -1008
- package/src/services/biometricPinService.ts +192 -192
- package/src/services/connectedAccountsService.ts +289 -289
- package/src/services/googleAuthService.ts +279 -279
- package/src/services/imageCompressionService.ts +302 -302
- package/src/services/jwtStorageService.ts +256 -256
- package/src/services/mobileTrainingService.ts +203 -203
- package/src/services/pinEncryptionService.ts +75 -75
- package/src/services/pinStorageUtils.ts +96 -96
- package/src/services/platformAuthService.ts +1346 -1346
- package/src/services/storageService.ts +451 -451
- package/src/services/trainingApiHelpers.ts +66 -66
- package/src/services/userConnectionsService.ts +556 -556
- package/src/services/youtubeMigrationService.ts +453 -453
- package/src/theme/index.ts +239 -239
- package/src/types/ambient.d.ts +28 -28
- package/src/types/index.ts +265 -265
- package/src/types/node-fix.d.ts +18 -18
- package/src/types/node-override.d.ts +23 -23
- package/src/types/opacity.d.ts +15 -15
- package/src/types/types.d.ts +17 -17
- package/src/utils/Portal.tsx +82 -82
- package/src/utils/api.js +111 -111
- package/src/utils/auth.js +103 -103
- package/src/utils/crypto.js +59 -59
- package/src/utils/encryption.ts +68 -68
- package/src/utils/eventUtils.ts +302 -302
- package/src/utils/haptics.ts +58 -58
- package/src/utils/imagePreloader.ts +2 -2
- package/src/utils/programmaticFlow.ts +112 -112
- package/src/utils/retryHelper.ts +274 -274
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { biometricPinService } from './biometricPinService';
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* Utility functions for PIN storage management
|
|
3
|
+
/**
|
|
4
|
+
* Utility functions for PIN storage management
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
/**
|
|
8
|
-
* Get the stored PIN for training/authentication purposes
|
|
9
|
-
* This will prompt for biometric authentication
|
|
7
|
+
/**
|
|
8
|
+
* Get the stored PIN for training/authentication purposes
|
|
9
|
+
* This will prompt for biometric authentication
|
|
10
10
|
*/
|
|
11
11
|
export const getStoredPinForTraining = async () => {
|
|
12
12
|
try {
|
|
@@ -34,8 +34,8 @@ export const getStoredPinForTraining = async () => {
|
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
/**
|
|
38
|
-
* Check if user has a PIN stored securely
|
|
37
|
+
/**
|
|
38
|
+
* Check if user has a PIN stored securely
|
|
39
39
|
*/
|
|
40
40
|
export const hasStoredPin = async () => {
|
|
41
41
|
try {
|
|
@@ -46,8 +46,8 @@ export const hasStoredPin = async () => {
|
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
-
/**
|
|
50
|
-
* Remove stored PIN (for logout/reset purposes)
|
|
49
|
+
/**
|
|
50
|
+
* Remove stored PIN (for logout/reset purposes)
|
|
51
51
|
*/
|
|
52
52
|
export const clearStoredPin = async () => {
|
|
53
53
|
try {
|
|
@@ -59,9 +59,9 @@ export const clearStoredPin = async () => {
|
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
/**
|
|
63
|
-
* Get PIN for passing to training component
|
|
64
|
-
* This function can be called from the onboarding flow
|
|
62
|
+
/**
|
|
63
|
+
* Get PIN for passing to training component
|
|
64
|
+
* This function can be called from the onboarding flow
|
|
65
65
|
*/
|
|
66
66
|
export const getPinForTraining = async tempPin => {
|
|
67
67
|
// If a temporary PIN is provided (from the PIN input), use it
|
|
@@ -74,9 +74,9 @@ export const getPinForTraining = async tempPin => {
|
|
|
74
74
|
return await getStoredPinForTraining();
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
-
/**
|
|
78
|
-
* Store PIN temporarily in memory for training component
|
|
79
|
-
* This is used when PIN is entered but not yet stored biometrically
|
|
77
|
+
/**
|
|
78
|
+
* Store PIN temporarily in memory for training component
|
|
79
|
+
* This is used when PIN is entered but not yet stored biometrically
|
|
80
80
|
*/
|
|
81
81
|
let temporaryPin = null;
|
|
82
82
|
export const setTemporaryPin = pin => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Platform Authentication Service
|
|
3
|
-
* Handles OAuth flows for different platforms
|
|
1
|
+
/**
|
|
2
|
+
* Platform Authentication Service
|
|
3
|
+
* Handles OAuth flows for different platforms
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { GoogleSignin, statusCodes } from '@react-native-google-signin/google-signin';
|
|
@@ -86,16 +86,16 @@ const OAUTH_CONFIG = {
|
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
/**
|
|
90
|
-
* Check if the platform has a native SDK
|
|
89
|
+
/**
|
|
90
|
+
* Check if the platform has a native SDK
|
|
91
91
|
*/
|
|
92
92
|
export const hasNativeSDK = platform => {
|
|
93
93
|
var _OAUTH_CONFIG$platfor;
|
|
94
94
|
return ((_OAUTH_CONFIG$platfor = OAUTH_CONFIG[platform]) === null || _OAUTH_CONFIG$platfor === void 0 ? void 0 : _OAUTH_CONFIG$platfor.hasNativeSDK) || false;
|
|
95
95
|
};
|
|
96
96
|
|
|
97
|
-
/**
|
|
98
|
-
* Initiate OAuth flow for a platform
|
|
97
|
+
/**
|
|
98
|
+
* Initiate OAuth flow for a platform
|
|
99
99
|
*/
|
|
100
100
|
export const initiateOAuth = async (platform, username) => {
|
|
101
101
|
try {
|
|
@@ -153,9 +153,9 @@ export const initiateOAuth = async (platform, username) => {
|
|
|
153
153
|
}
|
|
154
154
|
};
|
|
155
155
|
|
|
156
|
-
/**
|
|
157
|
-
* Initialize Google Sign-In configuration with enhanced refresh token support
|
|
158
|
-
* Updated with CRITICAL parameters for refresh token generation
|
|
156
|
+
/**
|
|
157
|
+
* Initialize Google Sign-In configuration with enhanced refresh token support
|
|
158
|
+
* Updated with CRITICAL parameters for refresh token generation
|
|
159
159
|
*/
|
|
160
160
|
const initializeGoogleSignIn = () => {
|
|
161
161
|
GoogleSignin.configure({
|
|
@@ -178,9 +178,9 @@ const initializeGoogleSignIn = () => {
|
|
|
178
178
|
});
|
|
179
179
|
};
|
|
180
180
|
|
|
181
|
-
/**
|
|
182
|
-
* Force YouTube reconnection with consent screen to get refresh tokens
|
|
183
|
-
* This is the key function to fix YouTube token expiry issues
|
|
181
|
+
/**
|
|
182
|
+
* Force YouTube reconnection with consent screen to get refresh tokens
|
|
183
|
+
* This is the key function to fix YouTube token expiry issues
|
|
184
184
|
*/
|
|
185
185
|
export const forceYouTubeReconnectionWithConsent = async username => {
|
|
186
186
|
try {
|
|
@@ -465,8 +465,8 @@ export const forceYouTubeReconnectionWithConsent = async username => {
|
|
|
465
465
|
}
|
|
466
466
|
};
|
|
467
467
|
|
|
468
|
-
/**
|
|
469
|
-
* Alternative method: Force consent by revoking existing permissions
|
|
468
|
+
/**
|
|
469
|
+
* Alternative method: Force consent by revoking existing permissions
|
|
470
470
|
*/
|
|
471
471
|
export const forceYouTubeReconnectionWithRevoke = async username => {
|
|
472
472
|
try {
|
|
@@ -516,8 +516,8 @@ export const forceYouTubeReconnectionWithRevoke = async username => {
|
|
|
516
516
|
}
|
|
517
517
|
};
|
|
518
518
|
|
|
519
|
-
/**
|
|
520
|
-
* Fix YouTube connection for a specific user (like nicholase50)
|
|
519
|
+
/**
|
|
520
|
+
* Fix YouTube connection for a specific user (like nicholase50)
|
|
521
521
|
*/
|
|
522
522
|
export const fixUserYouTubeConnection = async username => {
|
|
523
523
|
console.log(`🔧 Fixing YouTube connection for user: ${username}`);
|
|
@@ -541,8 +541,8 @@ export const fixUserYouTubeConnection = async username => {
|
|
|
541
541
|
return false;
|
|
542
542
|
};
|
|
543
543
|
|
|
544
|
-
/**
|
|
545
|
-
* Get fresh tokens using refresh token
|
|
544
|
+
/**
|
|
545
|
+
* Get fresh tokens using refresh token
|
|
546
546
|
*/
|
|
547
547
|
const refreshGoogleTokens = async () => {
|
|
548
548
|
try {
|
|
@@ -582,8 +582,8 @@ const refreshGoogleTokens = async () => {
|
|
|
582
582
|
}
|
|
583
583
|
};
|
|
584
584
|
|
|
585
|
-
/**
|
|
586
|
-
* Debug YouTube tokens to verify refresh token availability
|
|
585
|
+
/**
|
|
586
|
+
* Debug YouTube tokens to verify refresh token availability
|
|
587
587
|
*/
|
|
588
588
|
const debugYouTubeTokens = async () => {
|
|
589
589
|
try {
|
|
@@ -609,8 +609,8 @@ const debugYouTubeTokens = async () => {
|
|
|
609
609
|
}
|
|
610
610
|
};
|
|
611
611
|
|
|
612
|
-
/**
|
|
613
|
-
* Force fresh YouTube reconnection with proper refresh token
|
|
612
|
+
/**
|
|
613
|
+
* Force fresh YouTube reconnection with proper refresh token
|
|
614
614
|
*/
|
|
615
615
|
export const reconnectYouTube = async username => {
|
|
616
616
|
try {
|
|
@@ -658,8 +658,8 @@ export const reconnectYouTube = async username => {
|
|
|
658
658
|
}
|
|
659
659
|
};
|
|
660
660
|
|
|
661
|
-
/**
|
|
662
|
-
* Initiate native authentication for platforms with SDKs
|
|
661
|
+
/**
|
|
662
|
+
* Initiate native authentication for platforms with SDKs
|
|
663
663
|
*/
|
|
664
664
|
export const initiateNativeAuth = async (platform, username) => {
|
|
665
665
|
if (platform === 'youtube') {
|
|
@@ -991,16 +991,16 @@ export const initiateNativeAuth = async (platform, username) => {
|
|
|
991
991
|
return false;
|
|
992
992
|
};
|
|
993
993
|
|
|
994
|
-
/**
|
|
995
|
-
* Check if a URL is an OAuth callback
|
|
994
|
+
/**
|
|
995
|
+
* Check if a URL is an OAuth callback
|
|
996
996
|
*/
|
|
997
997
|
export const isOAuthCallback = url => {
|
|
998
998
|
return url.includes('auth/callback') || url.includes('code=');
|
|
999
999
|
};
|
|
1000
1000
|
|
|
1001
|
-
/**
|
|
1002
|
-
* Exchange authorization code for access token
|
|
1003
|
-
* This would typically be done on a server, but we're simulating it here
|
|
1001
|
+
/**
|
|
1002
|
+
* Exchange authorization code for access token
|
|
1003
|
+
* This would typically be done on a server, but we're simulating it here
|
|
1004
1004
|
*/
|
|
1005
1005
|
export const exchangeCodeForToken = async (code, platform) => {
|
|
1006
1006
|
console.log(`Exchanging code for token for platform: ${platform}`);
|
|
@@ -1039,9 +1039,9 @@ export const exchangeCodeForToken = async (code, platform) => {
|
|
|
1039
1039
|
}
|
|
1040
1040
|
};
|
|
1041
1041
|
|
|
1042
|
-
/**
|
|
1043
|
-
* Refresh YouTube tokens when they expire
|
|
1044
|
-
* This should be called when the backend reports token expiry
|
|
1042
|
+
/**
|
|
1043
|
+
* Refresh YouTube tokens when they expire
|
|
1044
|
+
* This should be called when the backend reports token expiry
|
|
1045
1045
|
*/
|
|
1046
1046
|
export const refreshYouTubeTokens = async () => {
|
|
1047
1047
|
try {
|
|
@@ -1101,9 +1101,9 @@ export const refreshYouTubeTokens = async () => {
|
|
|
1101
1101
|
}
|
|
1102
1102
|
};
|
|
1103
1103
|
|
|
1104
|
-
/**
|
|
1105
|
-
* Trigger training restart after YouTube re-authentication
|
|
1106
|
-
* This signals the backend to restart training with the new refresh token
|
|
1104
|
+
/**
|
|
1105
|
+
* Trigger training restart after YouTube re-authentication
|
|
1106
|
+
* This signals the backend to restart training with the new refresh token
|
|
1107
1107
|
*/
|
|
1108
1108
|
const triggerTrainingRestart = async (username, authToken) => {
|
|
1109
1109
|
try {
|
|
@@ -1136,9 +1136,9 @@ const triggerTrainingRestart = async (username, authToken) => {
|
|
|
1136
1136
|
}
|
|
1137
1137
|
};
|
|
1138
1138
|
|
|
1139
|
-
/**
|
|
1140
|
-
* Test function to verify YouTube refresh token functionality
|
|
1141
|
-
* Call this in your app to test the YouTube connection
|
|
1139
|
+
/**
|
|
1140
|
+
* Test function to verify YouTube refresh token functionality
|
|
1141
|
+
* Call this in your app to test the YouTube connection
|
|
1142
1142
|
*/
|
|
1143
1143
|
export const testYouTubeRefreshToken = async username => {
|
|
1144
1144
|
console.log('🧪 Testing YouTube refresh token functionality...');
|
|
@@ -1165,8 +1165,8 @@ export const testYouTubeRefreshToken = async username => {
|
|
|
1165
1165
|
}
|
|
1166
1166
|
};
|
|
1167
1167
|
|
|
1168
|
-
/**
|
|
1169
|
-
* Request email verification code
|
|
1168
|
+
/**
|
|
1169
|
+
* Request email verification code
|
|
1170
1170
|
*/
|
|
1171
1171
|
export const requestEmailVerification = async (email, testMode = false) => {
|
|
1172
1172
|
try {
|
|
@@ -1201,8 +1201,8 @@ export const requestEmailVerification = async (email, testMode = false) => {
|
|
|
1201
1201
|
}
|
|
1202
1202
|
};
|
|
1203
1203
|
|
|
1204
|
-
/**
|
|
1205
|
-
* Verify email code
|
|
1204
|
+
/**
|
|
1205
|
+
* Verify email code
|
|
1206
1206
|
*/
|
|
1207
1207
|
export const verifyEmailCode = async (email, code, testMode = false) => {
|
|
1208
1208
|
try {
|
|
@@ -1240,8 +1240,8 @@ export const verifyEmailCode = async (email, code, testMode = false) => {
|
|
|
1240
1240
|
}
|
|
1241
1241
|
};
|
|
1242
1242
|
|
|
1243
|
-
/**
|
|
1244
|
-
* Check email verification status
|
|
1243
|
+
/**
|
|
1244
|
+
* Check email verification status
|
|
1245
1245
|
*/
|
|
1246
1246
|
export const checkEmailVerificationStatus = async (email, testMode = false) => {
|
|
1247
1247
|
try {
|
|
@@ -1269,8 +1269,8 @@ export const checkEmailVerificationStatus = async (email, testMode = false) => {
|
|
|
1269
1269
|
}
|
|
1270
1270
|
};
|
|
1271
1271
|
|
|
1272
|
-
/**
|
|
1273
|
-
* Initialize platform auth service
|
|
1272
|
+
/**
|
|
1273
|
+
* Initialize platform auth service
|
|
1274
1274
|
*/
|
|
1275
1275
|
export const initializePlatformAuthService = () => {
|
|
1276
1276
|
console.log('🔧 Platform auth service initialized');
|
|
@@ -35,8 +35,8 @@ export const STORAGE_KEYS = {
|
|
|
35
35
|
|
|
36
36
|
// Authentication state
|
|
37
37
|
|
|
38
|
-
/**
|
|
39
|
-
* Save user progress to track where they left off
|
|
38
|
+
/**
|
|
39
|
+
* Save user progress to track where they left off
|
|
40
40
|
*/
|
|
41
41
|
export const saveUserProgress = async progress => {
|
|
42
42
|
try {
|
|
@@ -53,8 +53,8 @@ export const saveUserProgress = async progress => {
|
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
-
/**
|
|
57
|
-
* Get user progress to determine where to resume
|
|
56
|
+
/**
|
|
57
|
+
* Get user progress to determine where to resume
|
|
58
58
|
*/
|
|
59
59
|
export const getUserProgress = async () => {
|
|
60
60
|
try {
|
|
@@ -82,8 +82,8 @@ export const getUserProgress = async () => {
|
|
|
82
82
|
};
|
|
83
83
|
};
|
|
84
84
|
|
|
85
|
-
/**
|
|
86
|
-
* Save authentication state
|
|
85
|
+
/**
|
|
86
|
+
* Save authentication state
|
|
87
87
|
*/
|
|
88
88
|
export const saveAuthState = async authState => {
|
|
89
89
|
try {
|
|
@@ -103,8 +103,8 @@ export const saveAuthState = async authState => {
|
|
|
103
103
|
}
|
|
104
104
|
};
|
|
105
105
|
|
|
106
|
-
/**
|
|
107
|
-
* Get authentication state
|
|
106
|
+
/**
|
|
107
|
+
* Get authentication state
|
|
108
108
|
*/
|
|
109
109
|
export const getAuthState = async () => {
|
|
110
110
|
try {
|
|
@@ -125,8 +125,8 @@ export const getAuthState = async () => {
|
|
|
125
125
|
}
|
|
126
126
|
};
|
|
127
127
|
|
|
128
|
-
/**
|
|
129
|
-
* Clear all user data (for logout)
|
|
128
|
+
/**
|
|
129
|
+
* Clear all user data (for logout)
|
|
130
130
|
*/
|
|
131
131
|
export const clearUserData = async () => {
|
|
132
132
|
try {
|
|
@@ -148,8 +148,8 @@ export const clearUserData = async () => {
|
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
150
|
|
|
151
|
-
/**
|
|
152
|
-
* Get resume navigation target based on user progress
|
|
151
|
+
/**
|
|
152
|
+
* Get resume navigation target based on user progress
|
|
153
153
|
*/
|
|
154
154
|
export const getResumeTarget = async () => {
|
|
155
155
|
try {
|
|
@@ -233,8 +233,8 @@ export const getResumeTarget = async () => {
|
|
|
233
233
|
}
|
|
234
234
|
};
|
|
235
235
|
|
|
236
|
-
/**
|
|
237
|
-
* Check if user has completed onboarding flow
|
|
236
|
+
/**
|
|
237
|
+
* Check if user has completed onboarding flow
|
|
238
238
|
*/
|
|
239
239
|
export const hasCompletedOnboarding = async () => {
|
|
240
240
|
try {
|
|
@@ -246,9 +246,9 @@ export const hasCompletedOnboarding = async () => {
|
|
|
246
246
|
}
|
|
247
247
|
};
|
|
248
248
|
|
|
249
|
-
/**
|
|
250
|
-
* Mark user as having reached the event page (completed full onboarding)
|
|
251
|
-
* This creates the token that ensures they always return to Results
|
|
249
|
+
/**
|
|
250
|
+
* Mark user as having reached the event page (completed full onboarding)
|
|
251
|
+
* This creates the token that ensures they always return to Results
|
|
252
252
|
*/
|
|
253
253
|
export const markEventPageReached = async eventData => {
|
|
254
254
|
try {
|
|
@@ -277,8 +277,8 @@ export const markEventPageReached = async eventData => {
|
|
|
277
277
|
}
|
|
278
278
|
};
|
|
279
279
|
|
|
280
|
-
/**
|
|
281
|
-
* Check if user has the event access token (completed onboarding)
|
|
280
|
+
/**
|
|
281
|
+
* Check if user has the event access token (completed onboarding)
|
|
282
282
|
*/
|
|
283
283
|
export const hasEventAccessToken = async () => {
|
|
284
284
|
try {
|
|
@@ -291,8 +291,8 @@ export const hasEventAccessToken = async () => {
|
|
|
291
291
|
}
|
|
292
292
|
};
|
|
293
293
|
|
|
294
|
-
/**
|
|
295
|
-
* Mark a step as completed
|
|
294
|
+
/**
|
|
295
|
+
* Mark a step as completed
|
|
296
296
|
*/
|
|
297
297
|
export const markStepCompleted = async step => {
|
|
298
298
|
try {
|
|
@@ -306,8 +306,8 @@ export const markStepCompleted = async step => {
|
|
|
306
306
|
}
|
|
307
307
|
};
|
|
308
308
|
|
|
309
|
-
/**
|
|
310
|
-
* Update user's last screen
|
|
309
|
+
/**
|
|
310
|
+
* Update user's last screen
|
|
311
311
|
*/
|
|
312
312
|
export const updateLastScreen = async (screen, params) => {
|
|
313
313
|
try {
|
|
@@ -320,8 +320,8 @@ export const updateLastScreen = async (screen, params) => {
|
|
|
320
320
|
}
|
|
321
321
|
};
|
|
322
322
|
|
|
323
|
-
/**
|
|
324
|
-
* Check if this is a returning user with existing progress
|
|
323
|
+
/**
|
|
324
|
+
* Check if this is a returning user with existing progress
|
|
325
325
|
*/
|
|
326
326
|
export const isReturningUser = async () => {
|
|
327
327
|
try {
|
|
@@ -334,8 +334,8 @@ export const isReturningUser = async () => {
|
|
|
334
334
|
}
|
|
335
335
|
};
|
|
336
336
|
|
|
337
|
-
/**
|
|
338
|
-
* Mark app as active (call this when app becomes active)
|
|
337
|
+
/**
|
|
338
|
+
* Mark app as active (call this when app becomes active)
|
|
339
339
|
*/
|
|
340
340
|
export const markAppActive = async () => {
|
|
341
341
|
try {
|
|
@@ -348,8 +348,8 @@ export const markAppActive = async () => {
|
|
|
348
348
|
}
|
|
349
349
|
};
|
|
350
350
|
|
|
351
|
-
/**
|
|
352
|
-
* Development utility: Get all stored progress data for debugging
|
|
351
|
+
/**
|
|
352
|
+
* Development utility: Get all stored progress data for debugging
|
|
353
353
|
*/
|
|
354
354
|
export const getDebugStorageInfo = async () => {
|
|
355
355
|
try {
|
|
@@ -369,8 +369,8 @@ export const getDebugStorageInfo = async () => {
|
|
|
369
369
|
}
|
|
370
370
|
};
|
|
371
371
|
|
|
372
|
-
/**
|
|
373
|
-
* Development utility: Clear all progress (for testing)
|
|
372
|
+
/**
|
|
373
|
+
* Development utility: Clear all progress (for testing)
|
|
374
374
|
*/
|
|
375
375
|
export const clearAllProgress = async () => {
|
|
376
376
|
try {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { getEncryptedPinForAPI } from './pinEncryptionService';
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* Helper functions for training API modifications
|
|
3
|
+
/**
|
|
4
|
+
* Helper functions for training API modifications
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
/**
|
|
8
|
-
* Add encrypted PIN to training data if available
|
|
7
|
+
/**
|
|
8
|
+
* Add encrypted PIN to training data if available
|
|
9
9
|
*/
|
|
10
10
|
export const addEncryptedPinToTrainingData = async trainingData => {
|
|
11
11
|
try {
|
|
@@ -34,34 +34,34 @@ export const addEncryptedPinToTrainingData = async trainingData => {
|
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
/**
|
|
38
|
-
* Example of how to modify the training API call to include PIN
|
|
39
|
-
*
|
|
40
|
-
* Usage in UniversalOnboarding.tsx:
|
|
41
|
-
*
|
|
42
|
-
* ```typescript
|
|
43
|
-
* // Before sending to API
|
|
44
|
-
* const trainingData = {
|
|
45
|
-
* socketId,
|
|
46
|
-
* username: finalUsername,
|
|
47
|
-
* email: userInfo?.email || null,
|
|
48
|
-
* modelKey: null,
|
|
49
|
-
* connectedPlatforms: platformsList,
|
|
50
|
-
* platformConnections: connections
|
|
51
|
-
* };
|
|
52
|
-
*
|
|
53
|
-
* // Add encrypted PIN if needed
|
|
54
|
-
* const trainingDataWithPin = await addEncryptedPinToTrainingData(trainingData);
|
|
55
|
-
*
|
|
56
|
-
* // Send to API
|
|
57
|
-
* const response = await fetch('https://api2.onairos.uk/mobile-training/enoch', {
|
|
58
|
-
* method: 'POST',
|
|
59
|
-
* headers: {
|
|
60
|
-
* 'Content-Type': 'application/json',
|
|
61
|
-
* 'Authorization': `Bearer ${token}`
|
|
62
|
-
* },
|
|
63
|
-
* body: JSON.stringify(trainingDataWithPin)
|
|
64
|
-
* });
|
|
65
|
-
* ```
|
|
37
|
+
/**
|
|
38
|
+
* Example of how to modify the training API call to include PIN
|
|
39
|
+
*
|
|
40
|
+
* Usage in UniversalOnboarding.tsx:
|
|
41
|
+
*
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Before sending to API
|
|
44
|
+
* const trainingData = {
|
|
45
|
+
* socketId,
|
|
46
|
+
* username: finalUsername,
|
|
47
|
+
* email: userInfo?.email || null,
|
|
48
|
+
* modelKey: null,
|
|
49
|
+
* connectedPlatforms: platformsList,
|
|
50
|
+
* platformConnections: connections
|
|
51
|
+
* };
|
|
52
|
+
*
|
|
53
|
+
* // Add encrypted PIN if needed
|
|
54
|
+
* const trainingDataWithPin = await addEncryptedPinToTrainingData(trainingData);
|
|
55
|
+
*
|
|
56
|
+
* // Send to API
|
|
57
|
+
* const response = await fetch('https://api2.onairos.uk/mobile-training/enoch', {
|
|
58
|
+
* method: 'POST',
|
|
59
|
+
* headers: {
|
|
60
|
+
* 'Content-Type': 'application/json',
|
|
61
|
+
* 'Authorization': `Bearer ${token}`
|
|
62
|
+
* },
|
|
63
|
+
* body: JSON.stringify(trainingDataWithPin)
|
|
64
|
+
* });
|
|
65
|
+
* ```
|
|
66
66
|
*/
|
|
67
67
|
//# sourceMappingURL=trainingApiHelpers.js.map
|
|
@@ -3,10 +3,10 @@ import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
|
3
3
|
import { compressProfilePicture } from './imageCompressionService';
|
|
4
4
|
import { API_CONFIG, getAuthHeaders } from '../config/api';
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* Get user identifier (ID or username) using multiple fallback methods
|
|
8
|
-
* Backend now supports both user IDs and usernames for profile picture uploads
|
|
9
|
-
* @returns Promise<string | null>
|
|
6
|
+
/**
|
|
7
|
+
* Get user identifier (ID or username) using multiple fallback methods
|
|
8
|
+
* Backend now supports both user IDs and usernames for profile picture uploads
|
|
9
|
+
* @returns Promise<string | null>
|
|
10
10
|
*/
|
|
11
11
|
const getUserIdWithFallbacks = async () => {
|
|
12
12
|
try {
|
|
@@ -84,8 +84,8 @@ const API_BASE_URL = API_CONFIG.BASE_URL;
|
|
|
84
84
|
|
|
85
85
|
// Interface for the transformed connection used by UI
|
|
86
86
|
|
|
87
|
-
/**
|
|
88
|
-
* Transform API connection to UI connection format
|
|
87
|
+
/**
|
|
88
|
+
* Transform API connection to UI connection format
|
|
89
89
|
*/
|
|
90
90
|
const transformAPIConnection = apiConnection => {
|
|
91
91
|
var _apiConnection$photo, _apiConnection$mutual;
|
|
@@ -126,10 +126,10 @@ const transformAPIConnection = apiConnection => {
|
|
|
126
126
|
};
|
|
127
127
|
};
|
|
128
128
|
|
|
129
|
-
/**
|
|
130
|
-
* Get user connections by username
|
|
131
|
-
* @param username - Username to fetch connections for
|
|
132
|
-
* @returns Promise<Connection[]>
|
|
129
|
+
/**
|
|
130
|
+
* Get user connections by username
|
|
131
|
+
* @param username - Username to fetch connections for
|
|
132
|
+
* @returns Promise<Connection[]>
|
|
133
133
|
*/
|
|
134
134
|
export const getUserConnectionsByUsername = async username => {
|
|
135
135
|
try {
|
|
@@ -176,10 +176,10 @@ export const getUserConnectionsByUsername = async username => {
|
|
|
176
176
|
}
|
|
177
177
|
};
|
|
178
178
|
|
|
179
|
-
/**
|
|
180
|
-
* Get user connections by user ID
|
|
181
|
-
* @param userId - User ID to fetch connections for
|
|
182
|
-
* @returns Promise<Connection[]>
|
|
179
|
+
/**
|
|
180
|
+
* Get user connections by user ID
|
|
181
|
+
* @param userId - User ID to fetch connections for
|
|
182
|
+
* @returns Promise<Connection[]>
|
|
183
183
|
*/
|
|
184
184
|
export const getUserConnectionsByUserId = async userId => {
|
|
185
185
|
try {
|
|
@@ -223,10 +223,10 @@ export const getUserConnectionsByUserId = async userId => {
|
|
|
223
223
|
}
|
|
224
224
|
};
|
|
225
225
|
|
|
226
|
-
/**
|
|
227
|
-
* Get user connections with automatic detection of user info
|
|
228
|
-
* PRIORITIZES the working email/username endpoint over the failing user ID endpoint
|
|
229
|
-
* @returns Promise<Connection[]>
|
|
226
|
+
/**
|
|
227
|
+
* Get user connections with automatic detection of user info
|
|
228
|
+
* PRIORITIZES the working email/username endpoint over the failing user ID endpoint
|
|
229
|
+
* @returns Promise<Connection[]>
|
|
230
230
|
*/
|
|
231
231
|
export const getUserConnections = async () => {
|
|
232
232
|
try {
|
|
@@ -309,12 +309,12 @@ export const getUserConnections = async () => {
|
|
|
309
309
|
}
|
|
310
310
|
};
|
|
311
311
|
|
|
312
|
-
/**
|
|
313
|
-
* Upload profile picture using base64 data with compression
|
|
314
|
-
* The backend identifies the user from the JWT token, no need for user ID in URL
|
|
315
|
-
* @param imageUri - Image URI (file:// or base64)
|
|
316
|
-
* @param fileType - File type (jpg, png) - optional, will be extracted from imageUri if not provided
|
|
317
|
-
* @returns Promise<{ success: boolean; photoUrl?: string; error?: string }>
|
|
312
|
+
/**
|
|
313
|
+
* Upload profile picture using base64 data with compression
|
|
314
|
+
* The backend identifies the user from the JWT token, no need for user ID in URL
|
|
315
|
+
* @param imageUri - Image URI (file:// or base64)
|
|
316
|
+
* @param fileType - File type (jpg, png) - optional, will be extracted from imageUri if not provided
|
|
317
|
+
* @returns Promise<{ success: boolean; photoUrl?: string; error?: string }>
|
|
318
318
|
*/
|
|
319
319
|
export const uploadProfilePicture = async (imageUri, fileType) => {
|
|
320
320
|
try {
|
|
@@ -12,8 +12,8 @@ const PortalContext = /*#__PURE__*/React.createContext({
|
|
|
12
12
|
unmount: () => {}
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
/**
|
|
16
|
-
* Portal Host component - place this at the root of your app
|
|
15
|
+
/**
|
|
16
|
+
* Portal Host component - place this at the root of your app
|
|
17
17
|
*/
|
|
18
18
|
export const PortalHost = ({
|
|
19
19
|
children
|
|
@@ -61,8 +61,8 @@ export const PortalHost = ({
|
|
|
61
61
|
}, portals[Number(key)])));
|
|
62
62
|
};
|
|
63
63
|
|
|
64
|
-
/**
|
|
65
|
-
* Portal component - renders children into the PortalHost
|
|
64
|
+
/**
|
|
65
|
+
* Portal component - renders children into the PortalHost
|
|
66
66
|
*/
|
|
67
67
|
export const Portal = ({
|
|
68
68
|
children
|