Fix: update progress
This commit is contained in:
parent
a15493bfb9
commit
f305719db3
|
@ -19,10 +19,18 @@ var updater = {
|
||||||
SAME_VERSION: 'up-to-date: version is unchanged',
|
SAME_VERSION: 'up-to-date: version is unchanged',
|
||||||
ERROR_MD5: 'error: MD5 is invalid',
|
ERROR_MD5: 'error: MD5 is invalid',
|
||||||
ERROR_JSON: 'error: JSON is invalid',
|
ERROR_JSON: 'error: JSON is invalid',
|
||||||
ERROR_VERSION: 'error: version is invalid',
|
ERROR_VERSION: 'error: version is older than installed style',
|
||||||
|
|
||||||
lastUpdateTime: parseInt(localStorage.lastUpdateTime) || Date.now(),
|
lastUpdateTime: parseInt(localStorage.lastUpdateTime) || Date.now(),
|
||||||
|
|
||||||
|
isSame(code) {
|
||||||
|
return code === updater.SAME_MD5 || code === updater.SAME_CODE || code === updater.SAME_VERSION;
|
||||||
|
},
|
||||||
|
|
||||||
|
isEdited(code) {
|
||||||
|
return code === updater.EDITED || code === updater.MAYBE_EDITED;
|
||||||
|
},
|
||||||
|
|
||||||
checkAllStyles({observer = () => {}, save = true, ignoreDigest} = {}) {
|
checkAllStyles({observer = () => {}, save = true, ignoreDigest} = {}) {
|
||||||
updater.resetInterval();
|
updater.resetInterval();
|
||||||
updater.checkAllStyles.running = true;
|
updater.checkAllStyles.running = true;
|
||||||
|
@ -72,11 +80,12 @@ var updater = {
|
||||||
});
|
});
|
||||||
|
|
||||||
function checkIfEdited(digest) {
|
function checkIfEdited(digest) {
|
||||||
if (style.usercss) {
|
if (ignoreDigest) {
|
||||||
// FIXME: remove this after we can calculate digest from style.source
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!ignoreDigest && style.originalDigest && style.originalDigest !== digest) {
|
if (style.usercss && style.edited) {
|
||||||
|
return Promise.reject(updater.EDITED);
|
||||||
|
} else if (style.originalDigest && style.originalDigest !== digest) {
|
||||||
return Promise.reject(updater.EDITED);
|
return Promise.reject(updater.EDITED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,34 +106,33 @@ var updater = {
|
||||||
function maybeUpdateUsercss() {
|
function maybeUpdateUsercss() {
|
||||||
return download(style.updateUrl).then(text => {
|
return download(style.updateUrl).then(text => {
|
||||||
const json = usercss.buildMeta(text);
|
const json = usercss.buildMeta(text);
|
||||||
if (!json.version) {
|
// re-install is invalid in a soft upgrade
|
||||||
|
if (semverCompare(style.version, json.version) === 0 && !ignoreDigest) {
|
||||||
|
return Promise.reject(updater.SAME_VERSION);
|
||||||
|
}
|
||||||
|
// downgrade is always invalid
|
||||||
|
if (semverCompare(style.version, json.version) > 0) {
|
||||||
return Promise.reject(updater.ERROR_VERSION);
|
return Promise.reject(updater.ERROR_VERSION);
|
||||||
}
|
}
|
||||||
if (style.version) {
|
|
||||||
if (semverCompare(style.version, json.version) === 0) {
|
|
||||||
return Promise.reject(updater.SAME_VERSION);
|
|
||||||
}
|
|
||||||
if (semverCompare(style.version, json.version) > 0) {
|
|
||||||
return Promise.reject(updater.ERROR_VERSION);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
json.id = style.id;
|
|
||||||
return json;
|
return json;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function maybeSave(json) {
|
function maybeSave(json) {
|
||||||
if (!styleJSONseemsValid(json)) {
|
|
||||||
return Promise.reject(updater.ERROR_JSON);
|
|
||||||
}
|
|
||||||
json.id = style.id;
|
json.id = style.id;
|
||||||
if (styleSectionsEqual(json, style)) {
|
// no need to compare section code for usercss, they are built dynamically
|
||||||
// JSONs may have different order of items even if sections are effectively equal
|
if (!json.usercss) {
|
||||||
// so we'll update the digest anyway
|
if (!styleJSONseemsValid(json)) {
|
||||||
saveStyle(Object.assign(json, {reason: 'update-digest'}));
|
return Promise.reject(updater.ERROR_JSON);
|
||||||
return Promise.reject(updater.SAME_CODE);
|
}
|
||||||
} else if (!style.originalDigest && !ignoreDigest) {
|
if (styleSectionsEqual(json, style)) {
|
||||||
return Promise.reject(updater.MAYBE_EDITED);
|
// JSONs may have different order of items even if sections are effectively equal
|
||||||
|
// so we'll update the digest anyway
|
||||||
|
saveStyle(Object.assign(json, {reason: 'update-digest'}));
|
||||||
|
return Promise.reject(updater.SAME_CODE);
|
||||||
|
} else if (!style.originalDigest && !ignoreDigest) {
|
||||||
|
return Promise.reject(updater.MAYBE_EDITED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return !save ? json :
|
return !save ? json :
|
||||||
saveStyle(Object.assign(json, {
|
saveStyle(Object.assign(json, {
|
||||||
|
|
|
@ -111,6 +111,7 @@ function createSourceEditor(style) {
|
||||||
reason: 'editSave',
|
reason: 'editSave',
|
||||||
id: style.id,
|
id: style.id,
|
||||||
enabled: style.enabled,
|
enabled: style.enabled,
|
||||||
|
edited: dirty.has('source'),
|
||||||
source: style.source
|
source: style.source
|
||||||
};
|
};
|
||||||
return onBackgroundReady().then(() => BG.saveUsercss(req))
|
return onBackgroundReady().then(() => BG.saveUsercss(req))
|
||||||
|
|
|
@ -86,5 +86,9 @@ function dirtyReporter() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return wrap({add, remove, modify, clear, isDirty, onChange});
|
function has(key) {
|
||||||
|
return dirty.has(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
return wrap({add, remove, modify, clear, isDirty, onChange, has});
|
||||||
}
|
}
|
||||||
|
|
|
@ -173,6 +173,7 @@ var usercss = (function () {
|
||||||
usercss: true,
|
usercss: true,
|
||||||
version: null,
|
version: null,
|
||||||
source: source,
|
source: source,
|
||||||
|
edited: false,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
sections: [],
|
sections: [],
|
||||||
vars: {},
|
vars: {},
|
||||||
|
|
|
@ -114,8 +114,8 @@ function reportUpdateState(state, style, details) {
|
||||||
if (entry.classList.contains('can-update')) {
|
if (entry.classList.contains('can-update')) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
const same = details === BG.updater.SAME_MD5 || details === BG.updater.SAME_CODE;
|
const same = BG.updater.isSame(details);
|
||||||
const edited = details === BG.updater.EDITED || details === BG.updater.MAYBE_EDITED;
|
const edited = BG.updater.isEdited(details);
|
||||||
entry.dataset.details = details;
|
entry.dataset.details = details;
|
||||||
if (!details) {
|
if (!details) {
|
||||||
details = t('updateCheckFailServerUnreachable');
|
details = t('updateCheckFailServerUnreachable');
|
||||||
|
|
Loading…
Reference in New Issue
Block a user