offline fixes

This commit is contained in:
Mo Bitar
2017-01-09 09:15:17 -06:00
parent 2ac3382b6d
commit 818f6aafe9
9 changed files with 277 additions and 271 deletions

View File

@@ -152,7 +152,7 @@ angular.module('app.frontend')
saveTimeout = $timeout(function(){
this.noteStatus = "Saving...";
this.saveNote();
}.bind(this), 150)
}.bind(this), 275)
}

View File

@@ -2,9 +2,7 @@ angular.module('app.frontend')
.directive("header", function(apiController, extensionManager){
return {
restrict: 'E',
scope: {
logout: "&"
},
scope: {},
templateUrl: 'frontend/header.html',
replace: true,
controller: 'HeaderCtrl',
@@ -90,7 +88,6 @@ angular.module('app.frontend')
this.signOutPressed = function() {
this.showAccountMenu = false;
this.logout()();
apiController.signout();
window.location.reload();
}
@@ -194,13 +191,18 @@ angular.module('app.frontend')
}
this.performImport = function(data, password) {
apiController.importJSONData(data, password, function(success, response){
console.log("import response", success, response);
if(success) {
this.importData = null;
} else {
alert("There was an error importing your data. Please try again.");
}
this.importData.loading = true;
// allow loading indicator to come up with timeout
$timeout(function(){
apiController.importJSONData(data, password, function(success, response){
console.log("Import response:", success, response);
this.importData.loading = false;
if(success) {
this.importData = null;
} else {
alert("There was an error importing your data. Please try again.");
}
}.bind(this))
}.bind(this))
}

View File

@@ -131,14 +131,4 @@ angular.module('app.frontend')
apiController.sync(null);
}
/*
Header Ctrl Callbacks
*/
$scope.headerLogout = function() {
apiController.clearLocalStorage();
}
});

View File

@@ -57,6 +57,11 @@ class Item {
}
}
markAllReferencesDirty() {
this.allReferencedObjects().forEach(function(reference){
reference.setDirty(true);
})
}
addObserver(observer, callback) {
if(!_.find(this.observers, observer)) {
this.observers.push({observer: observer, callback: callback});

View File

@@ -213,10 +213,10 @@ angular.module('app.frontend')
}
this.syncWithOptions = function(callback, options = {}) {
this.writeAllItemsToLocalStorage(function(responseItems){
var dirtyItems = modelManager.getDirtyItems();
this.writeItemsToLocalStorage(dirtyItems, function(responseItems){
if(!this.isUserSignedIn()) {
// is not signed in
var dirtyItems = modelManager.getDirtyItems();
// delete anything needing to be deleted
dirtyItems.forEach(function(item){
if(item.deleted) {
@@ -234,7 +234,7 @@ angular.module('app.frontend')
return;
}
var dirtyItems = modelManager.getDirtyItems();
var request = Restangular.one("items/sync");
request.items = _.map(dirtyItems, function(item){
return this.createRequestParamsForItem(item, options.additionalFields);
@@ -251,14 +251,15 @@ angular.module('app.frontend')
this.setSyncToken(response.sync_token);
$rootScope.$broadcast("sync:updated_token", this.syncToken);
this.handleItemsResponse(response.retrieved_items, null);
var retrieved = this.handleItemsResponse(response.retrieved_items, null);
// merge only metadata for saved items
var omitFields = ["content", "enc_item_key", "auth_hash"];
this.handleItemsResponse(response.saved_items, omitFields);
var saved = this.handleItemsResponse(response.saved_items, omitFields);
this.handleUnsavedItemsResponse(response.unsaved)
this.writeAllItemsToLocalStorage();
this.writeItemsToLocalStorage(saved, null);
this.writeItemsToLocalStorage(retrieved, null);
if(callback) {
callback(response);
@@ -289,9 +290,7 @@ angular.module('app.frontend')
if(error.tag == "uuid_conflict") {
item.alternateUUID();
item.setDirty(true);
item.allReferencedObjects().forEach(function(reference){
reference.setDirty(true);
})
item.markAllReferencesDirty();
}
}
@@ -393,9 +392,10 @@ angular.module('app.frontend')
console.log("Importing data", data);
var onDataReady = function() {
modelManager.mapResponseItemsToLocalModels(data.items);
modelManager.allItems.forEach(function(item){
var items = modelManager.mapResponseItemsToLocalModels(data.items);
items.forEach(function(item){
item.setDirty(true);
item.markAllReferencesDirty();
})
this.syncWithOptions(callback, {additionalFields: ["created_at", "updated_at"]});
}.bind(this)
@@ -483,38 +483,31 @@ angular.module('app.frontend')
this.clearLocalStorage = function() {
localStorage.removeItem("items");
localStorage.removeItem("mk");
localStorage.removeItem("jwt");
localStorage.removeItem("uuid");
localStorage.removeItem("syncToken");
localStorage.removeItem("auth_params");
}
this.staticifyObject = function(object) {
return JSON.parse(JSON.stringify(object));
}
this.writeAllItemsToLocalStorage = function(callback) {
var items = _.map(modelManager.allItems, function(item){
return this.paramsForItem(item, this.isUserSignedIn(), ["created_at", "updated_at", "presentation_url"], false)
}.bind(this));
// console.log("Writing items to local", items);
this.writeToLocalStorage('items', items);
this.writeItemsToLocalStorage = function(items, callback) {
for(var item of items) {
var params = this.paramsForItem(item, this.isUserSignedIn(), ["created_at", "updated_at", "presentation_url"], false)
localStorage.setItem("item-" + item.uuid, JSON.stringify(params));
}
if(callback) {
callback(items);
}
}
this.writeToLocalStorage = function(key, value) {
localStorage.setItem(key, angular.toJson(value));
}
this.loadLocalItems = function() {
var items = JSON.parse(localStorage.getItem('items')) || [];
items = this.handleItemsResponse(items, null);
var itemsParams = [];
for (var i = 0; i < localStorage.length; i++){
var key = localStorage.key(i);
if(key.startsWith("item-")) {
var item = localStorage.getItem(key);
itemsParams.push(JSON.parse(item));
}
}
var items = this.handleItemsResponse(itemsParams, null);
Item.sortItemsByDate(items);
}
@@ -556,8 +549,7 @@ angular.module('app.frontend')
}
this.signout = function() {
localStorage.removeItem("jwt");
localStorage.removeItem("mk");
localStorage.clear();
}
this.encryptSingleItem = function(item, masterKey) {

View File

@@ -85,15 +85,17 @@
.action-container
%a{"ng-click" => "ctrl.downloadDataArchive()"} Download Data Archive
%br
%label#import-archive
%input{"type" => "file", "style" => "display: none;", "file-change" => "->", "handler" => "ctrl.importFileSelected(files)"}
%a.disabled
%span
Import Data from Archive
.import-password{"ng-if" => "ctrl.importData.requestPassword"}
Enter the account password associated with the import file.
%input.field{"type" => "text", "ng-model" => "ctrl.importData.password"}
%button{"ng-click" => "ctrl.submitImportPassword()"} Decrypt & Import
%div{"ng-if" => "!ctrl.importData.loading"}
%label#import-archive
%input{"type" => "file", "style" => "display: none;", "file-change" => "->", "handler" => "ctrl.importFileSelected(files)"}
%a.disabled
%span
Import Data from Archive
.import-password{"ng-if" => "ctrl.importData.requestPassword"}
Enter the account password associated with the import file.
%input.field{"type" => "text", "ng-model" => "ctrl.importData.password"}
%button{"ng-click" => "ctrl.submitImportPassword()"} Decrypt & Import
.spinner{"ng-if" => "ctrl.importData.loading"}
.item
%a{"ng-click" => "ctrl.toggleExtensions()"} Extensions

View File

@@ -9,4 +9,4 @@
%editor-section{"ng-if" => "selectedNote", "note" => "selectedNote", "remove" => "deleteNote",
"user" => "defaultUser", "save" => "saveNote"}
%header{"user" => "defaultUser", "logout" => "headerLogout"}
%header{"user" => "defaultUser"}

View File

@@ -597,7 +597,7 @@ angular.module('app.frontend').controller('BaseCtrl', BaseCtrl);
saveTimeout = $timeout(function () {
this.noteStatus = "Saving...";
this.saveNote();
}.bind(this), 150);
}.bind(this), 275);
};
this.contentChanged = function () {
@@ -716,9 +716,7 @@ angular.module('app.frontend').controller('BaseCtrl', BaseCtrl);
;angular.module('app.frontend').directive("header", function (apiController, extensionManager) {
return {
restrict: 'E',
scope: {
logout: "&"
},
scope: {},
templateUrl: 'frontend/header.html',
replace: true,
controller: 'HeaderCtrl',
@@ -803,7 +801,6 @@ angular.module('app.frontend').controller('BaseCtrl', BaseCtrl);
this.signOutPressed = function () {
this.showAccountMenu = false;
this.logout()();
apiController.signout();
window.location.reload();
};
@@ -904,13 +901,18 @@ angular.module('app.frontend').controller('BaseCtrl', BaseCtrl);
};
this.performImport = function (data, password) {
apiController.importJSONData(data, password, function (success, response) {
console.log("import response", success, response);
if (success) {
this.importData = null;
} else {
alert("There was an error importing your data. Please try again.");
}
this.importData.loading = true;
// allow loading indicator to come up with timeout
$timeout(function () {
apiController.importJSONData(data, password, function (success, response) {
console.log("Import response:", success, response);
this.importData.loading = false;
if (success) {
this.importData = null;
} else {
alert("There was an error importing your data. Please try again.");
}
}.bind(this));
}.bind(this));
};
@@ -1085,14 +1087,6 @@ angular.module('app.frontend').controller('BaseCtrl', BaseCtrl);
apiController.sync(null);
};
/*
Header Ctrl Callbacks
*/
$scope.headerLogout = function () {
apiController.clearLocalStorage();
};
});
;angular.module('app.frontend').directive("notesSection", function () {
return {
@@ -1387,6 +1381,13 @@ var Item = function () {
this.notifyObserversOfChange();
}
}
}, {
key: 'markAllReferencesDirty',
value: function markAllReferencesDirty() {
this.allReferencedObjects().forEach(function (reference) {
reference.setDirty(true);
});
}
}, {
key: 'addObserver',
value: function addObserver(observer, callback) {
@@ -2120,10 +2121,10 @@ var Tag = function (_Item3) {
this.syncWithOptions = function (callback) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
this.writeAllItemsToLocalStorage(function (responseItems) {
var dirtyItems = modelManager.getDirtyItems();
this.writeItemsToLocalStorage(dirtyItems, function (responseItems) {
if (!this.isUserSignedIn()) {
// is not signed in
var dirtyItems = modelManager.getDirtyItems();
// delete anything needing to be deleted
dirtyItems.forEach(function (item) {
if (item.deleted) {
@@ -2141,7 +2142,6 @@ var Tag = function (_Item3) {
return;
}
var dirtyItems = modelManager.getDirtyItems();
var request = Restangular.one("items/sync");
request.items = _.map(dirtyItems, function (item) {
return this.createRequestParamsForItem(item, options.additionalFields);
@@ -2158,14 +2158,15 @@ var Tag = function (_Item3) {
this.setSyncToken(response.sync_token);
$rootScope.$broadcast("sync:updated_token", this.syncToken);
this.handleItemsResponse(response.retrieved_items, null);
var retrieved = this.handleItemsResponse(response.retrieved_items, null);
// merge only metadata for saved items
var omitFields = ["content", "enc_item_key", "auth_hash"];
this.handleItemsResponse(response.saved_items, omitFields);
var saved = this.handleItemsResponse(response.saved_items, omitFields);
this.handleUnsavedItemsResponse(response.unsaved);
this.writeAllItemsToLocalStorage();
this.writeItemsToLocalStorage(saved, null);
this.writeItemsToLocalStorage(retrieved, null);
if (callback) {
callback(response);
@@ -2202,9 +2203,7 @@ var Tag = function (_Item3) {
if (error.tag == "uuid_conflict") {
item.alternateUUID();
item.setDirty(true);
item.allReferencedObjects().forEach(function (reference) {
reference.setDirty(true);
});
item.markAllReferencesDirty();
}
}
} catch (err) {
@@ -2319,9 +2318,10 @@ var Tag = function (_Item3) {
console.log("Importing data", data);
var onDataReady = function () {
modelManager.mapResponseItemsToLocalModels(data.items);
modelManager.allItems.forEach(function (item) {
var items = modelManager.mapResponseItemsToLocalModels(data.items);
items.forEach(function (item) {
item.setDirty(true);
item.markAllReferencesDirty();
});
this.syncWithOptions(callback, { additionalFields: ["created_at", "updated_at"] });
}.bind(this);
@@ -2405,37 +2405,53 @@ var Tag = function (_Item3) {
// }
this.clearLocalStorage = function () {
localStorage.removeItem("items");
localStorage.removeItem("mk");
localStorage.removeItem("jwt");
localStorage.removeItem("uuid");
localStorage.removeItem("syncToken");
localStorage.removeItem("auth_params");
};
this.staticifyObject = function (object) {
return JSON.parse(JSON.stringify(object));
};
this.writeAllItemsToLocalStorage = function (callback) {
var items = _.map(modelManager.allItems, function (item) {
return this.paramsForItem(item, this.isUserSignedIn(), ["created_at", "updated_at", "presentation_url"], false);
}.bind(this));
// console.log("Writing items to local", items);
this.writeToLocalStorage('items', items);
this.writeItemsToLocalStorage = function (items, callback) {
var _iteratorNormalCompletion5 = true;
var _didIteratorError5 = false;
var _iteratorError5 = undefined;
try {
for (var _iterator5 = items[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
var item = _step5.value;
var params = this.paramsForItem(item, this.isUserSignedIn(), ["created_at", "updated_at", "presentation_url"], false);
localStorage.setItem("item-" + item.uuid, JSON.stringify(params));
}
} catch (err) {
_didIteratorError5 = true;
_iteratorError5 = err;
} finally {
try {
if (!_iteratorNormalCompletion5 && _iterator5.return) {
_iterator5.return();
}
} finally {
if (_didIteratorError5) {
throw _iteratorError5;
}
}
}
if (callback) {
callback(items);
}
};
this.writeToLocalStorage = function (key, value) {
localStorage.setItem(key, angular.toJson(value));
};
this.loadLocalItems = function () {
var items = JSON.parse(localStorage.getItem('items')) || [];
items = this.handleItemsResponse(items, null);
var itemsParams = [];
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
if (key.startsWith("item-")) {
var item = localStorage.getItem(key);
itemsParams.push(JSON.parse(item));
}
}
var items = this.handleItemsResponse(itemsParams, null);
Item.sortItemsByDate(items);
};
@@ -2476,8 +2492,7 @@ var Tag = function (_Item3) {
};
this.signout = function () {
localStorage.removeItem("jwt");
localStorage.removeItem("mk");
localStorage.clear();
};
this.encryptSingleItem = function (item, masterKey) {
@@ -2520,13 +2535,13 @@ var Tag = function (_Item3) {
};
this.decryptItemsWithKey = function (items, key) {
var _iteratorNormalCompletion5 = true;
var _didIteratorError5 = false;
var _iteratorError5 = undefined;
var _iteratorNormalCompletion6 = true;
var _didIteratorError6 = false;
var _iteratorError6 = undefined;
try {
for (var _iterator5 = items[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
var item = _step5.value;
for (var _iterator6 = items[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
var item = _step6.value;
if (item.deleted == true) {
continue;
@@ -2543,16 +2558,16 @@ var Tag = function (_Item3) {
}
}
} catch (err) {
_didIteratorError5 = true;
_iteratorError5 = err;
_didIteratorError6 = true;
_iteratorError6 = err;
} finally {
try {
if (!_iteratorNormalCompletion5 && _iterator5.return) {
_iterator5.return();
if (!_iteratorNormalCompletion6 && _iterator6.return) {
_iterator6.return();
}
} finally {
if (_didIteratorError5) {
throw _iteratorError5;
if (_didIteratorError6) {
throw _iteratorError6;
}
}
}
@@ -2964,55 +2979,55 @@ var ExtensionManager = function () {
this.decryptedExtensions = JSON.parse(localStorage.getItem("decryptedExtensions")) || [];
modelManager.addItemSyncObserver("extensionManager", "Extension", function (items) {
var _iteratorNormalCompletion6 = true;
var _didIteratorError6 = false;
var _iteratorError6 = undefined;
var _iteratorNormalCompletion7 = true;
var _didIteratorError7 = false;
var _iteratorError7 = undefined;
try {
for (var _iterator6 = items[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
var ext = _step6.value;
for (var _iterator7 = items[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
var ext = _step7.value;
ext.encrypted = this.extensionUsesEncryptedData(ext);
var _iteratorNormalCompletion7 = true;
var _didIteratorError7 = false;
var _iteratorError7 = undefined;
var _iteratorNormalCompletion8 = true;
var _didIteratorError8 = false;
var _iteratorError8 = undefined;
try {
for (var _iterator7 = ext.actions[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
var action = _step7.value;
for (var _iterator8 = ext.actions[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
var action = _step8.value;
if (this.enabledRepeatActionUrls.includes(action.url)) {
this.enableRepeatAction(action, ext);
}
}
} catch (err) {
_didIteratorError7 = true;
_iteratorError7 = err;
_didIteratorError8 = true;
_iteratorError8 = err;
} finally {
try {
if (!_iteratorNormalCompletion7 && _iterator7.return) {
_iterator7.return();
if (!_iteratorNormalCompletion8 && _iterator8.return) {
_iterator8.return();
}
} finally {
if (_didIteratorError7) {
throw _iteratorError7;
if (_didIteratorError8) {
throw _iteratorError8;
}
}
}
}
} catch (err) {
_didIteratorError6 = true;
_iteratorError6 = err;
_didIteratorError7 = true;
_iteratorError7 = err;
} finally {
try {
if (!_iteratorNormalCompletion6 && _iterator6.return) {
_iterator6.return();
if (!_iteratorNormalCompletion7 && _iterator7.return) {
_iterator7.return();
}
} finally {
if (_didIteratorError6) {
throw _iteratorError6;
if (_didIteratorError7) {
throw _iteratorError7;
}
}
}
@@ -3029,27 +3044,27 @@ var ExtensionManager = function () {
}, {
key: 'actionWithURL',
value: function actionWithURL(url) {
var _iteratorNormalCompletion8 = true;
var _didIteratorError8 = false;
var _iteratorError8 = undefined;
var _iteratorNormalCompletion9 = true;
var _didIteratorError9 = false;
var _iteratorError9 = undefined;
try {
for (var _iterator8 = this.extensions[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
var extension = _step8.value;
for (var _iterator9 = this.extensions[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
var extension = _step9.value;
return _.find(extension.actions, { url: url });
}
} catch (err) {
_didIteratorError8 = true;
_iteratorError8 = err;
_didIteratorError9 = true;
_iteratorError9 = err;
} finally {
try {
if (!_iteratorNormalCompletion8 && _iterator8.return) {
_iterator8.return();
if (!_iteratorNormalCompletion9 && _iterator9.return) {
_iterator9.return();
}
} finally {
if (_didIteratorError8) {
throw _iteratorError8;
if (_didIteratorError9) {
throw _iteratorError9;
}
}
}
@@ -3080,13 +3095,13 @@ var ExtensionManager = function () {
}, {
key: 'deleteExtension',
value: function deleteExtension(extension) {
var _iteratorNormalCompletion9 = true;
var _didIteratorError9 = false;
var _iteratorError9 = undefined;
var _iteratorNormalCompletion10 = true;
var _didIteratorError10 = false;
var _iteratorError10 = undefined;
try {
for (var _iterator9 = extension.actions[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
var action = _step9.value;
for (var _iterator10 = extension.actions[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
var action = _step10.value;
_.pull(this.decryptedExtensions, extension);
if (action.repeat_mode) {
@@ -3096,16 +3111,16 @@ var ExtensionManager = function () {
}
}
} catch (err) {
_didIteratorError9 = true;
_iteratorError9 = err;
_didIteratorError10 = true;
_iteratorError10 = err;
} finally {
try {
if (!_iteratorNormalCompletion9 && _iterator9.return) {
_iterator9.return();
if (!_iteratorNormalCompletion10 && _iterator10.return) {
_iterator10.return();
}
} finally {
if (_didIteratorError9) {
throw _iteratorError9;
if (_didIteratorError10) {
throw _iteratorError10;
}
}
}
@@ -3145,45 +3160,18 @@ var ExtensionManager = function () {
}, {
key: 'refreshExtensionsFromServer',
value: function refreshExtensionsFromServer() {
var _iteratorNormalCompletion10 = true;
var _didIteratorError10 = false;
var _iteratorError10 = undefined;
try {
for (var _iterator10 = this.enabledRepeatActionUrls[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
var url = _step10.value;
var action = this.actionWithURL(url);
if (action) {
this.disableRepeatAction(action);
}
}
} catch (err) {
_didIteratorError10 = true;
_iteratorError10 = err;
} finally {
try {
if (!_iteratorNormalCompletion10 && _iterator10.return) {
_iterator10.return();
}
} finally {
if (_didIteratorError10) {
throw _iteratorError10;
}
}
}
var _iteratorNormalCompletion11 = true;
var _didIteratorError11 = false;
var _iteratorError11 = undefined;
try {
for (var _iterator11 = this.extensions[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
var ext = _step11.value;
for (var _iterator11 = this.enabledRepeatActionUrls[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
var url = _step11.value;
this.retrieveExtensionFromServer(ext.url, function (extension) {
extension.setDirty(true);
});
var action = this.actionWithURL(url);
if (action) {
this.disableRepeatAction(action);
}
}
} catch (err) {
_didIteratorError11 = true;
@@ -3199,6 +3187,33 @@ var ExtensionManager = function () {
}
}
}
var _iteratorNormalCompletion12 = true;
var _didIteratorError12 = false;
var _iteratorError12 = undefined;
try {
for (var _iterator12 = this.extensions[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
var ext = _step12.value;
this.retrieveExtensionFromServer(ext.url, function (extension) {
extension.setDirty(true);
});
}
} catch (err) {
_didIteratorError12 = true;
_iteratorError12 = err;
} finally {
try {
if (!_iteratorNormalCompletion12 && _iterator12.return) {
_iterator12.return();
}
} finally {
if (_didIteratorError12) {
throw _iteratorError12;
}
}
}
}
}, {
key: 'executeAction',
@@ -3439,13 +3454,13 @@ var ModelManager = function () {
key: 'mapResponseItemsToLocalModelsOmittingFields',
value: function mapResponseItemsToLocalModelsOmittingFields(items, omitFields) {
var models = [];
var _iteratorNormalCompletion12 = true;
var _didIteratorError12 = false;
var _iteratorError12 = undefined;
var _iteratorNormalCompletion13 = true;
var _didIteratorError13 = false;
var _iteratorError13 = undefined;
try {
for (var _iterator12 = items[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
var json_obj = _step12.value;
for (var _iterator13 = items[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
var json_obj = _step13.value;
json_obj = _.omit(json_obj, omitFields || []);
var item = this.findItem(json_obj["uuid"]);
@@ -3472,44 +3487,6 @@ var ModelManager = function () {
models.push(item);
}
} catch (err) {
_didIteratorError12 = true;
_iteratorError12 = err;
} finally {
try {
if (!_iteratorNormalCompletion12 && _iterator12.return) {
_iterator12.return();
}
} finally {
if (_didIteratorError12) {
throw _iteratorError12;
}
}
}
this.notifySyncObserversOfModels(models);
this.sortItems();
return models;
}
}, {
key: 'notifySyncObserversOfModels',
value: function notifySyncObserversOfModels(models) {
var _iteratorNormalCompletion13 = true;
var _didIteratorError13 = false;
var _iteratorError13 = undefined;
try {
for (var _iterator13 = this.itemSyncObservers[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
var observer = _step13.value;
var relevantItems = models.filter(function (item) {
return item.content_type == observer.type;
});
if (relevantItems.length > 0) {
observer.callback(relevantItems);
}
}
} catch (err) {
_didIteratorError13 = true;
_iteratorError13 = err;
@@ -3524,22 +3501,26 @@ var ModelManager = function () {
}
}
}
this.notifySyncObserversOfModels(models);
this.sortItems();
return models;
}
}, {
key: 'notifyItemChangeObserversOfModels',
value: function notifyItemChangeObserversOfModels(models) {
key: 'notifySyncObserversOfModels',
value: function notifySyncObserversOfModels(models) {
var _iteratorNormalCompletion14 = true;
var _didIteratorError14 = false;
var _iteratorError14 = undefined;
try {
for (var _iterator14 = this.itemChangeObservers[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {
for (var _iterator14 = this.itemSyncObservers[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {
var observer = _step14.value;
var relevantItems = models.filter(function (item) {
return observer.content_types.includes(item.content_type) || observer.content_types.includes("*");
return item.content_type == observer.type;
});
if (relevantItems.length > 0) {
observer.callback(relevantItems);
}
@@ -3559,6 +3540,40 @@ var ModelManager = function () {
}
}
}
}, {
key: 'notifyItemChangeObserversOfModels',
value: function notifyItemChangeObserversOfModels(models) {
var _iteratorNormalCompletion15 = true;
var _didIteratorError15 = false;
var _iteratorError15 = undefined;
try {
for (var _iterator15 = this.itemChangeObservers[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) {
var observer = _step15.value;
var relevantItems = models.filter(function (item) {
return observer.content_types.includes(item.content_type) || observer.content_types.includes("*");
});
if (relevantItems.length > 0) {
observer.callback(relevantItems);
}
}
} catch (err) {
_didIteratorError15 = true;
_iteratorError15 = err;
} finally {
try {
if (!_iteratorNormalCompletion15 && _iterator15.return) {
_iterator15.return();
}
} finally {
if (_didIteratorError15) {
throw _iteratorError15;
}
}
}
}
}, {
key: 'createItem',
value: function createItem(json_obj) {
@@ -3620,13 +3635,13 @@ var ModelManager = function () {
return;
}
var _iteratorNormalCompletion15 = true;
var _didIteratorError15 = false;
var _iteratorError15 = undefined;
var _iteratorNormalCompletion16 = true;
var _didIteratorError16 = false;
var _iteratorError16 = undefined;
try {
for (var _iterator15 = contentObject.references[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) {
var reference = _step15.value;
for (var _iterator16 = contentObject.references[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) {
var reference = _step16.value;
var referencedItem = this.findItem(reference.uuid);
if (referencedItem) {
@@ -3637,16 +3652,16 @@ var ModelManager = function () {
}
}
} catch (err) {
_didIteratorError15 = true;
_iteratorError15 = err;
_didIteratorError16 = true;
_iteratorError16 = err;
} finally {
try {
if (!_iteratorNormalCompletion15 && _iterator15.return) {
_iterator15.return();
if (!_iteratorNormalCompletion16 && _iterator16.return) {
_iterator16.return();
}
} finally {
if (_didIteratorError15) {
throw _iteratorError15;
if (_didIteratorError16) {
throw _iteratorError16;
}
}
}

File diff suppressed because one or more lines are too long