auto delete conflicts and show conflict flag

This commit is contained in:
Mo Bitar
2017-04-21 11:19:14 -05:00
parent ad92c0894d
commit ea77ef99bf
8 changed files with 31 additions and 6 deletions

View File

@@ -105,16 +105,13 @@ angular.module('app.frontend')
*/
$scope.removeTag = function(tag) {
var validNotes = Note.filterDummyNotes(tag.notes);
if(validNotes == 0) {
if(confirm("Are you sure you want to delete this tag?")) {
modelManager.setItemToBeDeleted(tag);
// if no more notes, delete tag
syncManager.sync(function(){
// force scope tags to update on sub directives
$scope.safeApply();
});
} else {
alert("To delete this tag, remove all its notes first.");
}
}

View File

@@ -82,6 +82,7 @@ angular.module('app.frontend')
this.selectNote = function(note) {
this.selectedNote = note;
note.conflict_of = null; // clear conflict
this.selectionMade()(note);
}

View File

@@ -55,6 +55,7 @@ angular.module('app.frontend')
this.selectTag = function(tag) {
this.willSelect()(tag);
this.selectedTag = tag;
tag.conflict_of = null; // clear conflict
this.selectionMade()(tag);
}

View File

@@ -16,6 +16,7 @@ class EditorMenu {
$scope.editorManager = editorManager;
$scope.selectEditor = function(editor) {
editor.conflict_of = null; // clear conflict if applicable
$scope.callback()(editor);
}

View File

@@ -268,7 +268,29 @@ class SyncManager {
handleItemsResponse(responseItems, omitFields) {
EncryptionHelper.decryptMultipleItems(responseItems, this.authManager.keys());
return this.modelManager.mapResponseItemsToLocalModelsOmittingFields(responseItems, omitFields);
var items = this.modelManager.mapResponseItemsToLocalModelsOmittingFields(responseItems, omitFields);
this.handleSyncConflicts(items);
return items;
}
handleSyncConflicts(items) {
var needsSync = false;
for(var item of items) {
if(item.conflict_of) {
var original = this.modelManager.findItem(item.conflict_of);
// check if item contents are equal. If so, automatically delete conflict
if(JSON.stringify(item.structureParams()) === JSON.stringify(original.structureParams())) {
this.modelManager.setItemToBeDeleted(item);
needsSync = true;
}
}
}
if(needsSync) {
setTimeout(function () {
this.sync();
}.bind(this), 100);
}
}
clearSyncToken() {