Don't repeat filenames in results from WebDAV _deleteStorageFiles()

This commit is contained in:
Dan Stillman 2017-06-14 02:59:43 -04:00
parent db6e9841db
commit 700aa5377b

View File

@ -1348,9 +1348,9 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
*/ */
_deleteStorageFiles: Zotero.Promise.coroutine(function* (files) { _deleteStorageFiles: Zotero.Promise.coroutine(function* (files) {
var results = { var results = {
deleted: [], deleted: new Set(),
missing: [], missing: new Set(),
error: [] error: new Set()
}; };
if (files.length == 0) { if (files.length == 0) {
@ -1388,7 +1388,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
); );
} }
catch (e) { catch (e) {
results.error.push(fileName); results.error.add(fileName);
throw e; throw e;
} }
@ -1396,11 +1396,11 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
case 204: case 204:
// IIS 5.1 and Sakai return 200 // IIS 5.1 and Sakai return 200
case 200: case 200:
results.deleted.push(fileName); results.deleted.add(fileName);
break; break;
case 404: case 404:
results.missing.push(fileName); results.missing.add(fileName);
break; break;
} }
@ -1408,7 +1408,7 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
var deletePropURI = this._getPropertyURIFromItemURI(deleteURI); var deletePropURI = this._getPropertyURIFromItemURI(deleteURI);
// If we already deleted the prop file, skip it // 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; return;
} }
@ -1426,11 +1426,11 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
case 204: case 204:
// IIS 5.1 and Sakai return 200 // IIS 5.1 and Sakai return 200
case 200: case 200:
results.deleted.push(fileName); results.deleted.add(fileName);
break; break;
case 404: case 404:
results.missing.push(fileName); results.missing.add(fileName);
break; break;
} }
}.bind(this))); }.bind(this)));
@ -1444,6 +1444,11 @@ Zotero.Sync.Storage.Mode.WebDAV.prototype = {
onError: e => Zotero.logError(e) onError: e => Zotero.logError(e)
}); });
yield caller.start(funcs); yield caller.start(funcs);
// Convert sets back to arrays
for (let i in results) {
results[i] = Array.from(results[i]);
}
return results; return results;
}), }),