saveAs dialog not triggered when invoked from menu

This commit is contained in:
Alex Adam 2018-03-21 20:40:51 +02:00
parent 9237935f69
commit 4d14fd5baf
3 changed files with 28 additions and 29 deletions

View file

@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "__MSG_extName__",
"version": "1.3.1",
"version": "1.3.2",
"default_locale": "en",
"author": "Alex Adam",
"homepage_url": "https://github.com/alexadam/save-as-ebook",
@ -30,7 +30,8 @@
"notifications",
"http://*/*",
"https://*/*",
"<all_urls>"
"<all_urls>",
"downloads"
],
"commands": {
"save-page": {

View file

@ -221,7 +221,7 @@ function sendMessage(tabId, action, justAddToBuffer, appliedStyles) {
window.close();
}
if (!justAddToBuffer) {
buildEbook([response]);
buildEbook([response], true);
} else {
getEbookPages(function (allPages) {
allPages.push(response);

View file

@ -32,12 +32,12 @@ function buildEbookFromChapters() {
})
}
function buildEbook(allPages) {
_buildEbook(allPages);
function buildEbook(allPages, fromMenu=false) {
_buildEbook(allPages, fromMenu);
}
// http://ebooks.stackexchange.com/questions/1183/what-is-the-minimum-required-content-for-a-valid-epub
function _buildEbook(allPages) {
function _buildEbook(allPages, fromMenu=false) {
allPages = allPages.filter(function(page) {
return page !== null;
});
@ -179,27 +179,22 @@ function _buildEbook(allPages) {
var done = false;
// FIXME
// var saveData = (function () {
// // alert('in save data')
// var a = document.createElement("a");
// document.body.appendChild(a);
// a.style = "display: none";
// return function (data, fileName) {
// var blob = new Blob([data], {type: "octet/stream"}),
// url = window.URL.createObjectURL(blob);
// // alert(url)
// // console.log(url);
//
// // blob:chrome-extension://odnciljldfihdbbpbpdeehpejonicnmh/12789e3f-4ee2-4287-8203-69bc719c2ce8
// // blob:https://uk.godaddy.com/d9cbd1a4-427d-4e55-a30a-80b9bea6547a
// a.href = url;
// a.download = fileName;
// a.click();
// window.URL.revokeObjectURL(url);
// };
// }());
var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
var wURL = window.URL || window.mozURL;
var blob = new Blob([data], {type: "application/epub+zip"}),
url = wURL.createObjectURL(blob);
chrome.downloads.download({
url: url,
filename: fileName
});
};
}());
zip.generateAsync({
type: "blob"
@ -207,11 +202,14 @@ function _buildEbook(allPages) {
.then(function(content) {
done = true;
console.log("done !");
saveAs(content, ebookFileName);
// FIXME
// saveData(content, ebookFileName);
if (!fromMenu) {
saveAs(content, ebookFileName);
} else {
saveData(content, ebookFileName);
}
});
// FIXME - remove or fix?
setTimeout(function() {
if (done) {
return;