From 700aa5377b838bed6bf8ed4b1c405a58137d0492 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Wed, 14 Jun 2017 02:59:43 -0400 Subject: [PATCH] Don't repeat filenames in results from WebDAV _deleteStorageFiles() --- chrome/content/zotero/xpcom/storage/webdav.js | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/chrome/content/zotero/xpcom/storage/webdav.js b/chrome/content/zotero/xpcom/storage/webdav.js index a7f0381c49..11d3c09717 100644 --- a/chrome/content/zotero/xpcom/storage/webdav.js +++ b/chrome/content/zotero/xpcom/storage/webdav.js @@ -1348,9 +1348,9 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = { */ _deleteStorageFiles: Zotero.Promise.coroutine(function* (files) { var results = { - deleted: [], - missing: [], - error: [] + deleted: new Set(), + missing: new Set(), + error: new Set() }; if (files.length == 0) { @@ -1388,7 +1388,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = { ); } catch (e) { - results.error.push(fileName); + results.error.add(fileName); throw e; } @@ -1396,11 +1396,11 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = { case 204: // IIS 5.1 and Sakai return 200 case 200: - results.deleted.push(fileName); + results.deleted.add(fileName); break; case 404: - results.missing.push(fileName); + results.missing.add(fileName); break; } @@ -1408,7 +1408,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = { var deletePropURI = this._getPropertyURIFromItemURI(deleteURI); // If we already deleted the prop file, skip it - if (!deletePropURI || results.deleted.indexOf(deletePropURI.fileName) != -1) { + if (!deletePropURI || results.deleted.has(deletePropURI.fileName)) { return; } @@ -1426,11 +1426,11 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = { case 204: // IIS 5.1 and Sakai return 200 case 200: - results.deleted.push(fileName); + results.deleted.add(fileName); break; case 404: - results.missing.push(fileName); + results.missing.add(fileName); break; } }.bind(this))); @@ -1444,6 +1444,11 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = { onError: e => Zotero.logError(e) }); yield caller.start(funcs); + + // Convert sets back to arrays + for (let i in results) { + results[i] = Array.from(results[i]); + } return results; }),