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": {
 | 
			
		||||
    "message": "Stylus doesn't work on pages like this.",
 | 
			
		||||
    "description": "Note in the toolbar pop-up when on a URL Stylus can't affect"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										70
									
								
								edit/edit.js
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								edit/edit.js
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -501,7 +501,7 @@ window.onbeforeunload = () => {
 | 
			
		|||
    rememberWindowSize();
 | 
			
		||||
  }
 | 
			
		||||
  document.activeElement.blur();
 | 
			
		||||
  if ((!editor && isCleanGlobal()) || (editor && !editor.isDirty())) {
 | 
			
		||||
  if (isClean()) {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
  updateLintReportIfEnabled(null, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -509,6 +509,14 @@ window.onbeforeunload = () => {
 | 
			
		|||
  return t('styleChangesNotSaved');
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
function isClean() {
 | 
			
		||||
  if (editor) {
 | 
			
		||||
    return !editor.isDirty();
 | 
			
		||||
  } else {
 | 
			
		||||
    return isCleanGlobal();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function addAppliesTo(list, name, value) {
 | 
			
		||||
  const showingEverything = $('.applies-to-everything', list) !== null;
 | 
			
		||||
  // blow away 'Everything' if it's there
 | 
			
		||||
| 
						 | 
				
			
			@ -1218,7 +1226,12 @@ function init() {
 | 
			
		|||
  getStyle().then(style => {
 | 
			
		||||
    styleId = style.id;
 | 
			
		||||
    sessionStorage.justEditedStyleId = styleId;
 | 
			
		||||
    initWithStyle({style});
 | 
			
		||||
 | 
			
		||||
    if (!isUsercss(style)) {
 | 
			
		||||
      initWithSectionStyle({style});
 | 
			
		||||
    } else {
 | 
			
		||||
      editor = createSourceEditor(style);
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  function getStyle() {
 | 
			
		||||
| 
						 | 
				
			
			@ -1263,32 +1276,14 @@ function setStyleMeta(style) {
 | 
			
		|||
  $('#url').href = style.url || '';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function initWithStyle(request) {
 | 
			
		||||
  if (!isUsercss()) {
 | 
			
		||||
    initWithSectionStyle(request);
 | 
			
		||||
    return;
 | 
			
		||||
function isUsercss(style) {
 | 
			
		||||
  if (style.usercssData) {
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  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;
 | 
			
		||||
    }
 | 
			
		||||
    if (!request.style.id && prefs.get('newStyleFormat') === 'usercss') {
 | 
			
		||||
      return true;
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
  if (!style.id && prefs.get('newStyleFormat') === 'usercss') {
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function initWithSectionStyle({style, codeIsUpdated}) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1838,18 +1833,35 @@ function getParams() {
 | 
			
		|||
 | 
			
		||||
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) {
 | 
			
		||||
  switch (request.method) {
 | 
			
		||||
    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) {
 | 
			
		||||
          // the code-less style came from notifyAllTabs
 | 
			
		||||
          onBackgroundReady().then(() => {
 | 
			
		||||
            request.style = BG.cachedStyles.byId.get(request.style.id);
 | 
			
		||||
            initWithStyle(request);
 | 
			
		||||
            replaceStyle(request);
 | 
			
		||||
          });
 | 
			
		||||
        } else {
 | 
			
		||||
          initWithStyle(request);
 | 
			
		||||
          replaceStyle(request);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user