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