From ac481ec1f2c4197b122aa0e6d5f77237f5320b6a Mon Sep 17 00:00:00 2001 From: gorhill Date: Thu, 21 Sep 2017 11:46:15 -0400 Subject: [PATCH] fix #1510 --- src/cloud-ui.html | 3 ++- src/css/cloud-ui.css | 16 ++++++++++++++-- src/js/cloud-ui.js | 16 ++++++++++++---- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/cloud-ui.html b/src/cloud-ui.html index 0d11edeab..3053d7ab8 100644 --- a/src/cloud-ui.html +++ b/src/cloud-ui.html @@ -7,8 +7,9 @@ -  + +

diff --git a/src/css/cloud-ui.css b/src/css/cloud-ui.css index a9519fc69..609b3cddc 100644 --- a/src/css/cloud-ui.css +++ b/src/css/cloud-ui.css @@ -2,7 +2,7 @@ background: url("../img/cloud.png") hsl(216, 100%, 93%); border-radius: 3px; margin: 0.5em 0; - padding: 1em; + padding: 1em 1em 0 1em; position: relative; } #cloudWidget.hide { @@ -22,6 +22,9 @@ #cloudWidget > button[disabled] { visibility: hidden; } +#cloudWidget > button.error { + color: red; + } #cloudPush:after { content: '\f0ee'; } @@ -29,6 +32,9 @@ #cloudPullAndMerge:before { content: '\f0ed'; } +#cloudPullAndMerge { + margin: 0 0.25em; + } #cloudPullAndMerge:after { content: '\f067'; font-size: 50%; @@ -45,7 +51,13 @@ vertical-align: bottom; white-space: pre; } -#cloudWidget > .nodata { +#cloudError { + color: red; + margin: 0; + padding: 0.5em 0; + } +#cloudError > span { + font-size: x-small; } #cloudWidget > #cloudCog { cursor: pointer; diff --git a/src/js/cloud-ui.js b/src/js/cloud-ui.js index fc3a596da..45a1f73a0 100644 --- a/src/js/cloud-ui.js +++ b/src/js/cloud-ui.js @@ -1,7 +1,7 @@ /******************************************************************************* uBlock Origin - a browser extension to block requests. - Copyright (C) 2015-2016 Raymond Hill + Copyright (C) 2015-2017 Raymond Hill This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,7 +54,7 @@ var messaging = vAPI.messaging; /******************************************************************************/ var onCloudDataReceived = function(entry) { - if ( typeof entry !== 'object' || entry === null ) { + if ( entry instanceof Object === false ) { return; } @@ -106,7 +106,15 @@ var pushData = function() { datakey: self.cloud.datakey, data: self.cloud.onPush() }, - fetchCloudData + function(error) { + var failed = typeof error === 'string'; + document.getElementById('cloudPush') + .classList + .toggle('error', failed); + document.querySelector('#cloudError > span') + .textContent = failed ? error : ''; + fetchCloudData(); + } ); }; @@ -149,7 +157,7 @@ var closeOptions = function(ev) { var submitOptions = function() { var onOptions = function(options) { - if ( typeof options !== 'object' || options === null ) { + if ( options instanceof Object === false ) { return; } self.cloud.options = options;