Model manager and sync updates
This commit is contained in:
@@ -60,7 +60,7 @@ class Note extends Item {
|
||||
super.removeReferencesNotPresentIn(references);
|
||||
|
||||
var uuids = references.map(function(ref){return ref.uuid});
|
||||
this.tags.forEach(function(tag){
|
||||
this.tags.slice().forEach(function(tag){
|
||||
if(!uuids.includes(tag.uuid)) {
|
||||
_.pull(tag.notes, this);
|
||||
_.pull(this.tags, tag);
|
||||
|
||||
@@ -57,7 +57,7 @@ class Tag extends Item {
|
||||
|
||||
removeReferencesNotPresentIn(references) {
|
||||
var uuids = references.map(function(ref){return ref.uuid});
|
||||
this.notes.forEach(function(note){
|
||||
this.notes.slice().forEach(function(note){
|
||||
if(!uuids.includes(note.uuid)) {
|
||||
_.pull(note.tags, this);
|
||||
_.pull(this.notes, note);
|
||||
|
||||
@@ -165,8 +165,6 @@ class ModelManager {
|
||||
}
|
||||
|
||||
addItems(items) {
|
||||
this.items = _.uniq(this.items.concat(items));
|
||||
|
||||
items.forEach(function(item){
|
||||
if(item.content_type == "Tag") {
|
||||
if(!_.find(this.tags, {uuid: item.uuid})) {
|
||||
@@ -184,6 +182,10 @@ class ModelManager {
|
||||
this._extensions.unshift(item);
|
||||
}
|
||||
}
|
||||
|
||||
if(!_.find(this.items, {uuid: item.uuid})) {
|
||||
this.items.push(item);
|
||||
}
|
||||
}.bind(this));
|
||||
}
|
||||
|
||||
@@ -203,7 +205,7 @@ class ModelManager {
|
||||
|
||||
// If another client removes an item's references, this client won't pick up the removal unless
|
||||
// we remove everything not present in the current list of references
|
||||
item.removeReferencesNotPresentIn(contentObject.references);
|
||||
item.removeReferencesNotPresentIn(contentObject.references || []);
|
||||
|
||||
if(!contentObject.references) {
|
||||
return;
|
||||
|
||||
@@ -24,8 +24,9 @@ class SyncManager {
|
||||
}
|
||||
|
||||
writeItemsToLocalStorage(items, offlineOnly, callback) {
|
||||
var version = this.authManager.protocolVersion();
|
||||
var params = items.map(function(item) {
|
||||
var itemParams = new ItemParams(item, null, this.authManager.protocolVersion());
|
||||
var itemParams = new ItemParams(item, null, version);
|
||||
itemParams = itemParams.paramsForLocalStorage();
|
||||
if(offlineOnly) {
|
||||
delete itemParams.dirty;
|
||||
@@ -194,10 +195,13 @@ class SyncManager {
|
||||
this.allRetreivedItems = [];
|
||||
}
|
||||
|
||||
var version = this.authManager.protocolVersion();
|
||||
var keys = this.authManager.keys();
|
||||
|
||||
var params = {};
|
||||
params.limit = 150;
|
||||
params.items = _.map(subItems, function(item){
|
||||
var itemParams = new ItemParams(item, this.authManager.keys(), this.authManager.protocolVersion());
|
||||
var itemParams = new ItemParams(item, keys, version);
|
||||
itemParams.additionalFields = options.additionalFields;
|
||||
return itemParams.paramsForSync();
|
||||
}.bind(this));
|
||||
|
||||
Reference in New Issue
Block a user