Delete from sync cache when deleting object
This commit is contained in:
parent
b5b99672db
commit
51253fb933
|
@ -1154,7 +1154,7 @@ Zotero.DataObject.prototype.erase = Zotero.Promise.coroutine(function* (options)
|
|||
Zotero.DB.requireTransaction();
|
||||
Zotero.DataObject.prototype._initErase.call(this, env);
|
||||
yield this._eraseData(env);
|
||||
Zotero.DataObject.prototype._finalizeErase.call(this, env);
|
||||
yield Zotero.DataObject.prototype._finalizeErase.call(this, env);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1176,7 +1176,10 @@ Zotero.DataObject.prototype._initErase = function (env) {
|
|||
}
|
||||
};
|
||||
|
||||
Zotero.DataObject.prototype._finalizeErase = function (env) {
|
||||
Zotero.DataObject.prototype._finalizeErase = Zotero.Promise.coroutine(function* (env) {
|
||||
// Delete versions from sync cache
|
||||
yield Zotero.Sync.Data.Local.deleteCacheObject(this.objectType, this._libraryID, this._key);
|
||||
|
||||
Zotero.DB.addCurrentCallback("commit", function () {
|
||||
this.ObjectsClass.unload(env.deletedObjectIDs || this.id);
|
||||
}.bind(this));
|
||||
|
@ -1189,7 +1192,7 @@ Zotero.DataObject.prototype._finalizeErase = function (env) {
|
|||
env.notifierData
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Zotero.DataObject.prototype.toResponseJSON = Zotero.Promise.coroutine(function* (options) {
|
||||
|
|
|
@ -492,6 +492,14 @@ Zotero.Sync.Data.Local = {
|
|||
}),
|
||||
|
||||
|
||||
deleteCacheObject: function (objectType, libraryID, key) {
|
||||
var sql = "DELETE FROM syncCache WHERE libraryID=? AND key=? "
|
||||
+ "AND syncObjectTypeID IN (SELECT syncObjectTypeID FROM "
|
||||
+ "syncObjectTypes WHERE name=?)";;
|
||||
return Zotero.DB.queryAsync(sql, [libraryID, key, objectType]);
|
||||
},
|
||||
|
||||
|
||||
resolveConflicts: function (conflicts) {
|
||||
var io = {
|
||||
dataIn: {
|
||||
|
|
|
@ -295,6 +295,21 @@ describe("Zotero.DataObject", function() {
|
|||
Zotero.Notifier.unregisterObserver(id);
|
||||
}
|
||||
})
|
||||
|
||||
it("should delete object versions from sync cache", function* () {
|
||||
for (let type of types) {
|
||||
let obj = yield createDataObject(type);
|
||||
let libraryID = obj.libraryID;
|
||||
let key = obj.key;
|
||||
let json = yield obj.toJSON();
|
||||
yield Zotero.Sync.Data.Local.saveCacheObjects(type, libraryID, [json]);
|
||||
yield obj.eraseTx();
|
||||
let versions = yield Zotero.Sync.Data.Local.getCacheObjectVersions(
|
||||
type, libraryID, key
|
||||
);
|
||||
assert.lengthOf(versions, 0);
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
describe("#updateVersion()", function() {
|
||||
|
|
|
@ -204,7 +204,7 @@ describe("Zotero.Sync.Data.Local", function() {
|
|||
var type = 'item';
|
||||
var objectsClass = Zotero.DataObjectUtilities.getObjectsClassForObjectType(type);
|
||||
|
||||
// Create object in cache
|
||||
// Create object, generate JSON, and delete
|
||||
var obj = yield createDataObject(type, { version: 10 });
|
||||
var jsonData = yield obj.toJSON();
|
||||
var key = jsonData.key = obj.key;
|
||||
|
@ -214,16 +214,14 @@ describe("Zotero.Sync.Data.Local", function() {
|
|||
version: jsonData.version,
|
||||
data: jsonData
|
||||
};
|
||||
yield Zotero.Sync.Data.Local.saveCacheObjects(type, libraryID, [json]);
|
||||
// Delete object locally
|
||||
yield obj.eraseTx();
|
||||
|
||||
// Create new version in cache, simulating a download
|
||||
json.version = jsonData.version = 15;
|
||||
jsonData.title = Zotero.Utilities.randomString();
|
||||
yield Zotero.Sync.Data.Local.saveCacheObjects(type, libraryID, [json]);
|
||||
|
||||
// Delete object locally
|
||||
yield obj.eraseTx();
|
||||
|
||||
waitForWindow('chrome://zotero/content/merge.xul', function (dialog) {
|
||||
var doc = dialog.document;
|
||||
var wizard = doc.documentElement;
|
||||
|
@ -243,13 +241,13 @@ describe("Zotero.Sync.Data.Local", function() {
|
|||
assert.isFalse(obj);
|
||||
})
|
||||
|
||||
it("should handle restore locally deleted item", function* () {
|
||||
it("should restore locally deleted item", function* () {
|
||||
var libraryID = Zotero.Libraries.userLibraryID;
|
||||
|
||||
var type = 'item';
|
||||
var objectsClass = Zotero.DataObjectUtilities.getObjectsClassForObjectType(type);
|
||||
|
||||
// Create object in cache
|
||||
// Create object, generate JSON, and delete
|
||||
var obj = yield createDataObject(type, { version: 10 });
|
||||
var jsonData = yield obj.toJSON();
|
||||
var key = jsonData.key = obj.key;
|
||||
|
@ -259,16 +257,13 @@ describe("Zotero.Sync.Data.Local", function() {
|
|||
version: jsonData.version,
|
||||
data: jsonData
|
||||
};
|
||||
yield Zotero.Sync.Data.Local.saveCacheObjects(type, libraryID, [json]);
|
||||
yield obj.eraseTx();
|
||||
|
||||
// Create new version in cache, simulating a download
|
||||
json.version = jsonData.version = 15;
|
||||
jsonData.title = Zotero.Utilities.randomString();
|
||||
yield Zotero.Sync.Data.Local.saveCacheObjects(type, libraryID, [json]);
|
||||
|
||||
// Delete object locally
|
||||
yield obj.eraseTx();
|
||||
|
||||
waitForWindow('chrome://zotero/content/merge.xul', function (dialog) {
|
||||
var doc = dialog.document;
|
||||
var wizard = doc.documentElement;
|
||||
|
|
Loading…
Reference in New Issue
Block a user