componentManager duplicate-item message

This commit is contained in:
Mo Bitar
2018-12-16 12:43:29 -06:00
parent 1d59fb7c90
commit 31d44af52e
4 changed files with 31 additions and 882 deletions

View File

@@ -372,6 +372,8 @@ class ComponentManager {
this.handleInstallLocalComponentMessage(component, message);
} else if(message.action === "present-conflict-resolution") {
this.handlePresentConflictResolutionMessage(component, message);
} else if(message.action === "duplicate-item") {
this.handleDuplicateItemMessage(component, message);
}
// Notify observers
@@ -568,6 +570,24 @@ class ComponentManager {
});
}
handleDuplicateItemMessage(component, message) {
var itemParams = message.data.item;
var item = this.modelManager.findItem(itemParams.uuid);
var requiredPermissions = [
{
name: "stream-items",
content_types: [item.content_type]
}
];
this.runWithPermissions(component, requiredPermissions, () => {
var duplicate = this.modelManager.duplicateItem(item);
this.syncManager.sync();
this.replyToMessage(component, message, {item: this.jsonForItem(duplicate, component)});
});
}
handleCreateItemsMessage(component, message) {
var responseItems = message.data.item ? [message.data.item] : message.data.items;
let uniqueContentTypes = _.uniq(responseItems.map((item) => {return item.content_type}));