From a52bc4ca2e15f71195218a5f533d62e09946957e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20Sepp=C3=A4l=C3=A4?= Date: Fri, 22 Mar 2019 18:41:06 +0200 Subject: [PATCH] Do not use WebKit for CookieManager operations in SSO (#2515) * Do not use WebKit for CookieManager operations in SSO This allows the SSO login to function again with devices that are not running IOS-11. * Use WebKit for CookieManager operations only with iOS 11 or later Detect OS version and use WebKit only when iOS 11 or later is detected. This allows the SSO login to function again with older devices. --- app/screens/sso/sso.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/screens/sso/sso.js b/app/screens/sso/sso.js index ffef65138..3538d5e73 100644 --- a/app/screens/sso/sso.js +++ b/app/screens/sso/sso.js @@ -8,6 +8,7 @@ import { InteractionManager, Text, View, + Platform, } from 'react-native'; import {WebView} from 'react-native-webview'; import CookieManager from 'react-native-cookies'; @@ -71,6 +72,8 @@ class SSO extends PureComponent { }).isRequired, }; + useWebkit = true; + constructor(props) { super(props); @@ -95,6 +98,10 @@ class SSO extends PureComponent { this.completedUrl = '/signup/office365/complete'; break; } + + if (Platform.OS === 'ios') { + this.useWebkit = parseInt(Platform.Version, 10) >= 11; + } } componentDidMount() { @@ -102,7 +109,7 @@ class SSO extends PureComponent { } clearPreviousCookies = () => { - CookieManager.clearAll(true).then(() => { + CookieManager.clearAll(this.useWebkit).then(() => { this.setState({renderWebView: true}); }); }; @@ -168,7 +175,7 @@ class SSO extends PureComponent { onLoadEnd = (event) => { const url = event.nativeEvent.url; if (url.includes(this.completedUrl)) { - CookieManager.get(urlParse(url).origin, true).then((res) => { + CookieManager.get(urlParse(url).origin, this.useWebkit).then((res) => { const token = res.MMAUTHTOKEN; if (token) { @@ -237,7 +244,7 @@ class SSO extends PureComponent { injectedJavaScript={jsCode} onLoadEnd={this.onLoadEnd} onMessage={messagingEnabled ? this.onMessage : null} - useWebKit={true} + useWebKit={this.useWebkit} useSharedProcessPool={true} cacheEnabled={true} />