@onairos/react-native 3.0.30 → 3.0.31
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/onboarding/OAuthWebView.js +104 -28
- package/lib/commonjs/components/onboarding/OAuthWebView.js.map +1 -1
- package/lib/commonjs/services/platformAuthService.js +48 -6
- package/lib/commonjs/services/platformAuthService.js.map +1 -1
- package/lib/module/components/onboarding/OAuthWebView.js +106 -30
- package/lib/module/components/onboarding/OAuthWebView.js.map +1 -1
- package/lib/module/services/platformAuthService.js +48 -6
- package/lib/module/services/platformAuthService.js.map +1 -1
- package/lib/typescript/components/onboarding/OAuthWebView.d.ts.map +1 -1
- package/lib/typescript/services/platformAuthService.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/onboarding/OAuthWebView.tsx +97 -26
- package/src/services/platformAuthService.ts +45 -5
|
@@ -23,41 +23,23 @@ const OAuthWebView = ({
|
|
|
23
23
|
onComplete
|
|
24
24
|
}) => {
|
|
25
25
|
const [isLoading, setIsLoading] = (0, _react.useState)(true);
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const [error, setError] = (0, _react.useState)(null);
|
|
27
|
+
const webViewRef = (0, _react.useRef)(null);
|
|
28
|
+
console.log('Opening OAuth WebView with URL:', url);
|
|
28
29
|
const handleNavigationStateChange = navState => {
|
|
29
30
|
console.log(`Navigation state changed for ${platform}:`, navState.url);
|
|
30
31
|
|
|
31
32
|
// Check for the final redirect to onairos.uk domain (this means backend callback completed)
|
|
32
|
-
const isFinalRedirect = navState.url.includes('onairos.uk/Home') || navState.url.includes('onairos.uk/home') || navState.url.includes('onairos.uk/success');
|
|
33
|
-
|
|
34
|
-
// For YouTube specifically, we need to be more careful about when to close
|
|
35
|
-
// Only close after the backend callback redirects to onairos.uk/Home
|
|
36
|
-
if (platform === 'youtube') {
|
|
37
|
-
// Only trigger success when we see the final redirect from the backend
|
|
38
|
-
if (isFinalRedirect) {
|
|
39
|
-
console.log('YouTube OAuth completed - backend callback finished and redirected to Home');
|
|
40
|
-
onSuccess('success');
|
|
41
|
-
|
|
42
|
-
// Close the OAuth window after a small delay to ensure redirect is processed
|
|
43
|
-
setTimeout(() => {
|
|
44
|
-
if (onComplete) {
|
|
45
|
-
console.log('Closing YouTube OAuth window after callback completion');
|
|
46
|
-
onComplete();
|
|
47
|
-
}
|
|
48
|
-
}, 500);
|
|
49
|
-
}
|
|
50
|
-
return; // Exit early for YouTube to avoid other triggers
|
|
51
|
-
}
|
|
33
|
+
const isFinalRedirect = navState.url.includes('onairos.uk/Home') || navState.url.includes('onairos.uk/home') || navState.url.includes('onairos.uk/success') || navState.url.startsWith('https://onairos.uk/Home');
|
|
52
34
|
|
|
53
|
-
// Platform-specific success patterns
|
|
35
|
+
// Platform-specific success patterns
|
|
54
36
|
const platformSuccessPatterns = {
|
|
55
37
|
reddit: [/reddit\.com\/api\/v1\/authorize\?done=true/, /reddit\.com\/api\/v1\/authorize\/success/],
|
|
56
38
|
pinterest: [/pinterest\.com\/oauth\/success/, /pinterest\.com\/oauth\/complete/],
|
|
57
39
|
linkedin: [/linkedin\.com\/oauth\/success/, /linkedin\.com\/oauth\/complete/, /linkedin\.com\/uas\/oauth2\/authorization\/success/],
|
|
58
40
|
email: [/success/],
|
|
59
|
-
|
|
60
|
-
|
|
41
|
+
instagram: [/instagram\.com\/oauth\/authorize\?done=true/, /instagram\.com\/oauth\/success/],
|
|
42
|
+
youtube: [/accounts\.google\.com\/o\/oauth2\/approval/, /youtube\.com\/oauth\/success/]
|
|
61
43
|
};
|
|
62
44
|
|
|
63
45
|
// Check for platform-specific success patterns
|
|
@@ -106,6 +88,20 @@ const OAuthWebView = ({
|
|
|
106
88
|
};
|
|
107
89
|
const handleLoadEnd = () => {
|
|
108
90
|
setIsLoading(false);
|
|
91
|
+
setError(null);
|
|
92
|
+
};
|
|
93
|
+
const handleError = syntheticEvent => {
|
|
94
|
+
const {
|
|
95
|
+
nativeEvent
|
|
96
|
+
} = syntheticEvent;
|
|
97
|
+
console.error('WebView error:', nativeEvent);
|
|
98
|
+
setError('Failed to load OAuth page. Please try again.');
|
|
99
|
+
setIsLoading(false);
|
|
100
|
+
};
|
|
101
|
+
const handleOpenInBrowser = () => {
|
|
102
|
+
_reactNative.Linking.openURL(url).catch(err => {
|
|
103
|
+
console.error('Failed to open URL in browser:', err);
|
|
104
|
+
});
|
|
109
105
|
};
|
|
110
106
|
|
|
111
107
|
/**
|
|
@@ -147,6 +143,43 @@ const OAuthWebView = ({
|
|
|
147
143
|
return _constants.COLORS.primary;
|
|
148
144
|
}
|
|
149
145
|
};
|
|
146
|
+
if (error) {
|
|
147
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.SafeAreaView, {
|
|
148
|
+
style: styles.container
|
|
149
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
150
|
+
style: styles.header
|
|
151
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
152
|
+
onPress: onClose,
|
|
153
|
+
style: styles.closeButton
|
|
154
|
+
}, /*#__PURE__*/_react.default.createElement(_MaterialIcons.default, {
|
|
155
|
+
name: "close",
|
|
156
|
+
size: 24,
|
|
157
|
+
color: "#000"
|
|
158
|
+
})), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
159
|
+
style: styles.titleContainer
|
|
160
|
+
}, /*#__PURE__*/_react.default.createElement(_MaterialIcons.default, {
|
|
161
|
+
name: getPlatformIcon(platform),
|
|
162
|
+
size: 20,
|
|
163
|
+
color: getPlatformColor(platform)
|
|
164
|
+
}), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
165
|
+
style: styles.titleText
|
|
166
|
+
}, platform.charAt(0).toUpperCase() + platform.slice(1), " OAuth"))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
167
|
+
style: styles.errorContainer
|
|
168
|
+
}, /*#__PURE__*/_react.default.createElement(_MaterialIcons.default, {
|
|
169
|
+
name: "error-outline",
|
|
170
|
+
size: 48,
|
|
171
|
+
color: "#FF6B6B"
|
|
172
|
+
}), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
173
|
+
style: styles.errorTitle
|
|
174
|
+
}, "Connection Error"), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
175
|
+
style: styles.errorMessage
|
|
176
|
+
}, error), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
177
|
+
style: styles.retryButton,
|
|
178
|
+
onPress: handleOpenInBrowser
|
|
179
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
180
|
+
style: styles.retryButtonText
|
|
181
|
+
}, "Open in Browser"))));
|
|
182
|
+
}
|
|
150
183
|
return /*#__PURE__*/_react.default.createElement(_reactNative.SafeAreaView, {
|
|
151
184
|
style: styles.container
|
|
152
185
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
@@ -166,17 +199,24 @@ const OAuthWebView = ({
|
|
|
166
199
|
color: getPlatformColor(platform)
|
|
167
200
|
}), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
168
201
|
style: styles.titleText
|
|
169
|
-
}, platform.charAt(0).toUpperCase() + platform.slice(1), " OAuth"))
|
|
202
|
+
}, platform.charAt(0).toUpperCase() + platform.slice(1), " OAuth")), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
203
|
+
onPress: handleOpenInBrowser,
|
|
204
|
+
style: styles.browserButton
|
|
205
|
+
}, /*#__PURE__*/_react.default.createElement(_MaterialIcons.default, {
|
|
206
|
+
name: "open-in-browser",
|
|
207
|
+
size: 20,
|
|
208
|
+
color: "#666"
|
|
209
|
+
}))), /*#__PURE__*/_react.default.createElement(_reactNativeWebview.WebView, {
|
|
210
|
+
ref: webViewRef,
|
|
170
211
|
source: {
|
|
171
212
|
uri: url
|
|
172
213
|
},
|
|
173
214
|
onNavigationStateChange: handleNavigationStateChange,
|
|
174
215
|
onLoadEnd: handleLoadEnd,
|
|
216
|
+
onError: handleError,
|
|
175
217
|
style: styles.webView,
|
|
176
218
|
javaScriptEnabled: true,
|
|
177
219
|
domStorageEnabled: true,
|
|
178
|
-
sharedCookiesEnabled: true,
|
|
179
|
-
thirdPartyCookiesEnabled: true,
|
|
180
220
|
userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1"
|
|
181
221
|
}), isLoading && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
182
222
|
style: styles.loadingContainer
|
|
@@ -220,6 +260,12 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
220
260
|
left: 16,
|
|
221
261
|
zIndex: 10
|
|
222
262
|
},
|
|
263
|
+
browserButton: {
|
|
264
|
+
padding: 8,
|
|
265
|
+
position: 'absolute',
|
|
266
|
+
right: 16,
|
|
267
|
+
zIndex: 10
|
|
268
|
+
},
|
|
223
269
|
webView: {
|
|
224
270
|
flex: 1
|
|
225
271
|
},
|
|
@@ -233,6 +279,36 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
233
279
|
marginTop: 10,
|
|
234
280
|
fontSize: 16,
|
|
235
281
|
color: '#666'
|
|
282
|
+
},
|
|
283
|
+
errorContainer: {
|
|
284
|
+
flex: 1,
|
|
285
|
+
alignItems: 'center',
|
|
286
|
+
justifyContent: 'center',
|
|
287
|
+
padding: 20
|
|
288
|
+
},
|
|
289
|
+
errorTitle: {
|
|
290
|
+
fontSize: 18,
|
|
291
|
+
fontWeight: '600',
|
|
292
|
+
color: '#333',
|
|
293
|
+
marginTop: 16,
|
|
294
|
+
marginBottom: 8
|
|
295
|
+
},
|
|
296
|
+
errorMessage: {
|
|
297
|
+
fontSize: 14,
|
|
298
|
+
color: '#666',
|
|
299
|
+
textAlign: 'center',
|
|
300
|
+
marginBottom: 20
|
|
301
|
+
},
|
|
302
|
+
retryButton: {
|
|
303
|
+
backgroundColor: _constants.COLORS.primary,
|
|
304
|
+
paddingHorizontal: 24,
|
|
305
|
+
paddingVertical: 12,
|
|
306
|
+
borderRadius: 8
|
|
307
|
+
},
|
|
308
|
+
retryButtonText: {
|
|
309
|
+
color: '#fff',
|
|
310
|
+
fontSize: 16,
|
|
311
|
+
fontWeight: '600'
|
|
236
312
|
}
|
|
237
313
|
});
|
|
238
314
|
//# sourceMappingURL=OAuthWebView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeWebview","_MaterialIcons","_interopRequireDefault","_constants","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","width","height","Dimensions","OAuthWebView","url","onClose","onSuccess","platform","onComplete","isLoading","setIsLoading","useState","console","log","handleNavigationStateChange","navState","isFinalRedirect","includes","setTimeout","platformSuccessPatterns","reddit","pinterest","linkedin","email","instagram","isPlatformSuccess","some","pattern","test","isCallbackUrl","authCode","codeMatch","match","tokenMatch","handleLoadEnd","getPlatformIcon","getPlatformColor","COLORS","primary","createElement","SafeAreaView","style","styles","container","View","header","TouchableOpacity","onPress","closeButton","name","size","color","titleContainer","Text","titleText","charAt","toUpperCase","slice","WebView","source","uri","onNavigationStateChange","onLoadEnd","webView","javaScriptEnabled","domStorageEnabled","sharedCookiesEnabled","thirdPartyCookiesEnabled","userAgent","loadingContainer","ActivityIndicator","loadingText","exports","StyleSheet","create","flex","backgroundColor","flexDirection","alignItems","borderBottomWidth","borderBottomColor","paddingHorizontal","justifyContent","marginLeft","fontSize","fontWeight","padding","position","left","zIndex","absoluteFillObject","marginTop"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/onboarding/OAuthWebView.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeWebview","_MaterialIcons","_interopRequireDefault","_constants","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","width","height","Dimensions","OAuthWebView","url","onClose","onSuccess","platform","onComplete","isLoading","setIsLoading","useState","error","setError","webViewRef","useRef","console","log","handleNavigationStateChange","navState","isFinalRedirect","includes","startsWith","platformSuccessPatterns","reddit","pinterest","linkedin","email","instagram","youtube","isPlatformSuccess","some","pattern","test","isCallbackUrl","authCode","codeMatch","match","tokenMatch","handleLoadEnd","handleError","syntheticEvent","nativeEvent","handleOpenInBrowser","Linking","openURL","catch","err","getPlatformIcon","getPlatformColor","COLORS","primary","createElement","SafeAreaView","style","styles","container","View","header","TouchableOpacity","onPress","closeButton","name","size","color","titleContainer","Text","titleText","charAt","toUpperCase","slice","errorContainer","errorTitle","errorMessage","retryButton","retryButtonText","browserButton","WebView","ref","source","uri","onNavigationStateChange","onLoadEnd","onError","webView","javaScriptEnabled","domStorageEnabled","userAgent","loadingContainer","ActivityIndicator","loadingText","exports","StyleSheet","create","flex","backgroundColor","flexDirection","alignItems","borderBottomWidth","borderBottomColor","paddingHorizontal","justifyContent","marginLeft","fontSize","fontWeight","padding","position","left","zIndex","right","absoluteFillObject","marginTop","marginBottom","textAlign","paddingVertical","borderRadius"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/onboarding/OAuthWebView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -165,13 +165,55 @@ const initiateNativeAuth = async platform => {
|
|
|
165
165
|
try {
|
|
166
166
|
// Currently only YouTube (Google Sign-In) is supported
|
|
167
167
|
if (platform === 'youtube') {
|
|
168
|
-
// This is a placeholder for the actual implementation
|
|
169
|
-
// In a real implementation, you would import and use the Google Sign-In SDK
|
|
170
168
|
console.log('Initiating native Google Sign-In for YouTube');
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
169
|
+
try {
|
|
170
|
+
// Import Google Sign-In dynamically to avoid errors if not installed
|
|
171
|
+
const {
|
|
172
|
+
GoogleSignin,
|
|
173
|
+
statusCodes
|
|
174
|
+
} = require('@react-native-google-signin/google-signin');
|
|
175
|
+
|
|
176
|
+
// Configure Google Sign-In
|
|
177
|
+
await GoogleSignin.configure({
|
|
178
|
+
scopes: ['https://www.googleapis.com/auth/youtube.readonly'],
|
|
179
|
+
webClientId: 'YOUR_WEB_CLIENT_ID',
|
|
180
|
+
// Replace with your actual web client ID
|
|
181
|
+
offlineAccess: true,
|
|
182
|
+
hostedDomain: '',
|
|
183
|
+
forceCodeForRefreshToken: true
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// Check if device supports Google Play Services
|
|
187
|
+
await GoogleSignin.hasPlayServices();
|
|
188
|
+
|
|
189
|
+
// Sign in
|
|
190
|
+
const userInfo = await GoogleSignin.signIn();
|
|
191
|
+
console.log('Google Sign-In successful:', userInfo);
|
|
192
|
+
|
|
193
|
+
// Get access token
|
|
194
|
+
const tokens = await GoogleSignin.getTokens();
|
|
195
|
+
console.log('Google tokens:', tokens);
|
|
196
|
+
|
|
197
|
+
// Here you would typically send the tokens to your backend
|
|
198
|
+
// to associate the YouTube account with the user
|
|
199
|
+
|
|
200
|
+
return true;
|
|
201
|
+
} catch (error) {
|
|
202
|
+
console.error('Google Sign-In error:', error);
|
|
203
|
+
const {
|
|
204
|
+
statusCodes: StatusCodes
|
|
205
|
+
} = require('@react-native-google-signin/google-signin');
|
|
206
|
+
if (error.code === StatusCodes.SIGN_IN_CANCELLED) {
|
|
207
|
+
console.log('User cancelled the sign-in flow');
|
|
208
|
+
} else if (error.code === StatusCodes.IN_PROGRESS) {
|
|
209
|
+
console.log('Sign-in is in progress already');
|
|
210
|
+
} else if (error.code === StatusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
|
|
211
|
+
console.log('Play services not available or outdated');
|
|
212
|
+
} else {
|
|
213
|
+
console.log('Some other error happened');
|
|
214
|
+
}
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
175
217
|
}
|
|
176
218
|
throw new Error(`Native authentication not supported for ${platform}`);
|
|
177
219
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PLATFORM_AUTH_CONFIG","instagram","hasNativeSDK","authEndpoint","color","youtube","nativeSDKPackage","reddit","pinterest","email","platform","config","exports","getAuthEndpoint","getPlatformColor","initiateOAuth","username","appName","Error","state","jsonData","session","oauthState","response","fetch","method","headers","body","JSON","stringify","responseData","json","instagramURL","data","redditURL","pinterestURL","youtubeURL","emailURL","url","error","console","initiateNativeAuth","log","handleOAuthCallback","parsedUrl","URL","searchParams","get","isOAuthCallback","startsWith"],"sourceRoot":"..\\..\\..\\src","sources":["services/platformAuthService.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["PLATFORM_AUTH_CONFIG","instagram","hasNativeSDK","authEndpoint","color","youtube","nativeSDKPackage","reddit","pinterest","email","platform","config","exports","getAuthEndpoint","getPlatformColor","initiateOAuth","username","appName","Error","state","jsonData","session","oauthState","response","fetch","method","headers","body","JSON","stringify","responseData","json","instagramURL","data","redditURL","pinterestURL","youtubeURL","emailURL","url","error","console","initiateNativeAuth","log","GoogleSignin","statusCodes","require","configure","scopes","webClientId","offlineAccess","hostedDomain","forceCodeForRefreshToken","hasPlayServices","userInfo","signIn","tokens","getTokens","StatusCodes","code","SIGN_IN_CANCELLED","IN_PROGRESS","PLAY_SERVICES_NOT_AVAILABLE","handleOAuthCallback","parsedUrl","URL","searchParams","get","isOAuthCallback","startsWith"],"sourceRoot":"..\\..\\..\\src","sources":["services/platformAuthService.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { View, Text, StyleSheet, TouchableOpacity, ActivityIndicator, SafeAreaView, Dimensions } from 'react-native';
|
|
1
|
+
import React, { useState, useRef } from 'react';
|
|
2
|
+
import { View, Text, StyleSheet, TouchableOpacity, ActivityIndicator, SafeAreaView, Dimensions, Linking } 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';
|
|
@@ -15,41 +15,23 @@ export const OAuthWebView = ({
|
|
|
15
15
|
onComplete
|
|
16
16
|
}) => {
|
|
17
17
|
const [isLoading, setIsLoading] = useState(true);
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const [error, setError] = useState(null);
|
|
19
|
+
const webViewRef = useRef(null);
|
|
20
|
+
console.log('Opening OAuth WebView with URL:', url);
|
|
20
21
|
const handleNavigationStateChange = navState => {
|
|
21
22
|
console.log(`Navigation state changed for ${platform}:`, navState.url);
|
|
22
23
|
|
|
23
24
|
// Check for the final redirect to onairos.uk domain (this means backend callback completed)
|
|
24
|
-
const isFinalRedirect = navState.url.includes('onairos.uk/Home') || navState.url.includes('onairos.uk/home') || navState.url.includes('onairos.uk/success');
|
|
25
|
-
|
|
26
|
-
// For YouTube specifically, we need to be more careful about when to close
|
|
27
|
-
// Only close after the backend callback redirects to onairos.uk/Home
|
|
28
|
-
if (platform === 'youtube') {
|
|
29
|
-
// Only trigger success when we see the final redirect from the backend
|
|
30
|
-
if (isFinalRedirect) {
|
|
31
|
-
console.log('YouTube OAuth completed - backend callback finished and redirected to Home');
|
|
32
|
-
onSuccess('success');
|
|
33
|
-
|
|
34
|
-
// Close the OAuth window after a small delay to ensure redirect is processed
|
|
35
|
-
setTimeout(() => {
|
|
36
|
-
if (onComplete) {
|
|
37
|
-
console.log('Closing YouTube OAuth window after callback completion');
|
|
38
|
-
onComplete();
|
|
39
|
-
}
|
|
40
|
-
}, 500);
|
|
41
|
-
}
|
|
42
|
-
return; // Exit early for YouTube to avoid other triggers
|
|
43
|
-
}
|
|
25
|
+
const isFinalRedirect = navState.url.includes('onairos.uk/Home') || navState.url.includes('onairos.uk/home') || navState.url.includes('onairos.uk/success') || navState.url.startsWith('https://onairos.uk/Home');
|
|
44
26
|
|
|
45
|
-
// Platform-specific success patterns
|
|
27
|
+
// Platform-specific success patterns
|
|
46
28
|
const platformSuccessPatterns = {
|
|
47
29
|
reddit: [/reddit\.com\/api\/v1\/authorize\?done=true/, /reddit\.com\/api\/v1\/authorize\/success/],
|
|
48
30
|
pinterest: [/pinterest\.com\/oauth\/success/, /pinterest\.com\/oauth\/complete/],
|
|
49
31
|
linkedin: [/linkedin\.com\/oauth\/success/, /linkedin\.com\/oauth\/complete/, /linkedin\.com\/uas\/oauth2\/authorization\/success/],
|
|
50
32
|
email: [/success/],
|
|
51
|
-
|
|
52
|
-
|
|
33
|
+
instagram: [/instagram\.com\/oauth\/authorize\?done=true/, /instagram\.com\/oauth\/success/],
|
|
34
|
+
youtube: [/accounts\.google\.com\/o\/oauth2\/approval/, /youtube\.com\/oauth\/success/]
|
|
53
35
|
};
|
|
54
36
|
|
|
55
37
|
// Check for platform-specific success patterns
|
|
@@ -98,6 +80,20 @@ export const OAuthWebView = ({
|
|
|
98
80
|
};
|
|
99
81
|
const handleLoadEnd = () => {
|
|
100
82
|
setIsLoading(false);
|
|
83
|
+
setError(null);
|
|
84
|
+
};
|
|
85
|
+
const handleError = syntheticEvent => {
|
|
86
|
+
const {
|
|
87
|
+
nativeEvent
|
|
88
|
+
} = syntheticEvent;
|
|
89
|
+
console.error('WebView error:', nativeEvent);
|
|
90
|
+
setError('Failed to load OAuth page. Please try again.');
|
|
91
|
+
setIsLoading(false);
|
|
92
|
+
};
|
|
93
|
+
const handleOpenInBrowser = () => {
|
|
94
|
+
Linking.openURL(url).catch(err => {
|
|
95
|
+
console.error('Failed to open URL in browser:', err);
|
|
96
|
+
});
|
|
101
97
|
};
|
|
102
98
|
|
|
103
99
|
/**
|
|
@@ -139,6 +135,43 @@ export const OAuthWebView = ({
|
|
|
139
135
|
return COLORS.primary;
|
|
140
136
|
}
|
|
141
137
|
};
|
|
138
|
+
if (error) {
|
|
139
|
+
return /*#__PURE__*/React.createElement(SafeAreaView, {
|
|
140
|
+
style: styles.container
|
|
141
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
142
|
+
style: styles.header
|
|
143
|
+
}, /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
144
|
+
onPress: onClose,
|
|
145
|
+
style: styles.closeButton
|
|
146
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
147
|
+
name: "close",
|
|
148
|
+
size: 24,
|
|
149
|
+
color: "#000"
|
|
150
|
+
})), /*#__PURE__*/React.createElement(View, {
|
|
151
|
+
style: styles.titleContainer
|
|
152
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
153
|
+
name: getPlatformIcon(platform),
|
|
154
|
+
size: 20,
|
|
155
|
+
color: getPlatformColor(platform)
|
|
156
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
157
|
+
style: styles.titleText
|
|
158
|
+
}, platform.charAt(0).toUpperCase() + platform.slice(1), " OAuth"))), /*#__PURE__*/React.createElement(View, {
|
|
159
|
+
style: styles.errorContainer
|
|
160
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
161
|
+
name: "error-outline",
|
|
162
|
+
size: 48,
|
|
163
|
+
color: "#FF6B6B"
|
|
164
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
165
|
+
style: styles.errorTitle
|
|
166
|
+
}, "Connection Error"), /*#__PURE__*/React.createElement(Text, {
|
|
167
|
+
style: styles.errorMessage
|
|
168
|
+
}, error), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
169
|
+
style: styles.retryButton,
|
|
170
|
+
onPress: handleOpenInBrowser
|
|
171
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
172
|
+
style: styles.retryButtonText
|
|
173
|
+
}, "Open in Browser"))));
|
|
174
|
+
}
|
|
142
175
|
return /*#__PURE__*/React.createElement(SafeAreaView, {
|
|
143
176
|
style: styles.container
|
|
144
177
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -158,17 +191,24 @@ export const OAuthWebView = ({
|
|
|
158
191
|
color: getPlatformColor(platform)
|
|
159
192
|
}), /*#__PURE__*/React.createElement(Text, {
|
|
160
193
|
style: styles.titleText
|
|
161
|
-
}, platform.charAt(0).toUpperCase() + platform.slice(1), " OAuth"))
|
|
194
|
+
}, platform.charAt(0).toUpperCase() + platform.slice(1), " OAuth")), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
195
|
+
onPress: handleOpenInBrowser,
|
|
196
|
+
style: styles.browserButton
|
|
197
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
198
|
+
name: "open-in-browser",
|
|
199
|
+
size: 20,
|
|
200
|
+
color: "#666"
|
|
201
|
+
}))), /*#__PURE__*/React.createElement(WebView, {
|
|
202
|
+
ref: webViewRef,
|
|
162
203
|
source: {
|
|
163
204
|
uri: url
|
|
164
205
|
},
|
|
165
206
|
onNavigationStateChange: handleNavigationStateChange,
|
|
166
207
|
onLoadEnd: handleLoadEnd,
|
|
208
|
+
onError: handleError,
|
|
167
209
|
style: styles.webView,
|
|
168
210
|
javaScriptEnabled: true,
|
|
169
211
|
domStorageEnabled: true,
|
|
170
|
-
sharedCookiesEnabled: true,
|
|
171
|
-
thirdPartyCookiesEnabled: true,
|
|
172
212
|
userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1"
|
|
173
213
|
}), isLoading && /*#__PURE__*/React.createElement(View, {
|
|
174
214
|
style: styles.loadingContainer
|
|
@@ -211,6 +251,12 @@ const styles = StyleSheet.create({
|
|
|
211
251
|
left: 16,
|
|
212
252
|
zIndex: 10
|
|
213
253
|
},
|
|
254
|
+
browserButton: {
|
|
255
|
+
padding: 8,
|
|
256
|
+
position: 'absolute',
|
|
257
|
+
right: 16,
|
|
258
|
+
zIndex: 10
|
|
259
|
+
},
|
|
214
260
|
webView: {
|
|
215
261
|
flex: 1
|
|
216
262
|
},
|
|
@@ -224,6 +270,36 @@ const styles = StyleSheet.create({
|
|
|
224
270
|
marginTop: 10,
|
|
225
271
|
fontSize: 16,
|
|
226
272
|
color: '#666'
|
|
273
|
+
},
|
|
274
|
+
errorContainer: {
|
|
275
|
+
flex: 1,
|
|
276
|
+
alignItems: 'center',
|
|
277
|
+
justifyContent: 'center',
|
|
278
|
+
padding: 20
|
|
279
|
+
},
|
|
280
|
+
errorTitle: {
|
|
281
|
+
fontSize: 18,
|
|
282
|
+
fontWeight: '600',
|
|
283
|
+
color: '#333',
|
|
284
|
+
marginTop: 16,
|
|
285
|
+
marginBottom: 8
|
|
286
|
+
},
|
|
287
|
+
errorMessage: {
|
|
288
|
+
fontSize: 14,
|
|
289
|
+
color: '#666',
|
|
290
|
+
textAlign: 'center',
|
|
291
|
+
marginBottom: 20
|
|
292
|
+
},
|
|
293
|
+
retryButton: {
|
|
294
|
+
backgroundColor: COLORS.primary,
|
|
295
|
+
paddingHorizontal: 24,
|
|
296
|
+
paddingVertical: 12,
|
|
297
|
+
borderRadius: 8
|
|
298
|
+
},
|
|
299
|
+
retryButtonText: {
|
|
300
|
+
color: '#fff',
|
|
301
|
+
fontSize: 16,
|
|
302
|
+
fontWeight: '600'
|
|
227
303
|
}
|
|
228
304
|
});
|
|
229
305
|
//# sourceMappingURL=OAuthWebView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","View","Text","StyleSheet","TouchableOpacity","ActivityIndicator","SafeAreaView","Dimensions","WebView","Icon","COLORS","width","height","get","OAuthWebView","url","onClose","onSuccess","platform","onComplete","isLoading","setIsLoading","console","log","handleNavigationStateChange","navState","isFinalRedirect","includes","
|
|
1
|
+
{"version":3,"names":["React","useState","useRef","View","Text","StyleSheet","TouchableOpacity","ActivityIndicator","SafeAreaView","Dimensions","Linking","WebView","Icon","COLORS","width","height","get","OAuthWebView","url","onClose","onSuccess","platform","onComplete","isLoading","setIsLoading","error","setError","webViewRef","console","log","handleNavigationStateChange","navState","isFinalRedirect","includes","startsWith","platformSuccessPatterns","reddit","pinterest","linkedin","email","instagram","youtube","isPlatformSuccess","some","pattern","test","isCallbackUrl","authCode","codeMatch","match","tokenMatch","handleLoadEnd","handleError","syntheticEvent","nativeEvent","handleOpenInBrowser","openURL","catch","err","getPlatformIcon","getPlatformColor","primary","createElement","style","styles","container","header","onPress","closeButton","name","size","color","titleContainer","titleText","charAt","toUpperCase","slice","errorContainer","errorTitle","errorMessage","retryButton","retryButtonText","browserButton","ref","source","uri","onNavigationStateChange","onLoadEnd","onError","webView","javaScriptEnabled","domStorageEnabled","userAgent","loadingContainer","loadingText","create","flex","backgroundColor","flexDirection","alignItems","borderBottomWidth","borderBottomColor","paddingHorizontal","justifyContent","marginLeft","fontSize","fontWeight","padding","position","left","zIndex","right","absoluteFillObject","marginTop","marginBottom","textAlign","paddingVertical","borderRadius"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/onboarding/OAuthWebView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -155,13 +155,55 @@ export const initiateNativeAuth = async platform => {
|
|
|
155
155
|
try {
|
|
156
156
|
// Currently only YouTube (Google Sign-In) is supported
|
|
157
157
|
if (platform === 'youtube') {
|
|
158
|
-
// This is a placeholder for the actual implementation
|
|
159
|
-
// In a real implementation, you would import and use the Google Sign-In SDK
|
|
160
158
|
console.log('Initiating native Google Sign-In for YouTube');
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
159
|
+
try {
|
|
160
|
+
// Import Google Sign-In dynamically to avoid errors if not installed
|
|
161
|
+
const {
|
|
162
|
+
GoogleSignin,
|
|
163
|
+
statusCodes
|
|
164
|
+
} = require('@react-native-google-signin/google-signin');
|
|
165
|
+
|
|
166
|
+
// Configure Google Sign-In
|
|
167
|
+
await GoogleSignin.configure({
|
|
168
|
+
scopes: ['https://www.googleapis.com/auth/youtube.readonly'],
|
|
169
|
+
webClientId: 'YOUR_WEB_CLIENT_ID',
|
|
170
|
+
// Replace with your actual web client ID
|
|
171
|
+
offlineAccess: true,
|
|
172
|
+
hostedDomain: '',
|
|
173
|
+
forceCodeForRefreshToken: true
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
// Check if device supports Google Play Services
|
|
177
|
+
await GoogleSignin.hasPlayServices();
|
|
178
|
+
|
|
179
|
+
// Sign in
|
|
180
|
+
const userInfo = await GoogleSignin.signIn();
|
|
181
|
+
console.log('Google Sign-In successful:', userInfo);
|
|
182
|
+
|
|
183
|
+
// Get access token
|
|
184
|
+
const tokens = await GoogleSignin.getTokens();
|
|
185
|
+
console.log('Google tokens:', tokens);
|
|
186
|
+
|
|
187
|
+
// Here you would typically send the tokens to your backend
|
|
188
|
+
// to associate the YouTube account with the user
|
|
189
|
+
|
|
190
|
+
return true;
|
|
191
|
+
} catch (error) {
|
|
192
|
+
console.error('Google Sign-In error:', error);
|
|
193
|
+
const {
|
|
194
|
+
statusCodes: StatusCodes
|
|
195
|
+
} = require('@react-native-google-signin/google-signin');
|
|
196
|
+
if (error.code === StatusCodes.SIGN_IN_CANCELLED) {
|
|
197
|
+
console.log('User cancelled the sign-in flow');
|
|
198
|
+
} else if (error.code === StatusCodes.IN_PROGRESS) {
|
|
199
|
+
console.log('Sign-in is in progress already');
|
|
200
|
+
} else if (error.code === StatusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
|
|
201
|
+
console.log('Play services not available or outdated');
|
|
202
|
+
} else {
|
|
203
|
+
console.log('Some other error happened');
|
|
204
|
+
}
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
165
207
|
}
|
|
166
208
|
throw new Error(`Native authentication not supported for ${platform}`);
|
|
167
209
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PLATFORM_AUTH_CONFIG","instagram","hasNativeSDK","authEndpoint","color","youtube","nativeSDKPackage","reddit","pinterest","email","platform","config","getAuthEndpoint","getPlatformColor","initiateOAuth","username","appName","Error","state","jsonData","session","oauthState","response","fetch","method","headers","body","JSON","stringify","responseData","json","instagramURL","data","redditURL","pinterestURL","youtubeURL","emailURL","url","error","console","initiateNativeAuth","log","handleOAuthCallback","parsedUrl","URL","searchParams","get","isOAuthCallback","startsWith"],"sourceRoot":"..\\..\\..\\src","sources":["services/platformAuthService.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["PLATFORM_AUTH_CONFIG","instagram","hasNativeSDK","authEndpoint","color","youtube","nativeSDKPackage","reddit","pinterest","email","platform","config","getAuthEndpoint","getPlatformColor","initiateOAuth","username","appName","Error","state","jsonData","session","oauthState","response","fetch","method","headers","body","JSON","stringify","responseData","json","instagramURL","data","redditURL","pinterestURL","youtubeURL","emailURL","url","error","console","initiateNativeAuth","log","GoogleSignin","statusCodes","require","configure","scopes","webClientId","offlineAccess","hostedDomain","forceCodeForRefreshToken","hasPlayServices","userInfo","signIn","tokens","getTokens","StatusCodes","code","SIGN_IN_CANCELLED","IN_PROGRESS","PLAY_SERVICES_NOT_AVAILABLE","handleOAuthCallback","parsedUrl","URL","searchParams","get","isOAuthCallback","startsWith"],"sourceRoot":"..\\..\\..\\src","sources":["services/platformAuthService.ts"],"mappings":"AAGA;;AAQA;AACA,MAAMA,oBAAwD,GAAG;EAC/DC,SAAS,EAAE;IACTC,YAAY,EAAE,KAAK;IAAE;IACrBC,YAAY,EAAE,6CAA6C;IAC3DC,KAAK,EAAE;EACT,CAAC;EACDC,OAAO,EAAE;IACPH,YAAY,EAAE,IAAI;IAAE;IACpBI,gBAAgB,EAAE,2CAA2C;IAC7DH,YAAY,EAAE,2CAA2C;IACzDC,KAAK,EAAE;EACT,CAAC;EACDG,MAAM,EAAE;IACNL,YAAY,EAAE,KAAK;IACnBC,YAAY,EAAE,0CAA0C;IACxDC,KAAK,EAAE;EACT,CAAC;EACDI,SAAS,EAAE;IACTN,YAAY,EAAE,KAAK;IACnBC,YAAY,EAAE,6CAA6C;IAC3DC,KAAK,EAAE;EACT,CAAC;EACDK,KAAK,EAAE;IACLP,YAAY,EAAE,KAAK;IACnBC,YAAY,EAAE,yCAAyC;IACvDC,KAAK,EAAE;EACT;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMF,YAAY,GAAIQ,QAAgB,IAAc;EACzD,MAAMC,MAAM,GAAGX,oBAAoB,CAACU,QAAQ,CAAC;EAC7C,OAAO,CAAAC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAET,YAAY,KAAI,KAAK;AACtC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMU,eAAe,GAAIF,QAAgB,IAAa;EAC3D,MAAMC,MAAM,GAAGX,oBAAoB,CAACU,QAAQ,CAAC;EAC7C,OAAO,CAAAC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAER,YAAY,KAAI,EAAE;AACnC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMU,gBAAgB,GAAIH,QAAgB,IAAa;EAC5D,MAAMC,MAAM,GAAGX,oBAAoB,CAACU,QAAQ,CAAC;EAC7C,OAAO,CAAAC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEP,KAAK,KAAI,SAAS;AACnC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMU,aAAa,GAAG,MAAAA,CAAOJ,QAAgB,EAAEK,QAAgB,EAAEC,OAAgB,KAA6B;EACnH,IAAI;IACF;IACA,IAAI,CAAChB,oBAAoB,CAACU,QAAQ,CAAC,EAAE;MACnC,MAAM,IAAIO,KAAK,CAAC,yBAAyBP,QAAQ,EAAE,CAAC;IACtD;;IAEA;IACA,IAAIV,oBAAoB,CAACU,QAAQ,CAAC,CAACR,YAAY,EAAE;MAC/C;MACA,OAAO,IAAI;IACb;;IAEA;IACA,IAAIQ,QAAQ,KAAK,WAAW,EAAE;MAC5B,MAAMQ,KAAK,GAAG,UAAU;MACxB,MAAMC,QAAQ,GAAG;QACfC,OAAO,EAAE;UACPC,UAAU,EAAEH,KAAK;UACjBH,QAAQ,EAAEA,QAAQ,IAAI;QACxB;MACF,CAAC;MAED,MAAMO,QAAQ,GAAG,MAAMC,KAAK,CAAC,6CAA6C,EAAE;QAC1EC,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE;UACP,cAAc,EAAE;QAClB,CAAC;QACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACT,QAAQ;MAC/B,CAAC,CAAC;MAEF,MAAMU,YAAY,GAAG,MAAMP,QAAQ,CAACQ,IAAI,CAAC,CAAC;MAE1C,IAAID,YAAY,CAACE,YAAY,EAAE;QAC7B,OAAOF,YAAY,CAACE,YAAY;MAClC;MAEA,MAAM,IAAId,KAAK,CAAC,oCAAoC,CAAC;IACvD;;IAEA;IACA,MAAME,QAAQ,GAAG;MACfC,OAAO,EAAE;QACPC,UAAU,EAAE,UAAU;QAAE;QACxBN,QAAQ,EAAEA,QAAQ,IAAI,QAAQ;QAC9BC,OAAO,EAAEA,OAAO,IAAI;MACtB;IACF,CAAC;;IAED;IACA,MAAMM,QAAQ,GAAG,MAAMC,KAAK,CAACvB,oBAAoB,CAACU,QAAQ,CAAC,CAACP,YAAY,EAAE;MACxEqB,MAAM,EAAE,MAAM;MACdC,OAAO,EAAE;QACP,cAAc,EAAE;MAClB,CAAC;MACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACT,QAAQ;IAC/B,CAAC,CAAC;;IAEF;IACA,MAAMa,IAAI,GAAG,MAAMV,QAAQ,CAACQ,IAAI,CAAC,CAAC;;IAElC;IACA,QAAQpB,QAAQ;MACd,KAAK,QAAQ;QACX,IAAIsB,IAAI,CAACC,SAAS,EAAE,OAAOD,IAAI,CAACC,SAAS;QACzC;MACF,KAAK,WAAW;QACd,IAAID,IAAI,CAACE,YAAY,EAAE,OAAOF,IAAI,CAACE,YAAY;QAC/C;MACF,KAAK,SAAS;QACZ,IAAIF,IAAI,CAACG,UAAU,EAAE,OAAOH,IAAI,CAACG,UAAU;QAC3C;MACF,KAAK,OAAO;QACV,IAAIH,IAAI,CAACI,QAAQ,EAAE,OAAOJ,IAAI,CAACI,QAAQ;QACvC;MACF;QACE,IAAIJ,IAAI,CAACK,GAAG,EAAE,OAAOL,IAAI,CAACK,GAAG;QAC7B;IACJ;IAEA,MAAM,IAAIpB,KAAK,CAAC,sCAAsCP,QAAQ,EAAE,CAAC;EACnE,CAAC,CAAC,OAAO4B,KAAK,EAAE;IACdC,OAAO,CAACD,KAAK,CAAC,8BAA8B5B,QAAQ,GAAG,EAAE4B,KAAK,CAAC;IAC/D,MAAMA,KAAK;EACb;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,kBAAkB,GAAG,MAAO9B,QAAgB,IAAuB;EAC9E,IAAI;IACF;IACA,IAAIA,QAAQ,KAAK,SAAS,EAAE;MAC1B6B,OAAO,CAACE,GAAG,CAAC,8CAA8C,CAAC;MAE3D,IAAI;QACF;QACA,MAAM;UAAEC,YAAY;UAAEC;QAAY,CAAC,GAAGC,OAAO,CAAC,2CAA2C,CAAC;;QAE1F;QACA,MAAMF,YAAY,CAACG,SAAS,CAAC;UAC3BC,MAAM,EAAE,CAAC,kDAAkD,CAAC;UAC5DC,WAAW,EAAE,oBAAoB;UAAE;UACnCC,aAAa,EAAE,IAAI;UACnBC,YAAY,EAAE,EAAE;UAChBC,wBAAwB,EAAE;QAC5B,CAAC,CAAC;;QAEF;QACA,MAAMR,YAAY,CAACS,eAAe,CAAC,CAAC;;QAEpC;QACA,MAAMC,QAAQ,GAAG,MAAMV,YAAY,CAACW,MAAM,CAAC,CAAC;QAC5Cd,OAAO,CAACE,GAAG,CAAC,4BAA4B,EAAEW,QAAQ,CAAC;;QAEnD;QACA,MAAME,MAAM,GAAG,MAAMZ,YAAY,CAACa,SAAS,CAAC,CAAC;QAC7ChB,OAAO,CAACE,GAAG,CAAC,gBAAgB,EAAEa,MAAM,CAAC;;QAErC;QACA;;QAEA,OAAO,IAAI;MACb,CAAC,CAAC,OAAOhB,KAAU,EAAE;QACnBC,OAAO,CAACD,KAAK,CAAC,uBAAuB,EAAEA,KAAK,CAAC;QAE7C,MAAM;UAAEK,WAAW,EAAEa;QAAY,CAAC,GAAGZ,OAAO,CAAC,2CAA2C,CAAC;QAEzF,IAAIN,KAAK,CAACmB,IAAI,KAAKD,WAAW,CAACE,iBAAiB,EAAE;UAChDnB,OAAO,CAACE,GAAG,CAAC,iCAAiC,CAAC;QAChD,CAAC,MAAM,IAAIH,KAAK,CAACmB,IAAI,KAAKD,WAAW,CAACG,WAAW,EAAE;UACjDpB,OAAO,CAACE,GAAG,CAAC,gCAAgC,CAAC;QAC/C,CAAC,MAAM,IAAIH,KAAK,CAACmB,IAAI,KAAKD,WAAW,CAACI,2BAA2B,EAAE;UACjErB,OAAO,CAACE,GAAG,CAAC,yCAAyC,CAAC;QACxD,CAAC,MAAM;UACLF,OAAO,CAACE,GAAG,CAAC,2BAA2B,CAAC;QAC1C;QAEA,OAAO,KAAK;MACd;IACF;IAEA,MAAM,IAAIxB,KAAK,CAAC,2CAA2CP,QAAQ,EAAE,CAAC;EACxE,CAAC,CAAC,OAAO4B,KAAK,EAAE;IACdC,OAAO,CAACD,KAAK,CAAC,oCAAoC5B,QAAQ,GAAG,EAAE4B,KAAK,CAAC;IACrE,MAAMA,KAAK;EACb;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMuB,mBAAmB,GAAIxB,GAAW,IAAoB;EACjE,IAAI;IACF;IACA,MAAMyB,SAAS,GAAG,IAAIC,GAAG,CAAC1B,GAAG,CAAC;;IAE9B;IACA,OAAOyB,SAAS,CAACE,YAAY,CAACC,GAAG,CAAC,MAAM,CAAC;EAC3C,CAAC,CAAC,OAAO3B,KAAK,EAAE;IACdC,OAAO,CAACD,KAAK,CAAC,gCAAgC,EAAEA,KAAK,CAAC;IACtD,OAAO,IAAI;EACb;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAM4B,eAAe,GAAI7B,GAAW,IAAc;EACvD;EACA,OAAOA,GAAG,CAAC8B,UAAU,CAAC,sBAAsB,CAAC;AAC/C,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthWebView.d.ts","sourceRoot":"","sources":["../../../../src/components/onboarding/OAuthWebView.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"OAuthWebView.d.ts","sourceRoot":"","sources":["../../../../src/components/onboarding/OAuthWebView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAiBhD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqOpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformAuthService.d.ts","sourceRoot":"","sources":["../../../src/services/platformAuthService.ts"],"names":[],"mappings":"AAyCA;;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;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,aAAoB,MAAM,YAAY,MAAM,YAAY,MAAM,KAAG,QAAQ,MAAM,GAAG,IAAI,CAqF/G,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,aAAoB,MAAM,KAAG,QAAQ,OAAO,
|
|
1
|
+
{"version":3,"file":"platformAuthService.d.ts","sourceRoot":"","sources":["../../../src/services/platformAuthService.ts"],"names":[],"mappings":"AAyCA;;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;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,aAAoB,MAAM,YAAY,MAAM,YAAY,MAAM,KAAG,QAAQ,MAAM,GAAG,IAAI,CAqF/G,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,aAAoB,MAAM,KAAG,QAAQ,OAAO,CA0D1E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAS,MAAM,KAAG,MAAM,GAAG,IAW1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAS,MAAM,KAAG,OAG7C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useState, useRef } from 'react';
|
|
2
2
|
import {
|
|
3
3
|
View,
|
|
4
4
|
Text,
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
ActivityIndicator,
|
|
8
8
|
SafeAreaView,
|
|
9
9
|
Dimensions,
|
|
10
|
+
Linking,
|
|
10
11
|
} from 'react-native';
|
|
11
12
|
import { WebView } from 'react-native-webview';
|
|
12
13
|
import Icon from 'react-native-vector-icons/MaterialIcons';
|
|
@@ -30,8 +31,10 @@ export const OAuthWebView: React.FC<OAuthWebViewProps> = ({
|
|
|
30
31
|
onComplete,
|
|
31
32
|
}) => {
|
|
32
33
|
const [isLoading, setIsLoading] = useState(true);
|
|
34
|
+
const [error, setError] = useState<string | null>(null);
|
|
35
|
+
const webViewRef = useRef<WebView>(null);
|
|
33
36
|
|
|
34
|
-
console.log('Opening OAuth WebView with URL:', url);
|
|
37
|
+
console.log('Opening OAuth WebView with URL:', url);
|
|
35
38
|
|
|
36
39
|
const handleNavigationStateChange = (navState: any) => {
|
|
37
40
|
console.log(`Navigation state changed for ${platform}:`, navState.url);
|
|
@@ -40,29 +43,11 @@ export const OAuthWebView: React.FC<OAuthWebViewProps> = ({
|
|
|
40
43
|
const isFinalRedirect = (
|
|
41
44
|
navState.url.includes('onairos.uk/Home') ||
|
|
42
45
|
navState.url.includes('onairos.uk/home') ||
|
|
43
|
-
navState.url.includes('onairos.uk/success')
|
|
46
|
+
navState.url.includes('onairos.uk/success') ||
|
|
47
|
+
navState.url.startsWith('https://onairos.uk/Home')
|
|
44
48
|
);
|
|
45
49
|
|
|
46
|
-
//
|
|
47
|
-
// Only close after the backend callback redirects to onairos.uk/Home
|
|
48
|
-
if (platform === 'youtube') {
|
|
49
|
-
// Only trigger success when we see the final redirect from the backend
|
|
50
|
-
if (isFinalRedirect) {
|
|
51
|
-
console.log('YouTube OAuth completed - backend callback finished and redirected to Home');
|
|
52
|
-
onSuccess('success');
|
|
53
|
-
|
|
54
|
-
// Close the OAuth window after a small delay to ensure redirect is processed
|
|
55
|
-
setTimeout(() => {
|
|
56
|
-
if (onComplete) {
|
|
57
|
-
console.log('Closing YouTube OAuth window after callback completion');
|
|
58
|
-
onComplete();
|
|
59
|
-
}
|
|
60
|
-
}, 500);
|
|
61
|
-
}
|
|
62
|
-
return; // Exit early for YouTube to avoid other triggers
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Platform-specific success patterns (for non-YouTube platforms)
|
|
50
|
+
// Platform-specific success patterns
|
|
66
51
|
const platformSuccessPatterns: Record<string, RegExp[]> = {
|
|
67
52
|
reddit: [
|
|
68
53
|
/reddit\.com\/api\/v1\/authorize\?done=true/,
|
|
@@ -77,10 +62,14 @@ export const OAuthWebView: React.FC<OAuthWebViewProps> = ({
|
|
|
77
62
|
/linkedin\.com\/oauth\/complete/,
|
|
78
63
|
/linkedin\.com\/uas\/oauth2\/authorization\/success/
|
|
79
64
|
],
|
|
80
|
-
email: [/success/],
|
|
65
|
+
email: [/success/],
|
|
81
66
|
instagram: [
|
|
82
67
|
/instagram\.com\/oauth\/authorize\?done=true/,
|
|
83
68
|
/instagram\.com\/oauth\/success/
|
|
69
|
+
],
|
|
70
|
+
youtube: [
|
|
71
|
+
/accounts\.google\.com\/o\/oauth2\/approval/,
|
|
72
|
+
/youtube\.com\/oauth\/success/
|
|
84
73
|
]
|
|
85
74
|
};
|
|
86
75
|
|
|
@@ -139,6 +128,20 @@ export const OAuthWebView: React.FC<OAuthWebViewProps> = ({
|
|
|
139
128
|
|
|
140
129
|
const handleLoadEnd = () => {
|
|
141
130
|
setIsLoading(false);
|
|
131
|
+
setError(null);
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
const handleError = (syntheticEvent: any) => {
|
|
135
|
+
const { nativeEvent } = syntheticEvent;
|
|
136
|
+
console.error('WebView error:', nativeEvent);
|
|
137
|
+
setError('Failed to load OAuth page. Please try again.');
|
|
138
|
+
setIsLoading(false);
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
const handleOpenInBrowser = () => {
|
|
142
|
+
Linking.openURL(url).catch(err => {
|
|
143
|
+
console.error('Failed to open URL in browser:', err);
|
|
144
|
+
});
|
|
142
145
|
};
|
|
143
146
|
|
|
144
147
|
/**
|
|
@@ -181,6 +184,35 @@ export const OAuthWebView: React.FC<OAuthWebViewProps> = ({
|
|
|
181
184
|
}
|
|
182
185
|
};
|
|
183
186
|
|
|
187
|
+
if (error) {
|
|
188
|
+
return (
|
|
189
|
+
<SafeAreaView style={styles.container}>
|
|
190
|
+
<View style={styles.header}>
|
|
191
|
+
<TouchableOpacity onPress={onClose} style={styles.closeButton}>
|
|
192
|
+
<Icon name="close" size={24} color="#000" />
|
|
193
|
+
</TouchableOpacity>
|
|
194
|
+
<View style={styles.titleContainer}>
|
|
195
|
+
<Icon
|
|
196
|
+
name={getPlatformIcon(platform)}
|
|
197
|
+
size={20}
|
|
198
|
+
color={getPlatformColor(platform)}
|
|
199
|
+
/>
|
|
200
|
+
<Text style={styles.titleText}>{platform.charAt(0).toUpperCase() + platform.slice(1)} OAuth</Text>
|
|
201
|
+
</View>
|
|
202
|
+
</View>
|
|
203
|
+
|
|
204
|
+
<View style={styles.errorContainer}>
|
|
205
|
+
<Icon name="error-outline" size={48} color="#FF6B6B" />
|
|
206
|
+
<Text style={styles.errorTitle}>Connection Error</Text>
|
|
207
|
+
<Text style={styles.errorMessage}>{error}</Text>
|
|
208
|
+
<TouchableOpacity style={styles.retryButton} onPress={handleOpenInBrowser}>
|
|
209
|
+
<Text style={styles.retryButtonText}>Open in Browser</Text>
|
|
210
|
+
</TouchableOpacity>
|
|
211
|
+
</View>
|
|
212
|
+
</SafeAreaView>
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
|
|
184
216
|
return (
|
|
185
217
|
<SafeAreaView style={styles.container}>
|
|
186
218
|
<View style={styles.header}>
|
|
@@ -195,17 +227,20 @@ export const OAuthWebView: React.FC<OAuthWebViewProps> = ({
|
|
|
195
227
|
/>
|
|
196
228
|
<Text style={styles.titleText}>{platform.charAt(0).toUpperCase() + platform.slice(1)} OAuth</Text>
|
|
197
229
|
</View>
|
|
230
|
+
<TouchableOpacity onPress={handleOpenInBrowser} style={styles.browserButton}>
|
|
231
|
+
<Icon name="open-in-browser" size={20} color="#666" />
|
|
232
|
+
</TouchableOpacity>
|
|
198
233
|
</View>
|
|
199
234
|
|
|
200
235
|
<WebView
|
|
236
|
+
ref={webViewRef}
|
|
201
237
|
source={{ uri: url }}
|
|
202
238
|
onNavigationStateChange={handleNavigationStateChange}
|
|
203
239
|
onLoadEnd={handleLoadEnd}
|
|
240
|
+
onError={handleError}
|
|
204
241
|
style={styles.webView}
|
|
205
242
|
javaScriptEnabled={true}
|
|
206
243
|
domStorageEnabled={true}
|
|
207
|
-
sharedCookiesEnabled={true}
|
|
208
|
-
thirdPartyCookiesEnabled={true}
|
|
209
244
|
userAgent="Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1"
|
|
210
245
|
/>
|
|
211
246
|
|
|
@@ -251,6 +286,12 @@ const styles = StyleSheet.create({
|
|
|
251
286
|
left: 16,
|
|
252
287
|
zIndex: 10,
|
|
253
288
|
},
|
|
289
|
+
browserButton: {
|
|
290
|
+
padding: 8,
|
|
291
|
+
position: 'absolute',
|
|
292
|
+
right: 16,
|
|
293
|
+
zIndex: 10,
|
|
294
|
+
},
|
|
254
295
|
webView: {
|
|
255
296
|
flex: 1,
|
|
256
297
|
},
|
|
@@ -265,4 +306,34 @@ const styles = StyleSheet.create({
|
|
|
265
306
|
fontSize: 16,
|
|
266
307
|
color: '#666',
|
|
267
308
|
},
|
|
309
|
+
errorContainer: {
|
|
310
|
+
flex: 1,
|
|
311
|
+
alignItems: 'center',
|
|
312
|
+
justifyContent: 'center',
|
|
313
|
+
padding: 20,
|
|
314
|
+
},
|
|
315
|
+
errorTitle: {
|
|
316
|
+
fontSize: 18,
|
|
317
|
+
fontWeight: '600',
|
|
318
|
+
color: '#333',
|
|
319
|
+
marginTop: 16,
|
|
320
|
+
marginBottom: 8,
|
|
321
|
+
},
|
|
322
|
+
errorMessage: {
|
|
323
|
+
fontSize: 14,
|
|
324
|
+
color: '#666',
|
|
325
|
+
textAlign: 'center',
|
|
326
|
+
marginBottom: 20,
|
|
327
|
+
},
|
|
328
|
+
retryButton: {
|
|
329
|
+
backgroundColor: COLORS.primary,
|
|
330
|
+
paddingHorizontal: 24,
|
|
331
|
+
paddingVertical: 12,
|
|
332
|
+
borderRadius: 8,
|
|
333
|
+
},
|
|
334
|
+
retryButtonText: {
|
|
335
|
+
color: '#fff',
|
|
336
|
+
fontSize: 16,
|
|
337
|
+
fontWeight: '600',
|
|
338
|
+
},
|
|
268
339
|
});
|
|
@@ -166,13 +166,53 @@ export const initiateNativeAuth = async (platform: string): Promise<boolean> =>
|
|
|
166
166
|
try {
|
|
167
167
|
// Currently only YouTube (Google Sign-In) is supported
|
|
168
168
|
if (platform === 'youtube') {
|
|
169
|
-
// This is a placeholder for the actual implementation
|
|
170
|
-
// In a real implementation, you would import and use the Google Sign-In SDK
|
|
171
169
|
console.log('Initiating native Google Sign-In for YouTube');
|
|
172
170
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
171
|
+
try {
|
|
172
|
+
// Import Google Sign-In dynamically to avoid errors if not installed
|
|
173
|
+
const { GoogleSignin, statusCodes } = require('@react-native-google-signin/google-signin');
|
|
174
|
+
|
|
175
|
+
// Configure Google Sign-In
|
|
176
|
+
await GoogleSignin.configure({
|
|
177
|
+
scopes: ['https://www.googleapis.com/auth/youtube.readonly'],
|
|
178
|
+
webClientId: 'YOUR_WEB_CLIENT_ID', // Replace with your actual web client ID
|
|
179
|
+
offlineAccess: true,
|
|
180
|
+
hostedDomain: '',
|
|
181
|
+
forceCodeForRefreshToken: true,
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
// Check if device supports Google Play Services
|
|
185
|
+
await GoogleSignin.hasPlayServices();
|
|
186
|
+
|
|
187
|
+
// Sign in
|
|
188
|
+
const userInfo = await GoogleSignin.signIn();
|
|
189
|
+
console.log('Google Sign-In successful:', userInfo);
|
|
190
|
+
|
|
191
|
+
// Get access token
|
|
192
|
+
const tokens = await GoogleSignin.getTokens();
|
|
193
|
+
console.log('Google tokens:', tokens);
|
|
194
|
+
|
|
195
|
+
// Here you would typically send the tokens to your backend
|
|
196
|
+
// to associate the YouTube account with the user
|
|
197
|
+
|
|
198
|
+
return true;
|
|
199
|
+
} catch (error: any) {
|
|
200
|
+
console.error('Google Sign-In error:', error);
|
|
201
|
+
|
|
202
|
+
const { statusCodes: StatusCodes } = require('@react-native-google-signin/google-signin');
|
|
203
|
+
|
|
204
|
+
if (error.code === StatusCodes.SIGN_IN_CANCELLED) {
|
|
205
|
+
console.log('User cancelled the sign-in flow');
|
|
206
|
+
} else if (error.code === StatusCodes.IN_PROGRESS) {
|
|
207
|
+
console.log('Sign-in is in progress already');
|
|
208
|
+
} else if (error.code === StatusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
|
|
209
|
+
console.log('Play services not available or outdated');
|
|
210
|
+
} else {
|
|
211
|
+
console.log('Some other error happened');
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
176
216
|
}
|
|
177
217
|
|
|
178
218
|
throw new Error(`Native authentication not supported for ${platform}`);
|