Add: confirmation to replace dirty style
This commit is contained in:
parent
228057d231
commit
1a6f9dfcaa
|
@ -824,6 +824,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"styleUpdateDiscardChanges": {
|
||||||
|
"message": "The style is changed outside of the editor. Would you like to reload the style?",
|
||||||
|
"description": "Confirmation to update the style in the editor"
|
||||||
|
},
|
||||||
"stylusUnavailableForURL": {
|
"stylusUnavailableForURL": {
|
||||||
"message": "Stylus doesn't work on pages like this.",
|
"message": "Stylus doesn't work on pages like this.",
|
||||||
"description": "Note in the toolbar pop-up when on a URL Stylus can't affect"
|
"description": "Note in the toolbar pop-up when on a URL Stylus can't affect"
|
||||||
|
|
64
edit/edit.js
64
edit/edit.js
|
@ -501,7 +501,7 @@ window.onbeforeunload = () => {
|
||||||
rememberWindowSize();
|
rememberWindowSize();
|
||||||
}
|
}
|
||||||
document.activeElement.blur();
|
document.activeElement.blur();
|
||||||
if ((!editor && isCleanGlobal()) || (editor && !editor.isDirty())) {
|
if (isClean()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
updateLintReportIfEnabled(null, 0);
|
updateLintReportIfEnabled(null, 0);
|
||||||
|
@ -509,6 +509,14 @@ window.onbeforeunload = () => {
|
||||||
return t('styleChangesNotSaved');
|
return t('styleChangesNotSaved');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function isClean() {
|
||||||
|
if (editor) {
|
||||||
|
return !editor.isDirty();
|
||||||
|
} else {
|
||||||
|
return isCleanGlobal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function addAppliesTo(list, name, value) {
|
function addAppliesTo(list, name, value) {
|
||||||
const showingEverything = $('.applies-to-everything', list) !== null;
|
const showingEverything = $('.applies-to-everything', list) !== null;
|
||||||
// blow away 'Everything' if it's there
|
// blow away 'Everything' if it's there
|
||||||
|
@ -1218,7 +1226,12 @@ function init() {
|
||||||
getStyle().then(style => {
|
getStyle().then(style => {
|
||||||
styleId = style.id;
|
styleId = style.id;
|
||||||
sessionStorage.justEditedStyleId = styleId;
|
sessionStorage.justEditedStyleId = styleId;
|
||||||
initWithStyle({style});
|
|
||||||
|
if (!isUsercss(style)) {
|
||||||
|
initWithSectionStyle({style});
|
||||||
|
} else {
|
||||||
|
editor = createSourceEditor(style);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function getStyle() {
|
function getStyle() {
|
||||||
|
@ -1263,32 +1276,14 @@ function setStyleMeta(style) {
|
||||||
$('#url').href = style.url || '';
|
$('#url').href = style.url || '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function initWithStyle(request) {
|
function isUsercss(style) {
|
||||||
if (!isUsercss()) {
|
if (style.usercssData) {
|
||||||
initWithSectionStyle(request);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!editor) {
|
|
||||||
editor = createSourceEditor(request.style);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (request.codeIsUpdated === false) {
|
|
||||||
editor.updateStyleMeta(request.style);
|
|
||||||
} else {
|
|
||||||
editor.replaceStyle(request.style);
|
|
||||||
}
|
|
||||||
|
|
||||||
function isUsercss() {
|
|
||||||
if (request.style.usercssData) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!request.style.id && prefs.get('newStyleFormat') === 'usercss') {
|
if (!style.id && prefs.get('newStyleFormat') === 'usercss') {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function initWithSectionStyle({style, codeIsUpdated}) {
|
function initWithSectionStyle({style, codeIsUpdated}) {
|
||||||
|
@ -1838,18 +1833,35 @@ function getParams() {
|
||||||
|
|
||||||
chrome.runtime.onMessage.addListener(onRuntimeMessage);
|
chrome.runtime.onMessage.addListener(onRuntimeMessage);
|
||||||
|
|
||||||
|
function replaceStyle(request) {
|
||||||
|
if (!isClean() && !confirm(t('styleUpdateDiscardChanges'))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isUsercss(request.style)) {
|
||||||
|
initWithSectionStyle(request);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request.codeIsUpdated === false) {
|
||||||
|
editor.updateStyleMeta(request.style);
|
||||||
|
} else {
|
||||||
|
editor.replaceStyle(request.style);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function onRuntimeMessage(request) {
|
function onRuntimeMessage(request) {
|
||||||
switch (request.method) {
|
switch (request.method) {
|
||||||
case 'styleUpdated':
|
case 'styleUpdated':
|
||||||
if (styleId && styleId === request.style.id && request.reason !== 'editSave') {
|
if (styleId && styleId === request.style.id && request.reason !== 'editSave' && request.reason !== 'config') {
|
||||||
if ((request.style.sections[0] || {}).code === null) {
|
if ((request.style.sections[0] || {}).code === null) {
|
||||||
// the code-less style came from notifyAllTabs
|
// the code-less style came from notifyAllTabs
|
||||||
onBackgroundReady().then(() => {
|
onBackgroundReady().then(() => {
|
||||||
request.style = BG.cachedStyles.byId.get(request.style.id);
|
request.style = BG.cachedStyles.byId.get(request.style.id);
|
||||||
initWithStyle(request);
|
replaceStyle(request);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
initWithStyle(request);
|
replaceStyle(request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user