Summary: A check for old browsers and a Grist favicon were not available in grist-core, leaving harmless but distracting errors in logs. This adds them. Test Plan: checked manually Reviewers: georgegevoian Reviewed By: georgegevoian Subscribers: jarek Differential Revision: https://phab.getgrist.com/D3207pull/120/head
parent
62a6190970
commit
975eed8564
@ -0,0 +1,57 @@
|
||||
/**
|
||||
* Check if browser is a version we are happy with.
|
||||
* Introduce any new dependencies very carefully, checking that the code still runs
|
||||
* on old browsers afterwards.
|
||||
*/
|
||||
|
||||
// Use version of bowser with polyfill for old browsers.
|
||||
import * as bowser from 'bowser/bundled';
|
||||
|
||||
// This code will run in the browser.
|
||||
const version = bowser.getParser(window.navigator.userAgent);
|
||||
(window as any)._parsedBrowserVersion = version;
|
||||
|
||||
// Skip if user has already dismissed a warning from us.
|
||||
if (document && window && document.cookie.indexOf("gristbrowser=accept") === -1) {
|
||||
const isHappyBrowser = version.satisfies({
|
||||
desktop: {
|
||||
chrome: ">=72.0.3626", // first 2019 version
|
||||
firefox: ">=65", // first 2019 version
|
||||
safari: ">=12.0.3", // first 2019 version
|
||||
edge: ">=80", // one of first Chromium-based Edge versions, early 2020
|
||||
opera: ">=66", // first 2020 version
|
||||
}
|
||||
});
|
||||
const isMobile = version.isPlatform('mobile') || version.isPlatform('tablet');
|
||||
if (!isHappyBrowser) {
|
||||
const problemElement = document.getElementById('browser-check-problem');
|
||||
const dismissElement = document.getElementById('browser-check-problem-dismiss');
|
||||
if (problemElement && dismissElement) {
|
||||
// Prepare a button for dismissing the warning.
|
||||
dismissElement.onclick = function() {
|
||||
// Set a cookie so we don't show this warning once it is dismissed.
|
||||
let cookie = "gristbrowser=accept; path=/";
|
||||
// Keep the cookie for a year (60*60*24*365 seconds) before warning again.
|
||||
cookie += "; max-age=31536000";
|
||||
|
||||
// NOTE: Safari seems to limit cookies (and other storage?) set via JS to 1 week, so
|
||||
// people on mobile or old Safari may get prompted more often than we'd like. See
|
||||
// https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more/
|
||||
|
||||
if (document.location.href.indexOf(".getgrist.com") !== -1) {
|
||||
// on *.getgrist.com, set cookie domain to getgrist.com
|
||||
cookie += "; Domain=.getgrist.com";
|
||||
}
|
||||
document.cookie = cookie;
|
||||
// Hide the warning, showing the loaded page that it was obscuring.
|
||||
problemElement.style.display = 'none';
|
||||
return false;
|
||||
};
|
||||
// Show modal describing problem, and some possible solutions.
|
||||
if (isMobile) {
|
||||
problemElement.className += ' browser-check-is-mobile';
|
||||
}
|
||||
problemElement.style.display = 'block';
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
const path = require('path');
|
||||
|
||||
module.exports = {
|
||||
target: 'web',
|
||||
mode: 'production',
|
||||
entry: "./_build/app/client/browserCheck.js",
|
||||
output: {
|
||||
path: path.resolve("./static"),
|
||||
filename: "browser-check.js"
|
||||
},
|
||||
};
|
After Width: | Height: | Size: 15 KiB |
Loading…
Reference in new issue