diff --git a/chrome/content/zotero/xpcom/connector/server_connector.js b/chrome/content/zotero/xpcom/connector/server_connector.js index 24774b7b50..c26b6f7742 100644 --- a/chrome/content/zotero/xpcom/connector/server_connector.js +++ b/chrome/content/zotero/xpcom/connector/server_connector.js @@ -798,47 +798,33 @@ Zotero.Server.Connector.SaveSnapshot.prototype = { return item; } - return new Zotero.Promise((resolve, reject) => { - Zotero.Server.Connector.Data[data.url] = "" + data.html + ""; - Zotero.HTTP.loadDocuments( - ["zotero://connector/" + encodeURIComponent(data.url)], - async function (doc) { - delete Zotero.Server.Connector.Data[data.url]; - - try { - // Create new webpage item - let item = new Zotero.Item("webpage"); - item.libraryID = libraryID; - item.setField("title", doc.title); - item.setField("url", data.url); - item.setField("accessDate", "CURRENT_TIMESTAMP"); - if (collection) { - item.setCollections([collection.id]); - } - var itemID = await item.saveTx(); - - // Save snapshot - if (library.filesEditable && !data.skipSnapshot) { - await Zotero.Attachments.importFromDocument({ - document: doc, - parentItemID: itemID - }); - } - - resolve(item); - } - catch (e) { - reject(e); - } - }, - null, - null, - false, - cookieSandbox - ); - }); + var parser = Components.classes["@mozilla.org/xmlextras/domparser;1"] + .createInstance(Components.interfaces.nsIDOMParser); + var doc = parser.parseFromString(`${data.html}`, 'text/html'); + doc = Zotero.HTTP.wrapDocument(doc, data.url); + + // Create new webpage item + let item = new Zotero.Item("webpage"); + item.libraryID = libraryID; + item.setField("title", doc.title); + item.setField("url", data.url); + item.setField("accessDate", "CURRENT_TIMESTAMP"); + if (collection) { + item.setCollections([collection.id]); + } + var itemID = await item.saveTx(); + + // Save snapshot + if (library.filesEditable && !data.skipSnapshot) { + await Zotero.Attachments.importFromDocument({ + document: doc, + parentItemID: itemID + }); + } + + return item; } -} +}; /** * Handle item selection diff --git a/chrome/content/zotero/xpcom/data/feedItem.js b/chrome/content/zotero/xpcom/data/feedItem.js index dfdc236c86..4400586884 100644 --- a/chrome/content/zotero/xpcom/data/feedItem.js +++ b/chrome/content/zotero/xpcom/data/feedItem.js @@ -215,7 +215,7 @@ Zotero.FeedItem.prototype.translate = Zotero.Promise.coroutine(function* (librar } let deferred = Zotero.Promise.defer(); - let error = function(e) { Zotero.debug(e, 1); deferred.reject(e); }; + let error = function(e) { }; let translate = new Zotero.Translate.Web(); var win = Services.wm.getMostRecentWindow("navigator:browser"); let progressWindow = win.ZoteroPane.progressWindow; @@ -234,13 +234,12 @@ Zotero.FeedItem.prototype.translate = Zotero.Promise.coroutine(function* (librar } // Load document - let hiddenBrowser = Zotero.HTTP.loadDocuments( - this.getField('url'), - doc => deferred.resolve(doc), - () => {}, - error, - true - ); + try { + yield Zotero.HTTP.processDocuments(this.getField('url'), doc => deferred.resolve(doc)); + } catch (e) { + Zotero.debug(e, 1); + deferred.reject(e); + } let doc = yield deferred.promise; // Set translate document @@ -266,7 +265,6 @@ Zotero.FeedItem.prototype.translate = Zotero.Promise.coroutine(function* (librar if (libraryID) { let result = yield translate.translate({libraryID, collections: collectionID ? [collectionID] : false}) .then(items => items ? items[0] : false); - Zotero.Browser.deleteHiddenBrowser(hiddenBrowser); if (!result) { let item = yield this.clone(libraryID, collectionID, doc); progressWindow.Translation.itemDoneHandler()(null, null, item); @@ -285,7 +283,6 @@ Zotero.FeedItem.prototype.translate = Zotero.Promise.coroutine(function* (librar translate.translate({libraryID: false, saveAttachments: false}); let itemData = yield deferred.promise; - Zotero.Browser.deleteHiddenBrowser(hiddenBrowser); // clean itemData const deleteFields = ['attachments', 'notes', 'id', 'itemID', 'path', 'seeAlso', 'version', 'dateAdded', 'dateModified']; diff --git a/chrome/content/zotero/zoteroPane.js b/chrome/content/zotero/zoteroPane.js index 478f70a835..2e277214fe 100644 --- a/chrome/content/zotero/zoteroPane.js +++ b/chrome/content/zotero/zoteroPane.js @@ -3979,10 +3979,6 @@ var ZoteroPane = new function() * @return {Zotero.Item|false} - The saved item, or false if item can't be saved */ this.addItemFromURL = Zotero.Promise.coroutine(function* (url, itemType, saveSnapshot, row) { - if (window.content && url == window.content.document.location.href) { - return this.addItemFromPage(itemType, saveSnapshot, row); - } - url = Zotero.Utilities.resolveIntermediateURL(url); let [mimeType, hasNativeHandler] = yield Zotero.MIME.getMIMETypeFromURL(url); @@ -3997,12 +3993,12 @@ var ZoteroPane = new function() deferred.resolve(item) }); }; - var done = function () {} - var exception = function (e) { + try { + yield Zotero.HTTP.processDocuments([url], processor); + } catch (e) { Zotero.debug(e, 1); deferred.reject(e); } - Zotero.HTTP.loadDocuments([url], processor, done, exception); return deferred.promise; }