@onairos/react-native 3.0.24 → 3.0.26
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 +2 -3
- package/lib/commonjs/components/OnairosButton.js.map +1 -1
- package/lib/commonjs/components/TrainingModal.js +120 -16
- package/lib/commonjs/components/TrainingModal.js.map +1 -1
- package/lib/commonjs/components/UniversalOnboarding.js +196 -94
- package/lib/commonjs/components/UniversalOnboarding.js.map +1 -1
- package/lib/commonjs/components/onboarding/OAuthWebView.js +138 -27
- package/lib/commonjs/components/onboarding/OAuthWebView.js.map +1 -1
- package/lib/commonjs/constants/index.js +3 -3
- package/lib/commonjs/constants/index.js.map +1 -1
- package/lib/commonjs/services/platformAuthService.js +95 -44
- package/lib/commonjs/services/platformAuthService.js.map +1 -1
- package/lib/module/components/OnairosButton.js +2 -3
- package/lib/module/components/OnairosButton.js.map +1 -1
- package/lib/module/components/TrainingModal.js +120 -17
- package/lib/module/components/TrainingModal.js.map +1 -1
- package/lib/module/components/UniversalOnboarding.js +197 -95
- package/lib/module/components/UniversalOnboarding.js.map +1 -1
- package/lib/module/components/onboarding/OAuthWebView.js +139 -28
- package/lib/module/components/onboarding/OAuthWebView.js.map +1 -1
- package/lib/module/constants/index.js +3 -3
- package/lib/module/constants/index.js.map +1 -1
- package/lib/module/services/platformAuthService.js +92 -42
- package/lib/module/services/platformAuthService.js.map +1 -1
- package/lib/typescript/components/OnairosButton.d.ts.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/components/onboarding/OAuthWebView.d.ts.map +1 -1
- package/lib/typescript/services/platformAuthService.d.ts +11 -4
- package/lib/typescript/services/platformAuthService.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/OnairosButton.tsx +1 -4
- package/src/components/TrainingModal.tsx +202 -61
- package/src/components/UniversalOnboarding.tsx +188 -83
- package/src/components/onboarding/OAuthWebView.tsx +135 -25
- package/src/constants/index.ts +3 -3
- package/src/services/platformAuthService.ts +111 -40
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React, { useCallback, useState } from 'react';
|
|
2
|
-
import { View, StyleSheet, ActivityIndicator, SafeAreaView, TouchableOpacity } from 'react-native';
|
|
2
|
+
import { View, StyleSheet, ActivityIndicator, SafeAreaView, TouchableOpacity, Text } from 'react-native';
|
|
3
3
|
import { WebView } from 'react-native-webview';
|
|
4
4
|
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
5
5
|
import { COLORS } from '../../constants';
|
|
6
|
+
import { isOAuthSuccess, handleOAuthCallback } from '../../services/platformAuthService';
|
|
6
7
|
export const OAuthWebView = ({
|
|
7
8
|
url,
|
|
8
9
|
platform,
|
|
@@ -11,36 +12,78 @@ export const OAuthWebView = ({
|
|
|
11
12
|
onSuccess
|
|
12
13
|
}) => {
|
|
13
14
|
const [loading, setLoading] = useState(true);
|
|
15
|
+
const [currentUrl, setCurrentUrl] = useState(url);
|
|
14
16
|
const handleNavigationStateChange = useCallback(navState => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
console.log(`[OAuthWebView] Navigation state changed for ${platform}:`, navState.url);
|
|
18
|
+
setCurrentUrl(navState.url);
|
|
19
|
+
|
|
20
|
+
// Check for final redirect to onairos.uk/Home (indicates proxy has processed the callback)
|
|
21
|
+
if (navState.url.includes('onairos.uk/Home')) {
|
|
22
|
+
console.log(`[OAuthWebView] Detected final redirect to onairos.uk/Home for ${platform}`);
|
|
23
|
+
|
|
24
|
+
// Add a small delay to ensure the redirect is fully processed
|
|
25
|
+
setTimeout(() => {
|
|
26
|
+
onSuccess('success');
|
|
27
|
+
if (onComplete) {
|
|
28
|
+
onComplete();
|
|
29
|
+
}
|
|
30
|
+
}, 500);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Check for platform-specific success patterns using the service
|
|
35
|
+
if (platform && isOAuthSuccess(navState.url, platform)) {
|
|
36
|
+
console.log(`[OAuthWebView] Detected platform-specific success pattern for ${platform}`);
|
|
37
|
+
|
|
38
|
+
// For YouTube/Google, wait for the final redirect
|
|
39
|
+
if (platform === 'youtube') {
|
|
40
|
+
console.log(`[OAuthWebView] YouTube success detected, waiting for final redirect...`);
|
|
41
|
+
// Don't close immediately for YouTube, wait for the onairos.uk/Home redirect
|
|
42
|
+
return;
|
|
21
43
|
}
|
|
22
44
|
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
|
|
45
|
+
// For other platforms, close immediately
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
onSuccess('success');
|
|
48
|
+
if (onComplete) {
|
|
49
|
+
onComplete();
|
|
50
|
+
}
|
|
51
|
+
}, 300);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Check for callback URLs with authorization codes
|
|
56
|
+
if (navState.url.includes('/callback') || navState.url.includes('code=')) {
|
|
57
|
+
console.log(`[OAuthWebView] Detected callback URL for ${platform}:`, navState.url);
|
|
58
|
+
|
|
59
|
+
// Extract the authorization code
|
|
60
|
+
const authCode = handleOAuthCallback(navState.url);
|
|
61
|
+
if (authCode) {
|
|
62
|
+
console.log(`[OAuthWebView] Extracted auth code for ${platform}:`, authCode);
|
|
63
|
+
onSuccess(authCode);
|
|
64
|
+
if (onComplete) {
|
|
65
|
+
onComplete();
|
|
66
|
+
}
|
|
26
67
|
}
|
|
27
68
|
return;
|
|
28
69
|
}
|
|
29
|
-
}, [onComplete, onSuccess]);
|
|
70
|
+
}, [platform, onComplete, onSuccess]);
|
|
71
|
+
const handleLoadStart = useCallback(() => {
|
|
72
|
+
setLoading(true);
|
|
73
|
+
}, []);
|
|
30
74
|
const handleLoadEnd = useCallback(() => {
|
|
31
75
|
setLoading(false);
|
|
32
76
|
}, []);
|
|
77
|
+
const handleError = useCallback(syntheticEvent => {
|
|
78
|
+
const {
|
|
79
|
+
nativeEvent
|
|
80
|
+
} = syntheticEvent;
|
|
81
|
+
console.error(`[OAuthWebView] WebView error for ${platform}:`, nativeEvent);
|
|
82
|
+
setLoading(false);
|
|
83
|
+
}, [platform]);
|
|
33
84
|
|
|
34
|
-
//
|
|
35
|
-
const
|
|
36
|
-
try {
|
|
37
|
-
const url = new URL(redirectUrl);
|
|
38
|
-
return url.searchParams.get('code') || '';
|
|
39
|
-
} catch (error) {
|
|
40
|
-
console.error('Error extracting auth code:', error);
|
|
41
|
-
return '';
|
|
42
|
-
}
|
|
43
|
-
};
|
|
85
|
+
// Get iOS Safari user agent for better compatibility
|
|
86
|
+
const userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1';
|
|
44
87
|
return /*#__PURE__*/React.createElement(SafeAreaView, {
|
|
45
88
|
style: styles.container
|
|
46
89
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -58,21 +101,57 @@ export const OAuthWebView = ({
|
|
|
58
101
|
name: getPlatformIcon(platform || 'default'),
|
|
59
102
|
size: 20,
|
|
60
103
|
color: getPlatformColor(platform || 'default')
|
|
61
|
-
})
|
|
104
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
105
|
+
style: styles.platformTitle
|
|
106
|
+
}, "Connect ", platform ? platform.charAt(0).toUpperCase() + platform.slice(1) : 'Account')), /*#__PURE__*/React.createElement(View, {
|
|
107
|
+
style: styles.placeholder
|
|
108
|
+
})), /*#__PURE__*/React.createElement(WebView, {
|
|
62
109
|
source: {
|
|
63
110
|
uri: url
|
|
64
111
|
},
|
|
65
112
|
onNavigationStateChange: handleNavigationStateChange,
|
|
113
|
+
onLoadStart: handleLoadStart,
|
|
66
114
|
onLoadEnd: handleLoadEnd,
|
|
115
|
+
onError: handleError,
|
|
67
116
|
startInLoadingState: true,
|
|
68
117
|
renderLoading: () => /*#__PURE__*/React.createElement(View, null),
|
|
69
118
|
style: styles.webView
|
|
119
|
+
// Essential WebView configuration for OAuth
|
|
120
|
+
,
|
|
121
|
+
javaScriptEnabled: true,
|
|
122
|
+
domStorageEnabled: true,
|
|
123
|
+
cacheEnabled: true,
|
|
124
|
+
incognito: false // Allow session persistence
|
|
125
|
+
,
|
|
126
|
+
sharedCookiesEnabled: true // Critical for Google/YouTube OAuth
|
|
127
|
+
,
|
|
128
|
+
thirdPartyCookiesEnabled: true // Required for OAuth flows
|
|
129
|
+
,
|
|
130
|
+
userAgent: userAgent // iOS Safari for better compatibility
|
|
131
|
+
// Additional settings for better OAuth support
|
|
132
|
+
,
|
|
133
|
+
allowsInlineMediaPlayback: true,
|
|
134
|
+
mediaPlaybackRequiresUserAction: false,
|
|
135
|
+
allowsBackForwardNavigationGestures: true
|
|
136
|
+
// Security settings
|
|
137
|
+
,
|
|
138
|
+
allowsLinkPreview: false,
|
|
139
|
+
allowFileAccess: false,
|
|
140
|
+
allowUniversalAccessFromFileURLs: false,
|
|
141
|
+
mixedContentMode: "compatibility"
|
|
70
142
|
}), loading && /*#__PURE__*/React.createElement(View, {
|
|
71
143
|
style: styles.loadingContainer
|
|
72
144
|
}, /*#__PURE__*/React.createElement(ActivityIndicator, {
|
|
73
145
|
size: "large",
|
|
74
146
|
color: COLORS.primary
|
|
75
|
-
})
|
|
147
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
148
|
+
style: styles.loadingText
|
|
149
|
+
}, "Connecting to ", platform ? platform.charAt(0).toUpperCase() + platform.slice(1) : 'platform', "...")), __DEV__ && /*#__PURE__*/React.createElement(View, {
|
|
150
|
+
style: styles.debugContainer
|
|
151
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
152
|
+
style: styles.debugText,
|
|
153
|
+
numberOfLines: 1
|
|
154
|
+
}, currentUrl)));
|
|
76
155
|
};
|
|
77
156
|
|
|
78
157
|
/**
|
|
@@ -88,6 +167,8 @@ const getPlatformIcon = platform => {
|
|
|
88
167
|
return 'push-pin';
|
|
89
168
|
case 'reddit':
|
|
90
169
|
return 'forum';
|
|
170
|
+
case 'email':
|
|
171
|
+
return 'email';
|
|
91
172
|
default:
|
|
92
173
|
return 'link';
|
|
93
174
|
}
|
|
@@ -106,6 +187,8 @@ const getPlatformColor = platform => {
|
|
|
106
187
|
return '#E60023';
|
|
107
188
|
case 'reddit':
|
|
108
189
|
return '#FF4500';
|
|
190
|
+
case 'email':
|
|
191
|
+
return '#4285F4';
|
|
109
192
|
default:
|
|
110
193
|
return COLORS.primary;
|
|
111
194
|
}
|
|
@@ -126,22 +209,50 @@ const styles = StyleSheet.create({
|
|
|
126
209
|
},
|
|
127
210
|
titleContainer: {
|
|
128
211
|
flex: 1,
|
|
129
|
-
|
|
212
|
+
flexDirection: 'row',
|
|
213
|
+
alignItems: 'center',
|
|
214
|
+
justifyContent: 'center'
|
|
215
|
+
},
|
|
216
|
+
platformTitle: {
|
|
217
|
+
fontSize: 16,
|
|
218
|
+
fontWeight: '600',
|
|
219
|
+
color: '#000',
|
|
220
|
+
marginLeft: 8
|
|
130
221
|
},
|
|
131
222
|
closeButton: {
|
|
132
223
|
padding: 8,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
224
|
+
width: 40
|
|
225
|
+
},
|
|
226
|
+
placeholder: {
|
|
227
|
+
width: 40
|
|
136
228
|
},
|
|
137
229
|
webView: {
|
|
138
230
|
flex: 1
|
|
139
231
|
},
|
|
140
232
|
loadingContainer: {
|
|
141
233
|
...StyleSheet.absoluteFillObject,
|
|
142
|
-
backgroundColor: 'rgba(255, 255, 255, 0.
|
|
234
|
+
backgroundColor: 'rgba(255, 255, 255, 0.9)',
|
|
143
235
|
alignItems: 'center',
|
|
144
236
|
justifyContent: 'center'
|
|
237
|
+
},
|
|
238
|
+
loadingText: {
|
|
239
|
+
fontSize: 16,
|
|
240
|
+
color: '#666',
|
|
241
|
+
marginTop: 16,
|
|
242
|
+
textAlign: 'center'
|
|
243
|
+
},
|
|
244
|
+
debugContainer: {
|
|
245
|
+
position: 'absolute',
|
|
246
|
+
bottom: 0,
|
|
247
|
+
left: 0,
|
|
248
|
+
right: 0,
|
|
249
|
+
backgroundColor: 'rgba(0, 0, 0, 0.8)',
|
|
250
|
+
padding: 8
|
|
251
|
+
},
|
|
252
|
+
debugText: {
|
|
253
|
+
color: '#fff',
|
|
254
|
+
fontSize: 12,
|
|
255
|
+
fontFamily: 'monospace'
|
|
145
256
|
}
|
|
146
257
|
});
|
|
147
258
|
//# sourceMappingURL=OAuthWebView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useState","View","StyleSheet","ActivityIndicator","SafeAreaView","TouchableOpacity","WebView","Icon","COLORS","OAuthWebView","url","platform","onComplete","onClose","onSuccess","loading","setLoading","handleNavigationStateChange","navState","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useState","View","StyleSheet","ActivityIndicator","SafeAreaView","TouchableOpacity","Text","WebView","Icon","COLORS","isOAuthSuccess","handleOAuthCallback","OAuthWebView","url","platform","onComplete","onClose","onSuccess","loading","setLoading","currentUrl","setCurrentUrl","handleNavigationStateChange","navState","console","log","includes","setTimeout","authCode","handleLoadStart","handleLoadEnd","handleError","syntheticEvent","nativeEvent","error","userAgent","createElement","style","styles","container","header","onPress","closeButton","name","size","color","titleContainer","getPlatformIcon","getPlatformColor","platformTitle","charAt","toUpperCase","slice","placeholder","source","uri","onNavigationStateChange","onLoadStart","onLoadEnd","onError","startInLoadingState","renderLoading","webView","javaScriptEnabled","domStorageEnabled","cacheEnabled","incognito","sharedCookiesEnabled","thirdPartyCookiesEnabled","allowsInlineMediaPlayback","mediaPlaybackRequiresUserAction","allowsBackForwardNavigationGestures","allowsLinkPreview","allowFileAccess","allowUniversalAccessFromFileURLs","mixedContentMode","loadingContainer","primary","loadingText","__DEV__","debugContainer","debugText","numberOfLines","create","flex","backgroundColor","flexDirection","alignItems","height","borderBottomWidth","borderBottomColor","paddingHorizontal","justifyContent","fontSize","fontWeight","marginLeft","padding","width","absoluteFillObject","marginTop","textAlign","position","bottom","left","right","fontFamily"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/onboarding/OAuthWebView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -70,8 +70,8 @@ export const PIN_REQUIREMENTS = {
|
|
|
70
70
|
requireSpecialChar: true
|
|
71
71
|
};
|
|
72
72
|
export const DEEP_LINK_CONFIG = {
|
|
73
|
-
scheme: '
|
|
74
|
-
host: '
|
|
75
|
-
redirectUri: '
|
|
73
|
+
scheme: 'onairosevents',
|
|
74
|
+
host: 'auth',
|
|
75
|
+
redirectUri: 'onairosevents://auth/callback'
|
|
76
76
|
};
|
|
77
77
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["COLORS","primary","headerBg","text","secondary","border","success","error","instagram","pinterest","reddit","youtube","white","black","gray","lightGray","PLATFORMS","name","icon","color","description","API_ENDPOINTS","base","oauth","callback","STORAGE_KEYS","credentials","connections","PIN_REQUIREMENTS","minLength","requireUppercase","requireLowercase","requireNumber","requireSpecialChar","DEEP_LINK_CONFIG","scheme","host","redirectUri"],"sourceRoot":"..\\..\\..\\src","sources":["constants/index.ts"],"mappings":"AAEA,OAAO,MAAMA,MAAM,GAAG;EACpBC,OAAO,EAAE,SAAS;EAClBC,QAAQ,EAAE,SAAS;EACnBC,IAAI,EAAE;IACJF,OAAO,EAAE,SAAS;IAClBG,SAAS,EAAE;EACb,CAAC;EACDC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAE,SAAS;EAClBC,KAAK,EAAE,SAAS;EAChBC,SAAS,EAAE,SAAS;EACpBC,SAAS,EAAE,SAAS;EACpBC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAE,SAAS;EAClBC,KAAK,EAAE,SAAS;EAChBC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE,SAAS;EACfC,SAAS,EAAE;AACb,CAAC;AAED,OAAO,MAAMC,SAAyC,GAAG;EACvDR,SAAS,EAAE;IACTS,IAAI,EAAE,WAAW;IACjBC,IAAI,EAAE,WAAW;IACjBC,KAAK,EAAEnB,MAAM,CAACQ,SAAS;IACvBY,WAAW,EAAE;EACf,CAAC;EACDX,SAAS,EAAE;IACTQ,IAAI,EAAE,WAAW;IACjBC,IAAI,EAAE,WAAW;IACjBC,KAAK,EAAEnB,MAAM,CAACS,SAAS;IACvBW,WAAW,EAAE;EACf,CAAC;EACDV,MAAM,EAAE;IACNO,IAAI,EAAE,QAAQ;IACdC,IAAI,EAAE,QAAQ;IACdC,KAAK,EAAEnB,MAAM,CAACU,MAAM;IACpBU,WAAW,EAAE;EACf,CAAC;EACDT,OAAO,EAAE;IACPM,IAAI,EAAE,SAAS;IACfC,IAAI,EAAE,SAAS;IACfC,KAAK,EAAEnB,MAAM,CAACW,OAAO;IACrBS,WAAW,EAAE;EACf;AACF,CAAC;AAED,OAAO,MAAMC,aAAa,GAAG;EAC3BC,IAAI,EAAE,yBAAyB;EAC/BC,KAAK,EAAE;IACLf,SAAS,EAAE,iBAAiB;IAC5BC,SAAS,EAAE,iBAAiB;IAC5BC,MAAM,EAAE,cAAc;IACtBC,OAAO,EAAE;EACX,CAAC;EACDa,QAAQ,EAAE;IACRhB,SAAS,EAAE,qBAAqB;IAChCC,SAAS,EAAE,qBAAqB;IAChCC,MAAM,EAAE,kBAAkB;IAC1BC,OAAO,EAAE;EACX;AACF,CAAC;AAED,OAAO,MAAMc,YAAY,GAAG;EAC1BC,WAAW,EAAE,qBAAqB;EAClCC,WAAW,EAAE;AACf,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAG;EAC9BC,SAAS,EAAE,CAAC;EACZC,gBAAgB,EAAE,IAAI;EACtBC,gBAAgB,EAAE,IAAI;EACtBC,aAAa,EAAE,IAAI;EACnBC,kBAAkB,EAAE;AACtB,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAG;EAC9BC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"names":["COLORS","primary","headerBg","text","secondary","border","success","error","instagram","pinterest","reddit","youtube","white","black","gray","lightGray","PLATFORMS","name","icon","color","description","API_ENDPOINTS","base","oauth","callback","STORAGE_KEYS","credentials","connections","PIN_REQUIREMENTS","minLength","requireUppercase","requireLowercase","requireNumber","requireSpecialChar","DEEP_LINK_CONFIG","scheme","host","redirectUri"],"sourceRoot":"..\\..\\..\\src","sources":["constants/index.ts"],"mappings":"AAEA,OAAO,MAAMA,MAAM,GAAG;EACpBC,OAAO,EAAE,SAAS;EAClBC,QAAQ,EAAE,SAAS;EACnBC,IAAI,EAAE;IACJF,OAAO,EAAE,SAAS;IAClBG,SAAS,EAAE;EACb,CAAC;EACDC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAE,SAAS;EAClBC,KAAK,EAAE,SAAS;EAChBC,SAAS,EAAE,SAAS;EACpBC,SAAS,EAAE,SAAS;EACpBC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAE,SAAS;EAClBC,KAAK,EAAE,SAAS;EAChBC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE,SAAS;EACfC,SAAS,EAAE;AACb,CAAC;AAED,OAAO,MAAMC,SAAyC,GAAG;EACvDR,SAAS,EAAE;IACTS,IAAI,EAAE,WAAW;IACjBC,IAAI,EAAE,WAAW;IACjBC,KAAK,EAAEnB,MAAM,CAACQ,SAAS;IACvBY,WAAW,EAAE;EACf,CAAC;EACDX,SAAS,EAAE;IACTQ,IAAI,EAAE,WAAW;IACjBC,IAAI,EAAE,WAAW;IACjBC,KAAK,EAAEnB,MAAM,CAACS,SAAS;IACvBW,WAAW,EAAE;EACf,CAAC;EACDV,MAAM,EAAE;IACNO,IAAI,EAAE,QAAQ;IACdC,IAAI,EAAE,QAAQ;IACdC,KAAK,EAAEnB,MAAM,CAACU,MAAM;IACpBU,WAAW,EAAE;EACf,CAAC;EACDT,OAAO,EAAE;IACPM,IAAI,EAAE,SAAS;IACfC,IAAI,EAAE,SAAS;IACfC,KAAK,EAAEnB,MAAM,CAACW,OAAO;IACrBS,WAAW,EAAE;EACf;AACF,CAAC;AAED,OAAO,MAAMC,aAAa,GAAG;EAC3BC,IAAI,EAAE,yBAAyB;EAC/BC,KAAK,EAAE;IACLf,SAAS,EAAE,iBAAiB;IAC5BC,SAAS,EAAE,iBAAiB;IAC5BC,MAAM,EAAE,cAAc;IACtBC,OAAO,EAAE;EACX,CAAC;EACDa,QAAQ,EAAE;IACRhB,SAAS,EAAE,qBAAqB;IAChCC,SAAS,EAAE,qBAAqB;IAChCC,MAAM,EAAE,kBAAkB;IAC1BC,OAAO,EAAE;EACX;AACF,CAAC;AAED,OAAO,MAAMc,YAAY,GAAG;EAC1BC,WAAW,EAAE,qBAAqB;EAClCC,WAAW,EAAE;AACf,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAG;EAC9BC,SAAS,EAAE,CAAC;EACZC,gBAAgB,EAAE,IAAI;EACtBC,gBAAgB,EAAE,IAAI;EACtBC,aAAa,EAAE,IAAI;EACnBC,kBAAkB,EAAE;AACtB,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAG;EAC9BC,MAAM,EAAE,eAAe;EACvBC,IAAI,EAAE,MAAM;EACZC,WAAW,EAAE;AACf,CAAC","ignoreList":[]}
|
|
@@ -9,9 +9,8 @@ const PLATFORM_AUTH_CONFIG = {
|
|
|
9
9
|
color: '#E1306C'
|
|
10
10
|
},
|
|
11
11
|
youtube: {
|
|
12
|
-
hasNativeSDK:
|
|
13
|
-
//
|
|
14
|
-
nativeSDKPackage: '@react-native-google-signin/google-signin',
|
|
12
|
+
hasNativeSDK: false,
|
|
13
|
+
// Changed to false to use OAuth flow through proxy
|
|
15
14
|
authEndpoint: 'https://api2.onairos.uk/youtube/authorize',
|
|
16
15
|
color: '#FF0000'
|
|
17
16
|
},
|
|
@@ -57,56 +56,72 @@ export const getPlatformColor = platform => {
|
|
|
57
56
|
};
|
|
58
57
|
|
|
59
58
|
/**
|
|
60
|
-
* Initiates the OAuth flow for a platform
|
|
59
|
+
* Initiates the OAuth flow for a platform using Onairos proxy
|
|
61
60
|
* @param platform The platform to authenticate with
|
|
62
|
-
* @param
|
|
63
|
-
* @returns A Promise that resolves to the OAuth URL to open in a WebView
|
|
61
|
+
* @param userEmail The authenticated user's email (not random username)
|
|
62
|
+
* @returns A Promise that resolves to the OAuth URL to open in a WebView
|
|
64
63
|
*/
|
|
65
|
-
export const initiateOAuth = async (platform,
|
|
64
|
+
export const initiateOAuth = async (platform, userEmail) => {
|
|
66
65
|
try {
|
|
67
66
|
// Check if the platform is supported
|
|
68
67
|
if (!PLATFORM_AUTH_CONFIG[platform]) {
|
|
69
68
|
throw new Error(`Unsupported platform: ${platform}`);
|
|
70
69
|
}
|
|
70
|
+
console.log(`Initiating OAuth for ${platform} with user: ${userEmail}`);
|
|
71
71
|
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
// Return null to indicate that we should use the native SDK
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Prepare the request body
|
|
79
|
-
const jsonData = {
|
|
72
|
+
// Prepare the request body according to Onairos proxy schema
|
|
73
|
+
const requestBody = {
|
|
80
74
|
session: {
|
|
81
|
-
username:
|
|
75
|
+
username: userEmail || 'anonymous@example.com',
|
|
76
|
+
platform: platform,
|
|
77
|
+
timestamp: new Date().toISOString()
|
|
82
78
|
}
|
|
83
79
|
};
|
|
80
|
+
console.log(`Making request to: ${PLATFORM_AUTH_CONFIG[platform].authEndpoint}`);
|
|
81
|
+
console.log('Request body:', JSON.stringify(requestBody, null, 2));
|
|
84
82
|
|
|
85
|
-
// Make the request to get the OAuth URL
|
|
83
|
+
// Make the request to get the OAuth URL from Onairos proxy
|
|
86
84
|
const response = await fetch(PLATFORM_AUTH_CONFIG[platform].authEndpoint, {
|
|
87
85
|
method: 'POST',
|
|
88
86
|
headers: {
|
|
89
|
-
'Content-Type': 'application/json'
|
|
87
|
+
'Content-Type': 'application/json',
|
|
88
|
+
'Accept': 'application/json'
|
|
90
89
|
},
|
|
91
|
-
body: JSON.stringify(
|
|
90
|
+
body: JSON.stringify(requestBody)
|
|
92
91
|
});
|
|
92
|
+
console.log(`Response status: ${response.status}`);
|
|
93
|
+
console.log(`Response headers:`, response.headers);
|
|
94
|
+
if (!response.ok) {
|
|
95
|
+
const errorText = await response.text();
|
|
96
|
+
console.error(`HTTP error! status: ${response.status}, body: ${errorText}`);
|
|
97
|
+
throw new Error(`HTTP error! status: ${response.status} - ${errorText}`);
|
|
98
|
+
}
|
|
93
99
|
|
|
94
100
|
// Parse the response
|
|
95
101
|
const data = await response.json();
|
|
102
|
+
console.log(`OAuth response for ${platform}:`, data);
|
|
96
103
|
|
|
97
|
-
// Check
|
|
98
|
-
|
|
99
|
-
|
|
104
|
+
// Check for platform-specific response keys according to schema
|
|
105
|
+
let oauthUrl = null;
|
|
106
|
+
if (platform === 'youtube' && data.youtubeURL) {
|
|
107
|
+
oauthUrl = data.youtubeURL;
|
|
108
|
+
} else if (platform === 'reddit' && data.redditURL) {
|
|
109
|
+
oauthUrl = data.redditURL;
|
|
100
110
|
} else if (platform === 'pinterest' && data.pinterestURL) {
|
|
101
|
-
|
|
102
|
-
} else if (platform === 'youtube' && data.youtubeURL) {
|
|
103
|
-
return data.youtubeURL;
|
|
111
|
+
oauthUrl = data.pinterestURL;
|
|
104
112
|
} else if (platform === 'email' && data.emailURL) {
|
|
105
|
-
|
|
113
|
+
oauthUrl = data.emailURL;
|
|
114
|
+
} else if (platform === 'instagram' && data.instagramURL) {
|
|
115
|
+
oauthUrl = data.instagramURL;
|
|
106
116
|
} else if (data.url) {
|
|
107
|
-
|
|
117
|
+
// Generic fallback
|
|
118
|
+
oauthUrl = data.url;
|
|
108
119
|
}
|
|
109
|
-
|
|
120
|
+
if (!oauthUrl) {
|
|
121
|
+
throw new Error(`No OAuth URL found in response for ${platform}. Response: ${JSON.stringify(data)}`);
|
|
122
|
+
}
|
|
123
|
+
console.log(`Successfully received OAuth URL for ${platform}: ${oauthUrl}`);
|
|
124
|
+
return oauthUrl;
|
|
110
125
|
} catch (error) {
|
|
111
126
|
console.error(`Error initiating OAuth for ${platform}:`, error);
|
|
112
127
|
throw error;
|
|
@@ -120,17 +135,9 @@ export const initiateOAuth = async (platform, username) => {
|
|
|
120
135
|
*/
|
|
121
136
|
export const initiateNativeAuth = async platform => {
|
|
122
137
|
try {
|
|
123
|
-
// Currently
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
// In a real implementation, you would import and use the Google Sign-In SDK
|
|
127
|
-
console.log('Initiating native Google Sign-In for YouTube');
|
|
128
|
-
|
|
129
|
-
// Simulate a successful authentication
|
|
130
|
-
// In a real implementation, this would be the result of the Google Sign-In flow
|
|
131
|
-
return true;
|
|
132
|
-
}
|
|
133
|
-
throw new Error(`Native authentication not supported for ${platform}`);
|
|
138
|
+
// Currently no platforms use native SDK - all go through Onairos proxy
|
|
139
|
+
console.log(`Native authentication not available for ${platform}, use OAuth flow instead`);
|
|
140
|
+
return false;
|
|
134
141
|
} catch (error) {
|
|
135
142
|
console.error(`Error initiating native auth for ${platform}:`, error);
|
|
136
143
|
throw error;
|
|
@@ -144,11 +151,15 @@ export const initiateNativeAuth = async platform => {
|
|
|
144
151
|
*/
|
|
145
152
|
export const handleOAuthCallback = url => {
|
|
146
153
|
try {
|
|
154
|
+
console.log('Handling OAuth callback URL:', url);
|
|
155
|
+
|
|
147
156
|
// Parse the URL
|
|
148
157
|
const parsedUrl = new URL(url);
|
|
149
158
|
|
|
150
159
|
// Extract the authorization code
|
|
151
|
-
|
|
160
|
+
const code = parsedUrl.searchParams.get('code');
|
|
161
|
+
console.log('Extracted authorization code:', code);
|
|
162
|
+
return code;
|
|
152
163
|
} catch (error) {
|
|
153
164
|
console.error('Error handling OAuth callback:', error);
|
|
154
165
|
return null;
|
|
@@ -161,7 +172,46 @@ export const handleOAuthCallback = url => {
|
|
|
161
172
|
* @returns True if the URL is an OAuth callback
|
|
162
173
|
*/
|
|
163
174
|
export const isOAuthCallback = url => {
|
|
164
|
-
//
|
|
165
|
-
|
|
175
|
+
// Updated to use correct deep link scheme
|
|
176
|
+
const isCallback = url.startsWith('onairosevents://auth/callback') || url.includes('/callback') || url.includes('code=') || url.includes('onairos.uk/Home');
|
|
177
|
+
console.log(`Checking if URL is OAuth callback: ${url} -> ${isCallback}`);
|
|
178
|
+
return isCallback;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Detects if OAuth flow has completed successfully based on URL patterns
|
|
183
|
+
* @param url The current URL in the WebView
|
|
184
|
+
* @param platform The platform being authenticated
|
|
185
|
+
* @returns True if the OAuth flow has completed successfully
|
|
186
|
+
*/
|
|
187
|
+
export const isOAuthSuccess = (url, platform) => {
|
|
188
|
+
console.log(`Checking OAuth success for ${platform} with URL: ${url}`);
|
|
189
|
+
|
|
190
|
+
// Check for final redirect to Onairos home page (indicates proxy has processed the callback)
|
|
191
|
+
if (url.includes('onairos.uk/Home')) {
|
|
192
|
+
console.log('Detected final redirect to onairos.uk/Home - OAuth success');
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Platform-specific success patterns
|
|
197
|
+
switch (platform) {
|
|
198
|
+
case 'youtube':
|
|
199
|
+
// YouTube/Google OAuth success patterns
|
|
200
|
+
return url.includes('accounts.google.com/o/oauth2/approval') || url.includes('consent.google.com/ml/save') || url.includes('myaccount.google.com');
|
|
201
|
+
case 'reddit':
|
|
202
|
+
// Reddit OAuth success patterns
|
|
203
|
+
return url.includes('/api/v1/authorize?done=true') || url.includes('reddit.com/api/v1/authorize/compact');
|
|
204
|
+
case 'pinterest':
|
|
205
|
+
// Pinterest OAuth success patterns
|
|
206
|
+
return url.includes('/oauth/success') || url.includes('/oauth/complete');
|
|
207
|
+
case 'instagram':
|
|
208
|
+
// Instagram OAuth success patterns
|
|
209
|
+
return url.includes('/oauth/authorize/?response_type=code') || url.includes('instagram.com/oauth/authorize');
|
|
210
|
+
case 'email':
|
|
211
|
+
// Email verification success patterns
|
|
212
|
+
return url.includes('/email/verify/success') || url.includes('/email/confirmed');
|
|
213
|
+
default:
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
166
216
|
};
|
|
167
217
|
//# sourceMappingURL=platformAuthService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PLATFORM_AUTH_CONFIG","instagram","hasNativeSDK","authEndpoint","color","youtube","
|
|
1
|
+
{"version":3,"names":["PLATFORM_AUTH_CONFIG","instagram","hasNativeSDK","authEndpoint","color","youtube","reddit","pinterest","email","platform","config","getAuthEndpoint","getPlatformColor","initiateOAuth","userEmail","Error","console","log","requestBody","session","username","timestamp","Date","toISOString","JSON","stringify","response","fetch","method","headers","body","status","ok","errorText","text","error","data","json","oauthUrl","youtubeURL","redditURL","pinterestURL","emailURL","instagramURL","url","initiateNativeAuth","handleOAuthCallback","parsedUrl","URL","code","searchParams","get","isOAuthCallback","isCallback","startsWith","includes","isOAuthSuccess"],"sourceRoot":"..\\..\\..\\src","sources":["services/platformAuthService.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnairosButton.d.ts","sourceRoot":"","sources":["../../../src/components/OnairosButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiE,MAAM,OAAO,CAAC;AActF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"OnairosButton.d.ts","sourceRoot":"","sources":["../../../src/components/OnairosButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiE,MAAM,OAAO,CAAC;AActF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAInD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,6FAoSxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrainingModal.d.ts","sourceRoot":"","sources":["../../../src/components/TrainingModal.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TrainingModal.d.ts","sourceRoot":"","sources":["../../../src/components/TrainingModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAkBnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAgBnD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6KtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UniversalOnboarding.d.ts","sourceRoot":"","sources":["../../../src/components/UniversalOnboarding.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UniversalOnboarding.d.ts","sourceRoot":"","sources":["../../../src/components/UniversalOnboarding.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AA2BxE,OAAO,KAAK,EAAE,wBAAwB,EAAoB,MAAM,UAAU,CAAC;AAI3E,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA8dlE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthWebView.d.ts","sourceRoot":"","sources":["../../../../src/components/onboarding/OAuthWebView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"OAuthWebView.d.ts","sourceRoot":"","sources":["../../../../src/components/onboarding/OAuthWebView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAMrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAwJpD,CAAC"}
|
|
@@ -11,12 +11,12 @@ export declare const getAuthEndpoint: (platform: string) => string;
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const getPlatformColor: (platform: string) => string;
|
|
13
13
|
/**
|
|
14
|
-
* Initiates the OAuth flow for a platform
|
|
14
|
+
* Initiates the OAuth flow for a platform using Onairos proxy
|
|
15
15
|
* @param platform The platform to authenticate with
|
|
16
|
-
* @param
|
|
17
|
-
* @returns A Promise that resolves to the OAuth URL to open in a WebView
|
|
16
|
+
* @param userEmail The authenticated user's email (not random username)
|
|
17
|
+
* @returns A Promise that resolves to the OAuth URL to open in a WebView
|
|
18
18
|
*/
|
|
19
|
-
export declare const initiateOAuth: (platform: string,
|
|
19
|
+
export declare const initiateOAuth: (platform: string, userEmail: string) => Promise<string | null>;
|
|
20
20
|
/**
|
|
21
21
|
* Initiates the native SDK authentication flow for a platform
|
|
22
22
|
* @param platform The platform to authenticate with
|
|
@@ -35,4 +35,11 @@ export declare const handleOAuthCallback: (url: string) => string | null;
|
|
|
35
35
|
* @returns True if the URL is an OAuth callback
|
|
36
36
|
*/
|
|
37
37
|
export declare const isOAuthCallback: (url: string) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Detects if OAuth flow has completed successfully based on URL patterns
|
|
40
|
+
* @param url The current URL in the WebView
|
|
41
|
+
* @param platform The platform being authenticated
|
|
42
|
+
* @returns True if the OAuth flow has completed successfully
|
|
43
|
+
*/
|
|
44
|
+
export declare const isOAuthSuccess: (url: string, platform: string) => boolean;
|
|
38
45
|
//# sourceMappingURL=platformAuthService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformAuthService.d.ts","sourceRoot":"","sources":["../../../src/services/platformAuthService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"platformAuthService.d.ts","sourceRoot":"","sources":["../../../src/services/platformAuthService.ts"],"names":[],"mappings":"AAwCA;;GAEG;AACH,eAAO,MAAM,YAAY,aAAc,MAAM,KAAG,OAG/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,aAAc,MAAM,KAAG,MAGlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,aAAc,MAAM,KAAG,MAGnD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,aAAoB,MAAM,aAAa,MAAM,KAAG,QAAQ,MAAM,GAAG,IAAI,CAwE9F,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,aAAoB,MAAM,KAAG,QAAQ,OAAO,CAS1E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,MAAM,GAAG,IAgB1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAS,MAAM,KAAG,OAS7C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAS,MAAM,YAAY,MAAM,KAAG,OAwC9D,CAAC"}
|
package/package.json
CHANGED
|
@@ -15,7 +15,6 @@ import { COLORS } from '../constants';
|
|
|
15
15
|
import type { OnairosButtonProps } from '../types';
|
|
16
16
|
import { hasCredentials, getCredentials, deleteCredentials as clearCredentials } from '../utils/secureStorage';
|
|
17
17
|
import { onairosApi } from '../api';
|
|
18
|
-
import { Portal } from '../utils/Portal';
|
|
19
18
|
|
|
20
19
|
export interface OnairosButtonRef {
|
|
21
20
|
trigger: () => Promise<void>;
|
|
@@ -304,9 +303,8 @@ export const OnairosButton = forwardRef<OnairosButtonRef, OnairosButtonProps>(({
|
|
|
304
303
|
/>
|
|
305
304
|
)}
|
|
306
305
|
|
|
307
|
-
{/* Overlay rendered
|
|
306
|
+
{/* Overlay rendered directly without Portal */}
|
|
308
307
|
{showOverlay && storedCredentials && (
|
|
309
|
-
<Portal>
|
|
310
308
|
<Overlay
|
|
311
309
|
data={requestData || {}}
|
|
312
310
|
username={storedCredentials.username}
|
|
@@ -315,7 +313,6 @@ export const OnairosButton = forwardRef<OnairosButtonRef, OnairosButtonProps>(({
|
|
|
315
313
|
appName={AppName}
|
|
316
314
|
darkMode={darkMode}
|
|
317
315
|
/>
|
|
318
|
-
</Portal>
|
|
319
316
|
)}
|
|
320
317
|
</>
|
|
321
318
|
);
|