You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-08-13 22:12:50 +02:00
Fixed deletion of synced folders
This commit is contained in:
@@ -54,244 +54,245 @@ describe('Synchronizer', function() {
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
// it('should create remote items', async (done) => {
|
it('should create remote items', async (done) => {
|
||||||
// let folder = await Folder.save({ title: "folder1" });
|
let folder = await Folder.save({ title: "folder1" });
|
||||||
// await Note.save({ title: "un", parent_id: folder.id });
|
await Note.save({ title: "un", parent_id: folder.id });
|
||||||
|
|
||||||
// let all = await allItems();
|
let all = await allItems();
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await localItemsSameAsRemote(all, expect);
|
await localItemsSameAsRemote(all, expect);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should update remote item', async (done) => {
|
it('should update remote item', async (done) => {
|
||||||
// let folder = await Folder.save({ title: "folder1" });
|
let folder = await Folder.save({ title: "folder1" });
|
||||||
// let note = await Note.save({ title: "un", parent_id: folder.id });
|
let note = await Note.save({ title: "un", parent_id: folder.id });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// await Note.save({ title: "un UPDATE", id: note.id });
|
await Note.save({ title: "un UPDATE", id: note.id });
|
||||||
|
|
||||||
// let all = await allItems();
|
let all = await allItems();
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await localItemsSameAsRemote(all, expect);
|
await localItemsSameAsRemote(all, expect);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should create local items', async (done) => {
|
it('should create local items', async (done) => {
|
||||||
// let folder = await Folder.save({ title: "folder1" });
|
let folder = await Folder.save({ title: "folder1" });
|
||||||
// await Note.save({ title: "un", parent_id: folder.id });
|
await Note.save({ title: "un", parent_id: folder.id });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(2);
|
await switchClient(2);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// let all = await allItems();
|
let all = await allItems();
|
||||||
// await localItemsSameAsRemote(all, expect);
|
await localItemsSameAsRemote(all, expect);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should update local items', async (done) => {
|
it('should update local items', async (done) => {
|
||||||
// let folder1 = await Folder.save({ title: "folder1" });
|
let folder1 = await Folder.save({ title: "folder1" });
|
||||||
// let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(2);
|
await switchClient(2);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// let note2 = await Note.load(note1.id);
|
let note2 = await Note.load(note1.id);
|
||||||
// note2.title = "Updated on client 2";
|
note2.title = "Updated on client 2";
|
||||||
// await Note.save(note2);
|
await Note.save(note2);
|
||||||
// note2 = await Note.load(note2.id);
|
note2 = await Note.load(note2.id);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(1);
|
await switchClient(1);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// let all = await allItems();
|
let all = await allItems();
|
||||||
|
|
||||||
// await localItemsSameAsRemote(all, expect);
|
await localItemsSameAsRemote(all, expect);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should resolve note conflicts', async (done) => {
|
it('should resolve note conflicts', async (done) => {
|
||||||
// let folder1 = await Folder.save({ title: "folder1" });
|
let folder1 = await Folder.save({ title: "folder1" });
|
||||||
// let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(2);
|
await switchClient(2);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// let note2 = await Note.load(note1.id);
|
let note2 = await Note.load(note1.id);
|
||||||
// note2.title = "Updated on client 2";
|
note2.title = "Updated on client 2";
|
||||||
// await Note.save(note2);
|
await Note.save(note2);
|
||||||
// note2 = await Note.load(note2.id);
|
note2 = await Note.load(note2.id);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(1);
|
await switchClient(1);
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// let note2conf = await Note.load(note1.id);
|
let note2conf = await Note.load(note1.id);
|
||||||
// note2conf.title = "Updated on client 1";
|
note2conf.title = "Updated on client 1";
|
||||||
// await Note.save(note2conf);
|
await Note.save(note2conf);
|
||||||
// note2conf = await Note.load(note1.id);
|
note2conf = await Note.load(note1.id);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// let conflictedNotes = await Note.conflictedNotes();
|
let conflictedNotes = await Note.conflictedNotes();
|
||||||
|
|
||||||
// expect(conflictedNotes.length).toBe(1);
|
expect(conflictedNotes.length).toBe(1);
|
||||||
|
|
||||||
// // Other than the id (since the conflicted note is a duplicate), and the is_conflict property
|
// Other than the id (since the conflicted note is a duplicate), and the is_conflict property
|
||||||
// // the conflicted and original note must be the same in every way, to make sure no data has been lost.
|
// the conflicted and original note must be the same in every way, to make sure no data has been lost.
|
||||||
// let conflictedNote = conflictedNotes[0];
|
let conflictedNote = conflictedNotes[0];
|
||||||
// expect(conflictedNote.id == note2conf.id).toBe(false);
|
expect(conflictedNote.id == note2conf.id).toBe(false);
|
||||||
// for (let n in conflictedNote) {
|
for (let n in conflictedNote) {
|
||||||
// if (!conflictedNote.hasOwnProperty(n)) continue;
|
if (!conflictedNote.hasOwnProperty(n)) continue;
|
||||||
// if (n == 'id' || n == 'is_conflict') continue;
|
if (n == 'id' || n == 'is_conflict') continue;
|
||||||
// expect(conflictedNote[n]).toBe(note2conf[n], 'Property: ' + n);
|
expect(conflictedNote[n]).toBe(note2conf[n], 'Property: ' + n);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// let noteUpdatedFromRemote = await Note.load(note1.id);
|
let noteUpdatedFromRemote = await Note.load(note1.id);
|
||||||
// for (let n in noteUpdatedFromRemote) {
|
for (let n in noteUpdatedFromRemote) {
|
||||||
// if (!noteUpdatedFromRemote.hasOwnProperty(n)) continue;
|
if (!noteUpdatedFromRemote.hasOwnProperty(n)) continue;
|
||||||
// if (n == 'sync_time') continue;
|
if (n == 'sync_time') continue;
|
||||||
// expect(noteUpdatedFromRemote[n]).toBe(note2[n], 'Property: ' + n);
|
expect(noteUpdatedFromRemote[n]).toBe(note2[n], 'Property: ' + n);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should resolve folders conflicts', async (done) => {
|
it('should resolve folders conflicts', async (done) => {
|
||||||
// let folder1 = await Folder.save({ title: "folder1" });
|
let folder1 = await Folder.save({ title: "folder1" });
|
||||||
// let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(2); // ----------------------------------
|
await switchClient(2); // ----------------------------------
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// let folder1_modRemote = await Folder.load(folder1.id);
|
let folder1_modRemote = await Folder.load(folder1.id);
|
||||||
// folder1_modRemote.title = "folder1 UPDATE CLIENT 2";
|
folder1_modRemote.title = "folder1 UPDATE CLIENT 2";
|
||||||
// await Folder.save(folder1_modRemote);
|
await Folder.save(folder1_modRemote);
|
||||||
// folder1_modRemote = await Folder.load(folder1_modRemote.id);
|
folder1_modRemote = await Folder.load(folder1_modRemote.id);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(1); // ----------------------------------
|
await switchClient(1); // ----------------------------------
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// let folder1_modLocal = await Folder.load(folder1.id);
|
let folder1_modLocal = await Folder.load(folder1.id);
|
||||||
// folder1_modLocal.title = "folder1 UPDATE CLIENT 1";
|
folder1_modLocal.title = "folder1 UPDATE CLIENT 1";
|
||||||
// await Folder.save(folder1_modLocal);
|
await Folder.save(folder1_modLocal);
|
||||||
// folder1_modLocal = await Folder.load(folder1.id);
|
folder1_modLocal = await Folder.load(folder1.id);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// let folder1_final = await Folder.load(folder1.id);
|
let folder1_final = await Folder.load(folder1.id);
|
||||||
// expect(folder1_final.title).toBe(folder1_modRemote.title);
|
expect(folder1_final.title).toBe(folder1_modRemote.title);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should delete remote notes', async (done) => {
|
it('should delete remote notes', async (done) => {
|
||||||
// let folder1 = await Folder.save({ title: "folder1" });
|
let folder1 = await Folder.save({ title: "folder1" });
|
||||||
// let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(2);
|
await switchClient(2);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// await Note.delete(note1.id);
|
await Note.delete(note1.id);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// let files = await fileApi().list();
|
let files = await fileApi().list();
|
||||||
// files = files.items;
|
files = files.items;
|
||||||
|
|
||||||
// expect(files.length).toBe(1);
|
expect(files.length).toBe(1);
|
||||||
// expect(files[0].path).toBe(Folder.systemPath(folder1));
|
expect(files[0].path).toBe(Folder.systemPath(folder1));
|
||||||
|
|
||||||
// let deletedItems = await BaseModel.deletedItems();
|
let deletedItems = await BaseModel.deletedItems();
|
||||||
// expect(deletedItems.length).toBe(0);
|
expect(deletedItems.length).toBe(0);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should delete local notes', async (done) => {
|
it('should delete local notes', async (done) => {
|
||||||
// let folder1 = await Folder.save({ title: "folder1" });
|
let folder1 = await Folder.save({ title: "folder1" });
|
||||||
// let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(2);
|
await switchClient(2);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// await Note.delete(note1.id);
|
await Note.delete(note1.id);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(1);
|
await switchClient(1);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// let items = await allItems();
|
let items = await allItems();
|
||||||
|
|
||||||
// expect(items.length).toBe(1);
|
expect(items.length).toBe(1);
|
||||||
|
|
||||||
// let deletedItems = await BaseModel.deletedItems();
|
let deletedItems = await BaseModel.deletedItems();
|
||||||
|
|
||||||
// expect(deletedItems.length).toBe(0);
|
expect(deletedItems.length).toBe(0);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should delete remote folder', async (done) => {
|
it('should delete remote folder', async (done) => {
|
||||||
// let folder1 = await Folder.save({ title: "folder1" });
|
let folder1 = await Folder.save({ title: "folder1" });
|
||||||
// let folder2 = await Folder.save({ title: "folder2" });
|
let folder2 = await Folder.save({ title: "folder2" });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(2);
|
await switchClient(2);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// await Folder.delete(folder2.id);
|
await Folder.delete(folder2.id);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// localItemsSameAsRemote();
|
let all = await allItems();
|
||||||
|
localItemsSameAsRemote(all, expect);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
it('should delete local folder', async (done) => {
|
it('should delete local folder', async (done) => {
|
||||||
let folder1 = await Folder.save({ title: "folder1" });
|
let folder1 = await Folder.save({ title: "folder1" });
|
||||||
@@ -318,102 +319,102 @@ describe('Synchronizer', function() {
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
// it('should handle conflict when remote note is deleted then local note is modified', async (done) => {
|
it('should handle conflict when remote note is deleted then local note is modified', async (done) => {
|
||||||
// let folder1 = await Folder.save({ title: "folder1" });
|
let folder1 = await Folder.save({ title: "folder1" });
|
||||||
// let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(2);
|
await switchClient(2);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// await Note.delete(note1.id);
|
await Note.delete(note1.id);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(1);
|
await switchClient(1);
|
||||||
|
|
||||||
// let newTitle = 'Modified after having been deleted';
|
let newTitle = 'Modified after having been deleted';
|
||||||
// await Note.save({ id: note1.id, title: newTitle });
|
await Note.save({ id: note1.id, title: newTitle });
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// let conflictedNotes = await Note.conflictedNotes();
|
let conflictedNotes = await Note.conflictedNotes();
|
||||||
|
|
||||||
// expect(conflictedNotes.length).toBe(1);
|
expect(conflictedNotes.length).toBe(1);
|
||||||
// expect(conflictedNotes[0].title).toBe(newTitle);
|
expect(conflictedNotes[0].title).toBe(newTitle);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should handle conflict when remote folder is deleted then local folder is renamed', async (done) => {
|
it('should handle conflict when remote folder is deleted then local folder is renamed', async (done) => {
|
||||||
// let folder1 = await Folder.save({ title: "folder1" });
|
let folder1 = await Folder.save({ title: "folder1" });
|
||||||
// let folder2 = await Folder.save({ title: "folder2" });
|
let folder2 = await Folder.save({ title: "folder2" });
|
||||||
// let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
let note1 = await Note.save({ title: "un", parent_id: folder1.id });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(2);
|
await switchClient(2);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// await Folder.delete(folder1.id);
|
await Folder.delete(folder1.id);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(1);
|
await switchClient(1);
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// let newTitle = 'Modified after having been deleted';
|
let newTitle = 'Modified after having been deleted';
|
||||||
// await Folder.save({ id: folder1.id, title: newTitle });
|
await Folder.save({ id: folder1.id, title: newTitle });
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// let items = await allItems();
|
let items = await allItems();
|
||||||
|
|
||||||
// expect(items.length).toBe(1);
|
expect(items.length).toBe(1);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should allow duplicate folder title and rename the new one', async (done) => {
|
it('should allow duplicate folder title and rename the new one', async (done) => {
|
||||||
// let localF1 = await Folder.save({ title: "folder" });
|
let localF1 = await Folder.save({ title: "folder" });
|
||||||
|
|
||||||
// await switchClient(2);
|
await switchClient(2);
|
||||||
|
|
||||||
// let remoteF2 = await Folder.save({ title: "folder" });
|
let remoteF2 = await Folder.save({ title: "folder" });
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(1);
|
await switchClient(1);
|
||||||
|
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// let localF2 = await Folder.load(remoteF2.id);
|
let localF2 = await Folder.load(remoteF2.id);
|
||||||
|
|
||||||
// expect(localF2.title == remoteF2.title).toBe(false);
|
expect(localF2.title == remoteF2.title).toBe(false);
|
||||||
|
|
||||||
// // Then that folder that has been renamed locally should be set in such a way
|
// Then that folder that has been renamed locally should be set in such a way
|
||||||
// // that synchronizing it applies the title change remotely, and that new title
|
// that synchronizing it applies the title change remotely, and that new title
|
||||||
// // should be retrieved by client 2.
|
// should be retrieved by client 2.
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// await switchClient(2);
|
await switchClient(2);
|
||||||
// await sleep(0.1);
|
await sleep(0.1);
|
||||||
|
|
||||||
// await synchronizer().start();
|
await synchronizer().start();
|
||||||
|
|
||||||
// remoteF2 = await Folder.load(remoteF2.id);
|
remoteF2 = await Folder.load(remoteF2.id);
|
||||||
|
|
||||||
// expect(remoteF2.title == localF2.title).toBe(true);
|
expect(remoteF2.title == localF2.title).toBe(true);
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
|
|
||||||
});
|
});
|
@@ -30,6 +30,13 @@ class BaseItem extends BaseModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns the IDs of the items that have been synced at least once
|
||||||
|
static async syncedItems() {
|
||||||
|
let folders = await Folder.modelSelectAll('SELECT id FROM folders WHERE sync_time > 0');
|
||||||
|
let notes = await Note.modelSelectAll('SELECT id FROM notes WHERE is_conflict = 0 AND sync_time > 0');
|
||||||
|
return folders.concat(notes);
|
||||||
|
}
|
||||||
|
|
||||||
static pathToId(path) {
|
static pathToId(path) {
|
||||||
let s = path.split('.');
|
let s = path.split('.');
|
||||||
return s[0];
|
return s[0];
|
||||||
|
@@ -40,16 +40,6 @@ class Folder extends BaseItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static syncedNoteIds() {
|
|
||||||
return this.db().selectAll('SELECT id FROM notes WHERE is_conflict = 0 AND sync_time > 0').then((rows) => {
|
|
||||||
let output = [];
|
|
||||||
for (let i = 0; i < rows.length; i++) {
|
|
||||||
output.push(rows[i].id);
|
|
||||||
}
|
|
||||||
return output;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
static noteIds(parentId) {
|
static noteIds(parentId) {
|
||||||
return this.db().selectAll('SELECT id FROM notes WHERE is_conflict = 0 AND parent_id = ?', [parentId]).then((rows) => {
|
return this.db().selectAll('SELECT id FROM notes WHERE is_conflict = 0 AND parent_id = ?', [parentId]).then((rows) => {
|
||||||
let output = [];
|
let output = [];
|
||||||
|
@@ -317,14 +317,16 @@ class Synchronizer {
|
|||||||
// means the item has been deleted.
|
// means the item has been deleted.
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
|
|
||||||
let noteIds = await Folder.syncedNoteIds();
|
let items = await BaseItem.syncedItems();
|
||||||
for (let i = 0; i < noteIds.length; i++) {
|
for (let i = 0; i < items.length; i++) {
|
||||||
let noteId = noteIds[i];
|
let item = items[i];
|
||||||
if (remoteIds.indexOf(noteId) < 0) {
|
if (remoteIds.indexOf(item.id) < 0) {
|
||||||
report.localsToDelete++;
|
report.localsToDelete++;
|
||||||
options.onProgress(report);
|
options.onProgress(report);
|
||||||
this.logSyncOperation('deleteLocal', { id: noteId }, null, 'remote has been deleted');
|
this.logSyncOperation('deleteLocal', { id: item.id }, null, 'remote has been deleted');
|
||||||
await Note.delete(noteId, { trackDeleted: false });
|
|
||||||
|
let ItemClass = BaseItem.itemClass(item);
|
||||||
|
await ItemClass.delete(item.id, { trackDeleted: false });
|
||||||
report['deleteLocal']++;
|
report['deleteLocal']++;
|
||||||
options.onProgress(report);
|
options.onProgress(report);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user