From 8deedcd91609acda422b5d5145b6b6ee6d084d1a Mon Sep 17 00:00:00 2001 From: Mickael Kerjean Date: Fri, 15 Nov 2019 00:12:35 +1100 Subject: [PATCH] improve (pwa): follow the lighthouse tool recommendations for PWAs --- client/assets/css/reset.scss | 9 ++ client/components/breadcrumb.js | 12 +-- client/components/breadcrumb.scss | 4 +- client/index.js | 12 +++ client/model/log.js | 5 +- client/pages/connectpage/form.js | 2 +- client/pages/filespage/submenu.js | 1 + client/worker/cache.js | 162 ------------------------------ client/worker/sw_cache.js | 123 +++++++++++++++++++++++ server/main.go | 1 + webpack.config.js | 3 +- 11 files changed, 160 insertions(+), 174 deletions(-) delete mode 100644 client/worker/cache.js create mode 100644 client/worker/sw_cache.js diff --git a/client/assets/css/reset.scss b/client/assets/css/reset.scss index 679f77b4..3a907e3f 100644 --- a/client/assets/css/reset.scss +++ b/client/assets/css/reset.scss @@ -185,3 +185,12 @@ select:-moz-focusring { .pointer { cursor: pointer; } + +.hidden{ + position:absolute; + left:-10000px; + top:auto; + width:1px; + height:1px; + overflow:hidden; +} diff --git a/client/components/breadcrumb.js b/client/components/breadcrumb.js index 1cffa978..fe4e1ccc 100644 --- a/client/components/breadcrumb.js +++ b/client/components/breadcrumb.js @@ -76,19 +76,19 @@ BreadCrumb.propTypes = { const BreadCrumbContainer = (props) => { return (
- +
); } const Logout = (props) => { return ( -
  • +
    -
  • + ); } @@ -144,7 +144,7 @@ export class PathElementWrapper extends React.Component { href += location.search; return ( -
  • +
    @@ -163,7 +163,7 @@ export class PathElementWrapper extends React.Component { {this.limitSize(this.props.path.label)} -
  • + ); } } diff --git a/client/components/breadcrumb.scss b/client/components/breadcrumb.scss index 9e99a8ec..71ef2757 100644 --- a/client/components/breadcrumb.scss +++ b/client/components/breadcrumb.scss @@ -9,14 +9,14 @@ z-index: 1000; padding: 4px 0; - ul{ + .ul{ list-style-type: none; margin: 0 auto; width: 95%; max-width: 800px; padding: 0; > span{display: block; padding: 7px 0;} - div, li{ + div, .li{ display: inline-block; } } diff --git a/client/index.js b/client/index.js index d3f318ef..c0cc8871 100644 --- a/client/index.js +++ b/client/index.js @@ -44,9 +44,21 @@ window.addEventListener("DOMContentLoaded", () => { .then(render); } return removeLoader().then(render); + }).catch((e) => { + const msg = "Couldn't boot Filestash"; + Log.report(msg, location.href); + return removeLoaderWithAnimation() }); }); window.onerror = function (msg, url, lineNo, colNo, error) { Log.report(msg, url, lineNo, colNo, error) } + +if ("serviceWorker" in navigator) { + window.addEventListener("load", function() { + navigator.serviceWorker.register("/sw_cache.js").catch(function(err){ + console.error("ServiceWorker registration failed:", err); + }); + }); +} diff --git a/client/model/log.js b/client/model/log.js index 0312cf28..bd08559b 100644 --- a/client/model/log.js +++ b/client/model/log.js @@ -16,14 +16,15 @@ class LogManager{ } report(msg, link, lineNo, columnNo, error){ + if(navigator.onLine === false) return Promise.resolve(); let url = "/report?"; url += "url="+encodeURIComponent(location.href)+"&"; - url += "error="+encodeURIComponent(error.message)+"&"; url += "msg="+encodeURIComponent(msg)+"&"; url += "from="+encodeURIComponent(link)+"&"; url += "from.lineNo="+lineNo+"&"; url += "from.columnNo="+columnNo; - return http_post(url); + if(error) url += "error="+encodeURIComponent(error.message)+"&"; + return http_post(url).catch(); } } diff --git a/client/pages/connectpage/form.js b/client/pages/connectpage/form.js index 27fd5a04..605df276 100644 --- a/client/pages/connectpage/form.js +++ b/client/pages/connectpage/form.js @@ -140,7 +140,7 @@ export class Form extends React.Component { ); return ( -