save-as-ebook/web-extension/background.js

80 lines
2.7 KiB
JavaScript

// var GLOBAL_CURRENT_STYLE = null;
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.type === 'get') {
chrome.storage.local.get('allPages', function (data) {
if (!data || !data.allPages) {
sendResponse({allPages: []});
}
sendResponse({allPages: data.allPages});
})
}
if (request.type === 'set') {
chrome.storage.local.set({'allPages': request.pages});
}
if (request.type === 'remove') {
chrome.storage.local.remove('allPages');
chrome.storage.local.remove('title');
}
if (request.type === 'get title') {
chrome.storage.local.get('title', function (data) {
if (!data || !data.title || data.title.trim().length === 0) {
sendResponse({title: 'eBook'});
} else {
sendResponse({title: data.title});
}
})
}
if (request.type === 'set title') {
chrome.storage.local.set({'title': request.title});
}
if (request.type === 'get styles') {
chrome.storage.local.get('styles', function (data) {
if (!data || !data.styles) {
// TODO move defaultStyles in a different file/location ?
var defaultStyles = [
{
title: 'Reddit Comments',
url: 'reddit\.com\/r\/[^\/]+\/comments',
style: `.class {
display: none;
}
`
}
];
sendResponse({styles: defaultStyles});
} else {
sendResponse({styles: data.styles});
}
});
}
if (request.type === 'set styles') {
chrome.storage.local.set({'styles': request.styles});
}
if (request.type === 'get current style') {
chrome.storage.local.get('currentStyle', function (data) {
if (!data || !data.currentStyle) {
sendResponse({currentStyle: 0});
} else {
sendResponse({currentStyle: data.currentStyle});
}
});
}
if (request.type === 'set current style') {
chrome.storage.local.set({'currentStyle': request.currentStyle});
}
if (request.type === 'get include style') {
chrome.storage.local.get('includeStyle', function (data) {
if (!data) {
sendResponse({includeStyle: true});
} else {
sendResponse({includeStyle: data.includeStyle});
}
});
}
if (request.type === 'set include style') {
chrome.storage.local.set({'includeStyle': request.includeStyle});
}
return true;
});