diff options
Diffstat (limited to 'src/js/1p-filters.js')
-rw-r--r-- | src/js/1p-filters.js | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/js/1p-filters.js b/src/js/1p-filters.js index 6182e9c..358f023 100644 --- a/src/js/1p-filters.js +++ b/src/js/1p-filters.js @@ -19,7 +19,7 @@ Home: https://github.com/gorhill/uBlock */ -/* global vAPI, uDom */ +/* global vAPI, uDom, uBlockDashboard */ /******************************************************************************/ @@ -40,8 +40,9 @@ var messager = vAPI.messaging.channel('1p-filters.js'); // This is to give a visual hint that the content of user blacklist has changed. function userFiltersChanged() { - uDom.nodeFromId('userFiltersApply').disabled = - uDom('#userFilters').val().trim() === cachedUserFilters; + var changed = uDom.nodeFromId('userFilters').value.trim() !== cachedUserFilters; + uDom.nodeFromId('userFiltersApply').disabled = !changed; + uDom.nodeFromId('userFiltersRevert').disabled = !changed; } /******************************************************************************/ @@ -53,6 +54,7 @@ function renderUserFilters() { } cachedUserFilters = details.content.trim(); uDom.nodeFromId('userFilters').value = details.content; + userFiltersChanged(); }; messager.send({ what: 'readUserFilters' }, onRead); } @@ -133,14 +135,14 @@ var exportUserFiltersToFile = function() { .replace('{{datetime}}', now.toLocaleString()) .replace(/ +/g, '_'); vAPI.download({ - 'url': 'data:text/plain;charset=utf-8,' + encodeURIComponent(val), + 'url': 'data:text/plain;charset=utf-8,' + encodeURIComponent(val + '\n'), 'filename': filename }); }; /******************************************************************************/ -var userFiltersApplyHandler = function() { +var applyChanges = function() { var onWritten = function(details) { if ( details.error ) { return; @@ -156,17 +158,26 @@ var userFiltersApplyHandler = function() { messager.send(request, onWritten); }; +var revertChanges = function() { + uDom.nodeFromId('userFilters').value = cachedUserFilters + '\n'; + userFiltersChanged(); +}; + /******************************************************************************/ var getCloudData = function() { return uDom.nodeFromId('userFilters').value; }; -var setCloudData = function(data) { +var setCloudData = function(data, append) { if ( typeof data !== 'string' ) { return; } - uDom.nodeFromId('userFilters').value = data; + var textarea = uDom.nodeFromId('userFilters'); + if ( append ) { + data = uBlockDashboard.mergeNewLines(textarea.value, data); + } + textarea.value = data; userFiltersChanged(); }; @@ -180,7 +191,8 @@ uDom('#importUserFiltersFromFile').on('click', startImportFilePicker); uDom('#importFilePicker').on('change', handleImportFilePicker); uDom('#exportUserFiltersToFile').on('click', exportUserFiltersToFile); uDom('#userFilters').on('input', userFiltersChanged); -uDom('#userFiltersApply').on('click', userFiltersApplyHandler); +uDom('#userFiltersApply').on('click', applyChanges); +uDom('#userFiltersRevert').on('click', revertChanges); renderUserFilters(); |