From 31d44af52ef0575590f2a06c6daecff3bac5dfe1 Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Sun, 16 Dec 2018 12:43:29 -0600 Subject: [PATCH] componentManager duplicate-item message --- .../javascripts/app/controllers/editor.js | 3 +- .../app/services/componentManager.js | 20 + package-lock.json | 886 +----------------- package.json | 4 +- 4 files changed, 31 insertions(+), 882 deletions(-) diff --git a/app/assets/javascripts/app/controllers/editor.js b/app/assets/javascripts/app/controllers/editor.js index d416f2565..61284ea0f 100644 --- a/app/assets/javascripts/app/controllers/editor.js +++ b/app/assets/javascripts/app/controllers/editor.js @@ -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; }); diff --git a/app/assets/javascripts/app/services/componentManager.js b/app/assets/javascripts/app/services/componentManager.js index ebc707029..a62a92fe7 100644 --- a/app/assets/javascripts/app/services/componentManager.js +++ b/app/assets/javascripts/app/services/componentManager.js @@ -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})); diff --git a/package-lock.json b/package-lock.json index 1fdc31c67..a9571bc93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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": { diff --git a/package.json b/package.json index e5c4c0613..6689a40aa 100644 --- a/package.json +++ b/package.json @@ -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" } }