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

@@ -678,7 +678,8 @@ angular.module('app')
this.reloadComponentContext = function() {
// componentStack is used by the template to ng-repeat
this.componentStack = componentManager.componentsForArea("editor-stack").sort((a, b) => {
// Careful here. For some reason, sorting by updated_at (or any other property that may always be changing)
// Careful here. For some reason (probably because re-assigning array everytime quickly destroys componentView elements, causing deallocs),
// sorting by updated_at (or any other property that may always be changing)
// causes weird problems with ext communication when changing notes or activating/deactivating in quick succession
return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1;
});

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}));

886
package-lock.json generated
View File

@@ -7819,882 +7819,10 @@
"dev": true
},
"sn-stylekit": {
"version": "file:../stylekit",
"dev": true,
"dependencies": {
"abbrev": {
"version": "1.1.1",
"bundled": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true
},
"ansi-styles": {
"version": "2.2.1",
"bundled": true
},
"argparse": {
"version": "1.0.9",
"bundled": true,
"requires": {
"sprintf-js": "1.0.3"
}
},
"array-find-index": {
"version": "1.0.2",
"bundled": true
},
"async": {
"version": "1.5.2",
"bundled": true
},
"balanced-match": {
"version": "1.0.0",
"bundled": true
},
"body-parser": {
"version": "1.14.2",
"bundled": true,
"requires": {
"bytes": "2.2.0",
"content-type": "1.0.4",
"debug": "2.2.0",
"depd": "1.1.1",
"http-errors": "1.3.1",
"iconv-lite": "0.4.13",
"on-finished": "2.3.0",
"qs": "5.2.0",
"raw-body": "2.1.7",
"type-is": "1.6.15"
},
"dependencies": {
"debug": {
"version": "2.2.0",
"bundled": true,
"requires": {
"ms": "0.7.1"
}
},
"iconv-lite": {
"version": "0.4.13",
"bundled": true
},
"ms": {
"version": "0.7.1",
"bundled": true
},
"qs": {
"version": "5.2.0",
"bundled": true
}
}
},
"brace-expansion": {
"version": "1.1.8",
"bundled": true,
"requires": {
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"builtin-modules": {
"version": "1.1.1",
"bundled": true
},
"bytes": {
"version": "2.2.0",
"bundled": true
},
"camelcase": {
"version": "2.1.1",
"bundled": true
},
"camelcase-keys": {
"version": "2.1.0",
"bundled": true,
"requires": {
"camelcase": "2.1.1",
"map-obj": "1.0.1"
}
},
"chalk": {
"version": "1.1.3",
"bundled": true,
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"coffee-script": {
"version": "1.10.0",
"bundled": true
},
"colors": {
"version": "1.1.2",
"bundled": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true
},
"content-type": {
"version": "1.0.4",
"bundled": true
},
"cross-spawn": {
"version": "0.2.9",
"bundled": true,
"requires": {
"lru-cache": "2.7.3"
}
},
"currently-unhandled": {
"version": "0.4.1",
"bundled": true,
"requires": {
"array-find-index": "1.0.2"
}
},
"dargs": {
"version": "4.1.0",
"bundled": true,
"requires": {
"number-is-nan": "1.0.1"
}
},
"dateformat": {
"version": "1.0.12",
"bundled": true,
"requires": {
"get-stdin": "4.0.1",
"meow": "3.7.0"
}
},
"decamelize": {
"version": "1.2.0",
"bundled": true
},
"depd": {
"version": "1.1.1",
"bundled": true
},
"ee-first": {
"version": "1.1.1",
"bundled": true
},
"error-ex": {
"version": "1.3.1",
"bundled": true,
"requires": {
"is-arrayish": "0.2.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"bundled": true
},
"esprima": {
"version": "2.7.3",
"bundled": true
},
"eventemitter2": {
"version": "0.4.14",
"bundled": true
},
"exit": {
"version": "0.1.2",
"bundled": true
},
"faye-websocket": {
"version": "0.10.0",
"bundled": true,
"requires": {
"websocket-driver": "0.7.0"
}
},
"find-up": {
"version": "1.1.2",
"bundled": true,
"requires": {
"path-exists": "2.1.0",
"pinkie-promise": "2.0.1"
}
},
"findup-sync": {
"version": "0.3.0",
"bundled": true,
"requires": {
"glob": "5.0.15"
},
"dependencies": {
"glob": {
"version": "5.0.15",
"bundled": true,
"requires": {
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
}
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true
},
"gaze": {
"version": "1.1.2",
"bundled": true,
"requires": {
"globule": "1.2.0"
}
},
"get-stdin": {
"version": "4.0.1",
"bundled": true
},
"getobject": {
"version": "0.1.0",
"bundled": true
},
"glob": {
"version": "7.1.2",
"bundled": true,
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"globule": {
"version": "1.2.0",
"bundled": true,
"requires": {
"glob": "7.1.2",
"lodash": "4.17.4",
"minimatch": "3.0.4"
}
},
"graceful-fs": {
"version": "4.1.11",
"bundled": true
},
"grunt": {
"version": "1.0.1",
"bundled": true,
"requires": {
"coffee-script": "1.10.0",
"dateformat": "1.0.12",
"eventemitter2": "0.4.14",
"exit": "0.1.2",
"findup-sync": "0.3.0",
"glob": "7.0.6",
"grunt-cli": "1.2.0",
"grunt-known-options": "1.1.0",
"grunt-legacy-log": "1.0.0",
"grunt-legacy-util": "1.0.0",
"iconv-lite": "0.4.19",
"js-yaml": "3.5.5",
"minimatch": "3.0.4",
"nopt": "3.0.6",
"path-is-absolute": "1.0.1",
"rimraf": "2.2.8"
},
"dependencies": {
"glob": {
"version": "7.0.6",
"bundled": true,
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"grunt-cli": {
"version": "1.2.0",
"bundled": true,
"requires": {
"findup-sync": "0.3.0",
"grunt-known-options": "1.1.0",
"nopt": "3.0.6",
"resolve": "1.1.7"
}
}
}
},
"grunt-contrib-sass": {
"version": "1.0.0",
"bundled": true,
"requires": {
"async": "0.9.2",
"chalk": "1.1.3",
"cross-spawn": "0.2.9",
"dargs": "4.1.0",
"which": "1.2.14"
},
"dependencies": {
"async": {
"version": "0.9.2",
"bundled": true
}
}
},
"grunt-contrib-watch": {
"version": "1.0.0",
"bundled": true,
"requires": {
"async": "1.5.2",
"gaze": "1.1.2",
"lodash": "3.10.1",
"tiny-lr": "0.2.1"
},
"dependencies": {
"lodash": {
"version": "3.10.1",
"bundled": true
}
}
},
"grunt-haml2html": {
"version": "0.3.1",
"bundled": true,
"requires": {
"dargs": "0.1.0"
},
"dependencies": {
"dargs": {
"version": "0.1.0",
"bundled": true
}
}
},
"grunt-known-options": {
"version": "1.1.0",
"bundled": true
},
"grunt-legacy-log": {
"version": "1.0.0",
"bundled": true,
"requires": {
"colors": "1.1.2",
"grunt-legacy-log-utils": "1.0.0",
"hooker": "0.2.3",
"lodash": "3.10.1",
"underscore.string": "3.2.3"
},
"dependencies": {
"lodash": {
"version": "3.10.1",
"bundled": true
}
}
},
"grunt-legacy-log-utils": {
"version": "1.0.0",
"bundled": true,
"requires": {
"chalk": "1.1.3",
"lodash": "4.3.0"
},
"dependencies": {
"lodash": {
"version": "4.3.0",
"bundled": true
}
}
},
"grunt-legacy-util": {
"version": "1.0.0",
"bundled": true,
"requires": {
"async": "1.5.2",
"exit": "0.1.2",
"getobject": "0.1.0",
"hooker": "0.2.3",
"lodash": "4.3.0",
"underscore.string": "3.2.3",
"which": "1.2.14"
},
"dependencies": {
"lodash": {
"version": "4.3.0",
"bundled": true
}
}
},
"grunt-newer": {
"version": "1.3.0",
"bundled": true,
"requires": {
"async": "1.5.2",
"rimraf": "2.6.2"
},
"dependencies": {
"rimraf": {
"version": "2.6.2",
"bundled": true,
"requires": {
"glob": "7.1.2"
}
}
}
},
"has-ansi": {
"version": "2.0.0",
"bundled": true,
"requires": {
"ansi-regex": "2.1.1"
}
},
"hooker": {
"version": "0.2.3",
"bundled": true
},
"hosted-git-info": {
"version": "2.5.0",
"bundled": true
},
"http-errors": {
"version": "1.3.1",
"bundled": true,
"requires": {
"inherits": "2.0.3",
"statuses": "1.4.0"
}
},
"http-parser-js": {
"version": "0.4.9",
"bundled": true
},
"iconv-lite": {
"version": "0.4.19",
"bundled": true
},
"indent-string": {
"version": "2.1.0",
"bundled": true,
"requires": {
"repeating": "2.0.1"
}
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
}
},
"inherits": {
"version": "2.0.3",
"bundled": true
},
"is-arrayish": {
"version": "0.2.1",
"bundled": true
},
"is-builtin-module": {
"version": "1.0.0",
"bundled": true,
"requires": {
"builtin-modules": "1.1.1"
}
},
"is-finite": {
"version": "1.0.2",
"bundled": true,
"requires": {
"number-is-nan": "1.0.1"
}
},
"is-utf8": {
"version": "0.2.1",
"bundled": true
},
"isexe": {
"version": "2.0.0",
"bundled": true
},
"js-yaml": {
"version": "3.5.5",
"bundled": true,
"requires": {
"argparse": "1.0.9",
"esprima": "2.7.3"
}
},
"livereload-js": {
"version": "2.2.2",
"bundled": true
},
"load-json-file": {
"version": "1.1.0",
"bundled": true,
"requires": {
"graceful-fs": "4.1.11",
"parse-json": "2.2.0",
"pify": "2.3.0",
"pinkie-promise": "2.0.1",
"strip-bom": "2.0.0"
}
},
"lodash": {
"version": "4.17.4",
"bundled": true
},
"loud-rejection": {
"version": "1.6.0",
"bundled": true,
"requires": {
"currently-unhandled": "0.4.1",
"signal-exit": "3.0.2"
}
},
"lru-cache": {
"version": "2.7.3",
"bundled": true
},
"map-obj": {
"version": "1.0.1",
"bundled": true
},
"media-typer": {
"version": "0.3.0",
"bundled": true
},
"meow": {
"version": "3.7.0",
"bundled": true,
"requires": {
"camelcase-keys": "2.1.0",
"decamelize": "1.2.0",
"loud-rejection": "1.6.0",
"map-obj": "1.0.1",
"minimist": "1.2.0",
"normalize-package-data": "2.4.0",
"object-assign": "4.1.1",
"read-pkg-up": "1.0.1",
"redent": "1.0.0",
"trim-newlines": "1.0.0"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"bundled": true
}
}
},
"mime-db": {
"version": "1.30.0",
"bundled": true
},
"mime-types": {
"version": "2.1.17",
"bundled": true,
"requires": {
"mime-db": "1.30.0"
}
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
"brace-expansion": "1.1.8"
}
},
"nopt": {
"version": "3.0.6",
"bundled": true,
"requires": {
"abbrev": "1.1.1"
}
},
"normalize-package-data": {
"version": "2.4.0",
"bundled": true,
"requires": {
"hosted-git-info": "2.5.0",
"is-builtin-module": "1.0.0",
"semver": "5.4.1",
"validate-npm-package-license": "3.0.1"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true
},
"on-finished": {
"version": "2.3.0",
"bundled": true,
"requires": {
"ee-first": "1.1.1"
}
},
"once": {
"version": "1.4.0",
"bundled": true,
"requires": {
"wrappy": "1.0.2"
}
},
"parse-json": {
"version": "2.2.0",
"bundled": true,
"requires": {
"error-ex": "1.3.1"
}
},
"parseurl": {
"version": "1.3.2",
"bundled": true
},
"path-exists": {
"version": "2.1.0",
"bundled": true,
"requires": {
"pinkie-promise": "2.0.1"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true
},
"path-type": {
"version": "1.1.0",
"bundled": true,
"requires": {
"graceful-fs": "4.1.11",
"pify": "2.3.0",
"pinkie-promise": "2.0.1"
}
},
"pify": {
"version": "2.3.0",
"bundled": true
},
"pinkie": {
"version": "2.0.4",
"bundled": true
},
"pinkie-promise": {
"version": "2.0.1",
"bundled": true,
"requires": {
"pinkie": "2.0.4"
}
},
"qs": {
"version": "5.1.0",
"bundled": true
},
"raw-body": {
"version": "2.1.7",
"bundled": true,
"requires": {
"bytes": "2.4.0",
"iconv-lite": "0.4.13",
"unpipe": "1.0.0"
},
"dependencies": {
"bytes": {
"version": "2.4.0",
"bundled": true
},
"iconv-lite": {
"version": "0.4.13",
"bundled": true
}
}
},
"read-pkg": {
"version": "1.1.0",
"bundled": true,
"requires": {
"load-json-file": "1.1.0",
"normalize-package-data": "2.4.0",
"path-type": "1.1.0"
}
},
"read-pkg-up": {
"version": "1.0.1",
"bundled": true,
"requires": {
"find-up": "1.1.2",
"read-pkg": "1.1.0"
}
},
"redent": {
"version": "1.0.0",
"bundled": true,
"requires": {
"indent-string": "2.1.0",
"strip-indent": "1.0.1"
}
},
"repeating": {
"version": "2.0.1",
"bundled": true,
"requires": {
"is-finite": "1.0.2"
}
},
"resolve": {
"version": "1.1.7",
"bundled": true
},
"rimraf": {
"version": "2.2.8",
"bundled": true
},
"semver": {
"version": "5.4.1",
"bundled": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true
},
"spdx-correct": {
"version": "1.0.2",
"bundled": true,
"requires": {
"spdx-license-ids": "1.2.2"
}
},
"spdx-expression-parse": {
"version": "1.0.4",
"bundled": true
},
"spdx-license-ids": {
"version": "1.2.2",
"bundled": true
},
"sprintf-js": {
"version": "1.0.3",
"bundled": true
},
"statuses": {
"version": "1.4.0",
"bundled": true
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"requires": {
"ansi-regex": "2.1.1"
}
},
"strip-bom": {
"version": "2.0.0",
"bundled": true,
"requires": {
"is-utf8": "0.2.1"
}
},
"strip-indent": {
"version": "1.0.1",
"bundled": true,
"requires": {
"get-stdin": "4.0.1"
}
},
"supports-color": {
"version": "2.0.0",
"bundled": true
},
"tiny-lr": {
"version": "0.2.1",
"bundled": true,
"requires": {
"body-parser": "1.14.2",
"debug": "2.2.0",
"faye-websocket": "0.10.0",
"livereload-js": "2.2.2",
"parseurl": "1.3.2",
"qs": "5.1.0"
},
"dependencies": {
"debug": {
"version": "2.2.0",
"bundled": true,
"requires": {
"ms": "0.7.1"
}
},
"ms": {
"version": "0.7.1",
"bundled": true
}
}
},
"trim-newlines": {
"version": "1.0.0",
"bundled": true
},
"type-is": {
"version": "1.6.15",
"bundled": true,
"requires": {
"media-typer": "0.3.0",
"mime-types": "2.1.17"
}
},
"underscore.string": {
"version": "3.2.3",
"bundled": true
},
"unpipe": {
"version": "1.0.0",
"bundled": true
},
"validate-npm-package-license": {
"version": "3.0.1",
"bundled": true,
"requires": {
"spdx-correct": "1.0.2",
"spdx-expression-parse": "1.0.4"
}
},
"websocket-driver": {
"version": "0.7.0",
"bundled": true,
"requires": {
"http-parser-js": "0.4.9",
"websocket-extensions": "0.1.2"
}
},
"websocket-extensions": {
"version": "0.1.2",
"bundled": true
},
"which": {
"version": "1.2.14",
"bundled": true,
"requires": {
"isexe": "2.0.0"
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true
}
}
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/sn-stylekit/-/sn-stylekit-2.0.11.tgz",
"integrity": "sha512-Tp3VEir5VrITfRbe6gJ+I1BaGw9SZ12do7ZPnGiYJoVw28b9BPsCeFUcZnUlrMK3g6Hs1pU23qSHA7CfHJGTNQ==",
"dev": true
},
"snake-case": {
"version": "2.1.0",
@@ -8969,9 +8097,9 @@
"dev": true
},
"standard-file-js": {
"version": "0.3.21",
"resolved": "https://registry.npmjs.org/standard-file-js/-/standard-file-js-0.3.21.tgz",
"integrity": "sha512-MLic68jA/EPqmNHbI2qrQn3V6/ZgazzM7C4AD6o2mORu3ZrFk64K0FPIrpN4LuA8IJi3sOqOFKsp1/caVw0zrw==",
"version": "0.3.22",
"resolved": "https://registry.npmjs.org/standard-file-js/-/standard-file-js-0.3.22.tgz",
"integrity": "sha512-nezAUHLX0K0DVtdofrWv2wuznXD8xPJLC/F/usGqtxvtqWbpH+MG99WtHidOd3D38qlGY7PER1nRbFT0WbA92w==",
"dev": true
},
"static-extend": {

View File

@@ -44,8 +44,8 @@
"mocha": "^5.2.0",
"serve-static": "^1.13.2",
"sn-models": "0.1.9",
"sn-stylekit": "file:~/Desktop/sn/dev/stylekit",
"standard-file-js": "0.3.21",
"sn-stylekit": "2.0.11",
"standard-file-js": "0.3.22",
"grunt-shell": "^2.1.0"
}
}