From 0852b56ce4c0760171194794fce14cb29b433e47 Mon Sep 17 00:00:00 2001 From: eight Date: Tue, 19 Sep 2017 08:23:47 +0800 Subject: [PATCH] Fix: add set updateUrl option --- _locales/en/messages.json | 13 +++++++++++++ content/install-user-css.css | 4 ++-- content/install-user-css.js | 36 +++++++++++++++++++++++++++++++++--- 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index e63e9513..df58ec97 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -405,6 +405,19 @@ "message": "Install update", "description": "Label for the button to install an update for a single style" }, + "installUpdateFrom": { + "message": "Currently the style is updated from $url$", + "description": "Label to describe where the style gets update", + "placeholders": { + "url": { + "content": "$1" + } + } + }, + "installUpdateFromLabel": { + "message": "Install update from this URL", + "description": "Label for the checkbox to save current URL for update check" + }, "license": { "message": "License", "description": "Label for the license" diff --git a/content/install-user-css.css b/content/install-user-css.css index 25d47e76..e6f41a3f 100644 --- a/content/install-user-css.css +++ b/content/install-user-css.css @@ -49,7 +49,7 @@ h1 small { margin: 15px 0; } -.live-reload { +.actions label { width: fit-content; width: -moz-fit-content; display: flex; @@ -57,7 +57,7 @@ h1 small { margin: 0.5em 0; } -.live-reload input { +.actions label input { margin: 0 0.5em 0 0; } diff --git a/content/install-user-css.js b/content/install-user-css.js index d404a880..3936accd 100644 --- a/content/install-user-css.js +++ b/content/install-user-css.js @@ -7,8 +7,7 @@ let pendingResource; function install(style) { const request = Object.assign(style, { method: 'saveUsercss', - reason: 'update', - updateUrl: location.protocol === 'file:' ? null : location.href + reason: 'update' }); return runtimeSend(request) .then(result => { @@ -17,6 +16,9 @@ function install(style) { $('button.install').textContent = 'Installed'; $('button.install').disabled = true; $('button.install').classList.add('installed'); + $('.set-update-url').disabled = true; + $('.set-update-url-label').title = result.updateUrl ? + t('installUpdateFrom', result.updateUrl) : ''; window.dispatchEvent(new CustomEvent('installed', {detail: result})); }) .catch(err => { @@ -76,6 +78,21 @@ function initInstallPage({style, dup}, sourceLoader) { install(style); } }; + if (dup && dup.updateUrl === location.href) { + $('.set-update-url').checked = true; + // there is no way to "unset" updateUrl, you can only overwrite it. + $('.set-update-url').disabled = true; + } else if (!dup && location.protocol !== 'file:') { + $('.set-update-url').checked = true; + style.updateUrl = location.href; + } + $('.set-update-url').onchange = e => { + if (e.target.checked) { + style.updateUrl = location.href; + } else { + delete style.updateUrl; + } + }; if (location.protocol === 'file:') { initLiveReload(sourceLoader); @@ -85,7 +102,20 @@ function initInstallPage({style, dup}, sourceLoader) { return $element({className: 'container', appendChild: [ $element({className: 'header', appendChild: [ $element({className: 'actions', appendChild: [ - $element({tag: 'button', className: 'install', textContent: installButtonLabel()}) + $element({tag: 'button', className: 'install', textContent: installButtonLabel()}), + $element({ + tag: 'label', + title: dup && dup.updateUrl && t('installUpdateFrom', dup.updateUrl) || '', + className: 'set-update-url-label', + appendChild: [ + $element({ + tag: 'input', + type: 'checkbox', + className: 'set-update-url' + }), + $element({tag: 'span', textContent: t('installUpdateFromLabel')}) + ] + }) ]}), $element({tag: 'h1', appendChild: [ data.name,