fixes references issue

This commit is contained in:
Mo Bitar
2016-12-28 00:23:33 -06:00
parent e39793c2a1
commit c7677b8896
7 changed files with 143 additions and 148 deletions

View File

@@ -10,7 +10,7 @@ class Note extends Item {
if(!this.content.title) {
this.content.title = "";
}
if(!this.content.text) {
this.content.text = "";
}
@@ -31,15 +31,12 @@ class Note extends Item {
}
get hasOnePublicTag() {
var hasPublicTag = false;
this.tags.forEach(function(tag){
for (var tag of this.tags) {
if(tag.isPublic()) {
hasPublicTag = true;
return;
return true
}
})
return hasPublicTag;
}
return false;
}
toJSON() {

View File

@@ -443,7 +443,7 @@ angular.module('app.frontend')
this.loadLocalItemsAndUser = function() {
var user = {};
var items = JSON.parse(localStorage.getItem('items'));
var items = JSON.parse(localStorage.getItem('items')) || [];
items = modelManager.mapResponseItemsToLocalModels(items);
Item.sortItemsByDate(items);
user.items = items;

View File

@@ -16,6 +16,40 @@ class ItemManager {
this._items = _.uniq(this.items.concat(items));
}
mapResponseItemsToLocalModels(items) {
var models = []
for (var json_obj of items) {
var item = this.findItem(json_obj["uuid"]);
if(json_obj["deleted"] == true) {
if(item) {
this.deleteItem(item)
}
continue;
}
if(item) {
_.merge(item, json_obj);
} else {
item = this.createItem(json_obj);
}
models.push(item)
}
this.addItems(models)
this.resolveReferences()
return models;
}
createItem(json_obj) {
if(json_obj.content_type == "Note") {
return new Note(json_obj);
} else if(json_obj.content_type == "Tag") {
return new Tag(json_obj);
} else {
return new Item(json_obj);
}
}
resolveReferences() {
this.items.forEach(function(item){
// build out references, safely handle broken references

View File

@@ -7,45 +7,9 @@ class ModelManager extends ItemManager {
this.dirtyItems = [];
}
// get items() {
// return super.items()
// }
resolveReferences() {
super.resolveReferences()
mapResponseItemsToLocalModels(items) {
var models = []
for (var json_obj of items) {
var item = this.findItem(json_obj["uuid"]);
if(json_obj["deleted"] == true) {
if(item) {
this.deleteItem(item)
}
continue;
}
if(item) {
_.merge(item, json_obj);
} else {
item = this.createItem(json_obj);
}
models.push(item)
}
this.addItems(models)
return models;
}
createItem(json_obj) {
if(json_obj.content_type == "Note") {
return new Note(json_obj);
} else if(json_obj.content_type == "Tag") {
return new Tag(json_obj);
} else {
return new Item(json_obj);
}
}
addItems(items) {
super.addItems(items)
this.notes = this.itemsForContentType("Note");
this.notes.forEach(function(note){
note.updateReferencesLocalMapping();