ComponentManager create-items message, encrypt server extensions for backup files, batch manager user prefs permission

This commit is contained in:
Mo Bitar
2018-05-05 23:53:38 -05:00
parent 6903dd735a
commit fd01df6e01
3 changed files with 31 additions and 15 deletions

View File

@@ -36,7 +36,9 @@ class ItemParams {
var params = {uuid: this.item.uuid, content_type: this.item.content_type, deleted: this.item.deleted, created_at: this.item.created_at}; var params = {uuid: this.item.uuid, content_type: this.item.content_type, deleted: this.item.deleted, created_at: this.item.created_at};
if(!this.item.errorDecrypting) { if(!this.item.errorDecrypting) {
if(this.keys && !this.item.doNotEncrypt()) { // Items should always be encrypted for export files. Only respect item.doNotEncrypt for remote sync params;
var doNotEncrypt = this.item.doNotEncrypt() && !this.forExportFile;
if(this.keys && !doNotEncrypt) {
var encryptedParams = EncryptionHelper.encryptItem(this.item, this.keys, this.version); var encryptedParams = EncryptionHelper.encryptItem(this.item, this.keys, this.version);
_.merge(params, encryptedParams); _.merge(params, encryptedParams);

View File

@@ -286,6 +286,7 @@ class ComponentManager {
deassociate-item deassociate-item
clear-selection clear-selection
create-item create-item
create-items
delete-items delete-items
set-component-data set-component-data
install-local-component install-local-component
@@ -301,8 +302,8 @@ class ComponentManager {
this.handleSetComponentDataMessage(component, message); this.handleSetComponentDataMessage(component, message);
} else if(message.action === "delete-items") { } else if(message.action === "delete-items") {
this.handleDeleteItemsMessage(component, message); this.handleDeleteItemsMessage(component, message);
} else if(message.action === "create-item") { } else if(message.action === "create-items" || message.action === "create-item") {
this.handleCreateItemMessage(component, message); this.handleCreateItemsMessage(component, message);
} else if(message.action === "save-items") { } else if(message.action === "save-items") {
this.handleSaveItemsMessage(component, message); this.handleSaveItemsMessage(component, message);
} else if(message.action === "toggle-activate-component") { } else if(message.action === "toggle-activate-component") {
@@ -470,26 +471,39 @@ class ComponentManager {
}); });
} }
handleCreateItemMessage(component, message) { handleCreateItemsMessage(component, message) {
var responseItems = message.data.item ? [message.data.item] : message.data.items;
let uniqueContentTypes = _.uniq(responseItems.map((item) => {return item.content_type}));
var requiredPermissions = [ var requiredPermissions = [
{ {
name: "stream-items", name: "stream-items",
content_types: [message.data.item.content_type] content_types: uniqueContentTypes
} }
]; ];
this.runWithPermissions(component, requiredPermissions, () => { this.runWithPermissions(component, requiredPermissions, () => {
var responseItem = message.data.item; this.removePrivatePropertiesFromResponseItems(responseItems, component);
this.removePrivatePropertiesFromResponseItems([responseItem], component); var processedItems = [];
var item = this.modelManager.createItem(responseItem); for(let responseItem of responseItems) {
if(responseItem.clientData) { var item = this.modelManager.createItem(responseItem);
item.setDomainDataItem(component.url || component.uuid, responseItem.clientData, ClientDataDomain); if(responseItem.clientData) {
item.setDomainDataItem(component.url || component.uuid, responseItem.clientData, ClientDataDomain);
}
this.modelManager.addItem(item);
this.modelManager.resolveReferencesForItem(item, true);
item.setDirty(true);
processedItems.push(item);
} }
this.modelManager.addItem(item);
this.modelManager.resolveReferencesForItem(item, true);
item.setDirty(true);
this.syncManager.sync("handleCreateItemMessage"); this.syncManager.sync("handleCreateItemMessage");
this.replyToMessage(component, message, {item: this.jsonForItem(item, component)})
let reply =
message.action == "save-item" ?
{item: this.jsonForItem(processedItems[0], component)}
:
{items: processedItems.map((item) => {return this.jsonForItem(item, component)})}
this.replyToMessage(component, message, reply)
}); });
} }

View File

@@ -135,7 +135,7 @@ class NativeExtManager {
permissions: [ permissions: [
{ {
name: "stream-items", name: "stream-items",
content_types: ["Note", "Tag", "SN|Component", "SN|Theme", "SF|Extension", "Extension", "SF|MFA", "SN|Editor"] content_types: ["Note", "Tag", "SN|Component", "SN|Theme", "SF|Extension", "Extension", "SF|MFA", "SN|Editor", "SN|UserPreferences"]
} }
] ]
} }