Rejig things around to catch Promises not being a thing at all

pull/12232/head
Michael Telatynski 2020-02-04 13:35:05 +00:00
parent 087bcf0ae6
commit 032efafe2e
1 changed files with 14 additions and 15 deletions

View File

@ -54,25 +54,12 @@ import CallHandler from 'matrix-react-sdk/src/CallHandler';
let lastLocationHashSet = null; let lastLocationHashSet = null;
function checkBrowserFeatures(featureList) { function checkBrowserFeatures(featureList) {
let featureComplete = true;
// custom checks atop Modernizr because it doesn't have ES2018/ES2019 checks in it for some features we depend on:
// ran prior to Modernizr so the missing features are logged even if Modernizr is broken
// ES2018: http://www.ecma-international.org/ecma-262/9.0/#sec-promise.prototype.finally
if (typeof Promise.prototype.finally !== "function") {
console.error("Browser missing feature: Promise.prototype.finally");
featureComplete = false;
}
// ES2019: http://www.ecma-international.org/ecma-262/10.0/#sec-object.fromentries
if (typeof Object.fromEntries !== "function") {
console.error("Browser missing feature: Object.fromEntries");
featureComplete = false;
}
if (!window.Modernizr) { if (!window.Modernizr) {
console.error("Cannot check features - Modernizr global is missing."); console.error("Cannot check features - Modernizr global is missing.");
return false; return false;
} }
let featureComplete = true;
for (let i = 0; i < featureList.length; i++) { for (let i = 0; i < featureList.length; i++) {
if (window.Modernizr[featureList[i]] === undefined) { if (window.Modernizr[featureList[i]] === undefined) {
console.error( console.error(
@ -88,6 +75,18 @@ function checkBrowserFeatures(featureList) {
} }
} }
// custom checks atop Modernizr because it doesn't have ES2018/ES2019 checks in it for some features we depend on:
// ES2018: http://www.ecma-international.org/ecma-262/9.0/#sec-promise.prototype.finally
if (!Promise || !Promise.prototype || typeof Promise.prototype.finally !== "function") {
console.error("Browser missing feature: Promise.prototype.finally");
featureComplete = false;
}
// ES2019: http://www.ecma-international.org/ecma-262/10.0/#sec-object.fromentries
if (!Object || typeof Object.fromEntries !== "function") {
console.error("Browser missing feature: Object.fromEntries");
featureComplete = false;
}
return featureComplete; return featureComplete;
} }