aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/1p-filters.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/1p-filters.js')
-rw-r--r--src/js/1p-filters.js28
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();