Merge pull request #20003 from prlanzarin/u27/fix/ua-invalid-version-number
[2.7] fix: crash due to invalid UA version number in WKWebView (backport)
This commit is contained in:
commit
b98340bd27
@ -1,4 +1,5 @@
|
|||||||
import Bowser from 'bowser';
|
import Bowser from 'bowser';
|
||||||
|
import logger from '/imports/startup/client/logger';
|
||||||
|
|
||||||
const userAgent = window.navigator.userAgent;
|
const userAgent = window.navigator.userAgent;
|
||||||
const BOWSER_RESULTS = Bowser.parse(userAgent);
|
const BOWSER_RESULTS = Bowser.parse(userAgent);
|
||||||
@ -10,7 +11,29 @@ const isIe = BOWSER_RESULTS.browser.name === 'Internet Explorer';
|
|||||||
const isFirefox = BOWSER_RESULTS.browser.name === 'Firefox';
|
const isFirefox = BOWSER_RESULTS.browser.name === 'Firefox';
|
||||||
|
|
||||||
const browserName = BOWSER_RESULTS.browser.name;
|
const browserName = BOWSER_RESULTS.browser.name;
|
||||||
const versionNumber = BOWSER_RESULTS.browser.version;
|
|
||||||
|
const getVersionNumber = () => {
|
||||||
|
if (BOWSER_RESULTS.browser.version) return BOWSER_RESULTS.browser.version;
|
||||||
|
|
||||||
|
// There are some scenarios (e.g.; WKWebView) where Bowser can't detect the
|
||||||
|
// Safari version. In such cases, we can use the WebKit version to determine
|
||||||
|
// it.
|
||||||
|
if (isSafari && BOWSER_RESULTS.engine.version) return BOWSER_RESULTS.engine.version;
|
||||||
|
|
||||||
|
// If the version number is not available, log an warning and return Infinity
|
||||||
|
// so that we do not deny access to the user (even if we're uncertain about
|
||||||
|
// whether it's a supported browser).
|
||||||
|
logger.warn({
|
||||||
|
logCode: 'browserInfo_invalid_version',
|
||||||
|
extraInfo: {
|
||||||
|
userAgent,
|
||||||
|
},
|
||||||
|
}, 'Unable to determine the browser version number');
|
||||||
|
|
||||||
|
return 'Infinity';
|
||||||
|
};
|
||||||
|
|
||||||
|
const versionNumber = getVersionNumber();
|
||||||
|
|
||||||
const isValidSafariVersion = Bowser.getParser(userAgent).satisfies({
|
const isValidSafariVersion = Bowser.getParser(userAgent).satisfies({
|
||||||
safari: '>12',
|
safari: '>12',
|
||||||
|
Loading…
Reference in New Issue
Block a user