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:
Anton Georgiev 2024-04-12 15:37:15 -04:00 committed by GitHub
commit b98340bd27
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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',