@webex/internal-plugin-conversation 2.59.2 → 2.59.3-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/.eslintrc.js +6 -6
  2. package/README.md +47 -47
  3. package/babel.config.js +3 -3
  4. package/dist/activities.js +4 -4
  5. package/dist/activities.js.map +1 -1
  6. package/dist/activity-thread-ordering.js +34 -34
  7. package/dist/activity-thread-ordering.js.map +1 -1
  8. package/dist/config.js +12 -12
  9. package/dist/config.js.map +1 -1
  10. package/dist/constants.js.map +1 -1
  11. package/dist/conversation.js +474 -474
  12. package/dist/conversation.js.map +1 -1
  13. package/dist/convo-error.js +4 -4
  14. package/dist/convo-error.js.map +1 -1
  15. package/dist/decryption-transforms.js +155 -155
  16. package/dist/decryption-transforms.js.map +1 -1
  17. package/dist/encryption-transforms.js.map +1 -1
  18. package/dist/index.js +2 -2
  19. package/dist/index.js.map +1 -1
  20. package/dist/share-activity.js +57 -57
  21. package/dist/share-activity.js.map +1 -1
  22. package/dist/to-array.js +7 -7
  23. package/dist/to-array.js.map +1 -1
  24. package/jest.config.js +3 -3
  25. package/package.json +21 -20
  26. package/process +1 -1
  27. package/src/activities.js +157 -157
  28. package/src/activity-thread-ordering.js +283 -283
  29. package/src/activity-threading.md +282 -282
  30. package/src/config.js +37 -37
  31. package/src/constants.js +3 -3
  32. package/src/conversation.js +2535 -2535
  33. package/src/convo-error.js +15 -15
  34. package/src/decryption-transforms.js +541 -541
  35. package/src/encryption-transforms.js +345 -345
  36. package/src/index.js +327 -327
  37. package/src/share-activity.js +436 -436
  38. package/src/to-array.js +29 -29
  39. package/test/integration/spec/create.js +290 -290
  40. package/test/integration/spec/encryption.js +333 -333
  41. package/test/integration/spec/get.js +1255 -1255
  42. package/test/integration/spec/mercury.js +94 -94
  43. package/test/integration/spec/share.js +537 -537
  44. package/test/integration/spec/verbs.js +1041 -1041
  45. package/test/unit/spec/conversation.js +823 -823
  46. package/test/unit/spec/decrypt-transforms.js +460 -460
  47. package/test/unit/spec/encryption-transforms.js +93 -93
  48. package/test/unit/spec/share-activity.js +178 -178
@@ -1 +1 @@
1
- {"version":3,"names":["_events","require","_nodeScr","_interopRequireDefault","_common","_webexCore","_helperImage","_sha","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol2","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ownKeys","object","enumerableOnly","keys","_Object$keys","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","EMITTER_SYMBOL","_symbol","exports","FILE_SYMBOL","PROMISE_SYMBOL","ShareActivity","WebexPlugin","extend","getSymbols","file","emitter","namespace","derived","deps","fn","conversation","session","claimedFileType","required","type","content","clientTempId","displayName","enableThumbnails","hiddenSpaceUrl","mentions","spaceUrl","uploads","_default","_map2","initialize","attrs","options","_apply","_promise","resolve","_spaceUrl","_retrieveSpaceUrl","concat","url","then","_hiddenSpaceUrl","addGif","gif","gifToAdd","get","fileSize","size","byteLength","mimeType","objectType","height","width","image","_pick2","set","SCR","create","scr","loc","thumbnailScr","add","_objectSpread3","_this","substring","lastIndexOf","upload","EventEmitter","promise","detectFileType","logger","processImage","thumbnailMaxWidth","config","thumbnailMaxHeight","imageData","main","webex","internal","encryption","encryptBinary","_ref","cdata","all","_ref2","_ref3","_slicedToArray2","uploadPromise","_upload","transferEvents","metadata","downloadUrl","thumb","_imageData","thumbnail","fileDimensions","thumbnailDimensions","_assign","_ref4","_ref5","_ref6","proxyEvents","getFiles","files","_iterator","_step","_step$value","uri","uploadOptions","fileHash","sha256","_ref7","role","initializeBody","qs","transcode","phases","body","$url","uploadUrl","finalize","$uri","finishUploadUrl","remove","delete","prepare","Error","activity","verb","undefined","items","promises","item","contentCategory","_determineContentCategory","_itemContainsActionWithMimeType","_some2","map","actions","mimeTypes","_filter2","_map3","split","shift","_iterator2","_step2","request","method","res","version","_object$object","_files$items","_files","_deleteProperty","share","parent","_default2"],"sources":["share-activity.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\n\nimport SCR from 'node-scr';\nimport {proxyEvents, transferEvents} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\nimport {filter, map, pick, some} from 'lodash';\nimport {detectFileType, processImage} from '@webex/helper-image';\nimport sha256 from 'crypto-js/sha256';\n\nexport const EMITTER_SYMBOL = Symbol('EMITTER_SYMBOL');\nexport const FILE_SYMBOL = Symbol('FILE_SYMBOL');\nconst PROMISE_SYMBOL = Symbol('PROMISE_SYMBOL');\n\n/**\n * @class\n */\nconst ShareActivity = WebexPlugin.extend({\n getSymbols() {\n return {\n file: FILE_SYMBOL,\n emitter: EMITTER_SYMBOL,\n };\n },\n\n namespace: 'Conversation',\n\n derived: {\n target: {\n deps: ['conversation'],\n fn() {\n return this.conversation;\n },\n },\n },\n\n session: {\n claimedFileType: 'string',\n conversation: {\n required: true,\n type: 'object',\n },\n\n content: 'string',\n\n clientTempId: 'string',\n\n displayName: 'string',\n\n enableThumbnails: {\n default: true,\n type: 'boolean',\n },\n\n hiddenSpaceUrl: 'object',\n\n mentions: 'object',\n\n spaceUrl: 'object',\n\n uploads: {\n type: 'object',\n default() {\n return new Map();\n },\n },\n },\n\n initialize(attrs, options) {\n Reflect.apply(WebexPlugin.prototype.initialize, this, [attrs, options]);\n\n if (attrs && attrs.conversation) {\n this.spaceUrl = Promise.resolve(\n attrs.conversation._spaceUrl ||\n this._retrieveSpaceUrl(`${attrs.conversation.url}/space`).then((url) => {\n attrs.conversation._spaceUrl = url;\n\n return url;\n })\n );\n this.hiddenSpaceUrl = Promise.resolve(\n attrs.conversation._hiddenSpaceUrl ||\n this._retrieveSpaceUrl(`${attrs.conversation.url}/space/hidden`).then((url) => {\n attrs.conversation._hiddenSpaceUrl = url;\n\n return url;\n })\n );\n }\n },\n\n /**\n * Adds an additional GIF to the share activity\n * Different from regular add to skip uploading to webex files service\n * @param {File} gif\n * @param {File} gif.image // thumbnail\n * @param {Object} options\n * @param {Object} options.actions\n * @returns {Promise}\n */\n addGif(gif, options) {\n let gifToAdd = this.uploads.get(gif);\n\n // If the gif already exists, then don't do anything\n if (gifToAdd) {\n return Promise.resolve();\n }\n\n gifToAdd = {\n displayName: gif.name,\n fileSize: gif.size || gif.byteLength || gif.length,\n mimeType: gif.type,\n url: 'https://giphy.com',\n objectType: 'file',\n height: gif.height,\n width: gif.width,\n image: {\n height: gif.image.height,\n width: gif.image.width,\n url: 'https://giphy.com',\n },\n [FILE_SYMBOL]: gif,\n ...pick(options, 'actions'),\n };\n\n this.uploads.set(gif, gifToAdd);\n\n /* Instead of encryptBinary, which produces a encrypted version of\n * the file for upload and a SCR (contains info needed to encrypt the\n * SCR itself and the displayName), we directly create an SCR.\n * Because we are skipping uploading, the encrypted file is not needed.\n */\n return SCR.create()\n .then((scr) => {\n scr.loc = gif.url;\n gifToAdd.scr = scr;\n\n return SCR.create();\n })\n .then((thumbnailScr) => {\n thumbnailScr.loc = gif.image.url;\n gifToAdd.image.scr = thumbnailScr;\n });\n },\n\n /**\n * Adds an additional file to the share and begins submitting it to webex\n * files\n * @param {File} file\n * @param {Object} options\n * @param {Object} options.actions\n * @returns {EventEmittingPromise}\n */\n add(file, options) {\n options = options || {};\n options.claimedFileType = file.name.substring(file.name.lastIndexOf('.'));\n let upload = this.uploads.get(file);\n\n if (upload) {\n return upload[PROMISE_SYMBOL];\n }\n const emitter = new EventEmitter();\n\n upload = {\n displayName: file.name,\n fileSize: file.size || file.byteLength || file.length,\n mimeType: file.type,\n objectType: 'file',\n [EMITTER_SYMBOL]: emitter,\n [FILE_SYMBOL]: file,\n ...pick(options, 'actions'),\n };\n\n this.uploads.set(file, upload);\n const promise = detectFileType(file, this.logger)\n .then((type) => {\n upload.mimeType = type;\n\n return processImage({\n file,\n type,\n thumbnailMaxWidth: this.config.thumbnailMaxWidth,\n thumbnailMaxHeight: this.config.thumbnailMaxHeight,\n enableThumbnails: this.enableThumbnails,\n logger: this.logger,\n });\n })\n .then((imageData) => {\n const main = this.webex.internal.encryption\n .encryptBinary(file)\n .then(({scr, cdata}) => {\n upload.scr = scr;\n\n return Promise.all([cdata, this.spaceUrl]);\n })\n .then(([cdata, spaceUrl]) => {\n const uploadPromise = this._upload(cdata, `${spaceUrl}/upload_sessions`, options);\n\n transferEvents('progress', uploadPromise, emitter);\n\n return uploadPromise;\n })\n .then((metadata) => {\n upload.url = upload.scr.loc = metadata.downloadUrl;\n });\n\n let thumb;\n\n if (imageData) {\n const [thumbnail, fileDimensions, thumbnailDimensions] = imageData;\n\n Object.assign(upload, fileDimensions);\n\n if (thumbnail && thumbnailDimensions) {\n upload.image = thumbnailDimensions;\n thumb = this.webex.internal.encryption\n .encryptBinary(thumbnail)\n .then(({scr, cdata}) => {\n upload.image.scr = scr;\n\n return Promise.all([cdata, this.hiddenSpaceUrl]);\n })\n .then(([cdata, spaceUrl]) => this._upload(cdata, `${spaceUrl}/upload_sessions`))\n .then((metadata) => {\n upload.image.url = upload.image.scr.loc = metadata.downloadUrl;\n });\n }\n }\n\n return Promise.all([main, thumb]);\n });\n\n upload[PROMISE_SYMBOL] = promise;\n\n proxyEvents(emitter, promise);\n\n return promise;\n },\n\n /**\n * Fetches the files from the share\n * @returns {Array}\n */\n getFiles() {\n const files = [];\n\n for (const [key] of this.uploads) {\n files.push(this.uploads.get(key)[FILE_SYMBOL]);\n }\n\n return files;\n },\n\n /**\n * @param {File} file\n * @param {string} uri\n * @param {Object} uploadOptions - Optional object adding additional params to request body\n * @private\n * @returns {Promise}\n */\n _upload(file, uri, uploadOptions) {\n const fileSize = file.length || file.size || file.byteLength;\n const fileHash = sha256(file).toString();\n const {role, claimedFileType} = uploadOptions ?? {};\n const initializeBody = {fileSize, claimedFileType, ...(role && {role})};\n\n return this.webex.upload({\n uri,\n file,\n qs: {\n transcode: true,\n },\n phases: {\n initialize: {\n body: initializeBody,\n },\n upload: {\n $url(session) {\n return session.uploadUrl;\n },\n },\n finalize: {\n $uri(session) {\n return session.finishUploadUrl;\n },\n body: {fileSize, fileHash},\n },\n },\n });\n },\n\n /**\n * Removes the specified file from the share (Does not currently delete the\n * uploaded file)\n * @param {File} file\n * @returns {Promise}\n */\n remove(file) {\n this.uploads.delete(file);\n\n // Returns a promise for future-proofiness.\n return Promise.resolve();\n },\n\n /**\n * @private\n * @returns {Promise<Object>}\n */\n prepare() {\n if (!this.uploads.size) {\n throw new Error('Cannot submit a share activity without at least one file');\n }\n\n const activity = {\n verb: 'share',\n object: {\n objectType: 'content',\n displayName: this.object && this.object.displayName ? this.object.displayName : undefined,\n content: this.object && this.object.content ? this.object.content : undefined,\n mentions: this.object && this.object.mentions ? this.object.mentions : undefined,\n files: {\n items: [],\n },\n },\n clientTempId: this.clientTempId,\n };\n\n const promises = [];\n\n this.uploads.forEach((item) => {\n activity.object.files.items.push(item);\n promises.push(item[PROMISE_SYMBOL]);\n });\n\n activity.object.contentCategory = this._determineContentCategory(activity.object.files.items);\n\n return Promise.all(promises).then(() => activity);\n },\n\n /**\n * @param {Array} items\n * @param {string} mimeType\n * @private\n * @returns {boolean}\n */\n _itemContainsActionWithMimeType(items, mimeType) {\n return some(items.map((item) => some(item.actions, {mimeType})));\n },\n\n /**\n * @param {Array} items\n * @private\n * @returns {string}\n */\n _determineContentCategory(items) {\n // determine if the items contain an image\n if (this._itemContainsActionWithMimeType(items, 'application/x-cisco-webex-whiteboard')) {\n return 'documents';\n }\n\n const mimeTypes = filter(map(items, 'mimeType'));\n\n if (mimeTypes.length !== items.length) {\n return 'documents';\n }\n\n const contentCategory = mimeTypes[0].split('/').shift();\n\n if (contentCategory !== 'video' && contentCategory !== 'image') {\n return 'documents';\n }\n\n for (const mimeType of mimeTypes) {\n if (mimeType.split('/').shift() !== contentCategory) {\n return 'documents';\n }\n }\n\n return `${contentCategory}s`;\n },\n\n /**\n * @param {string} uri\n * @returns {Promise}\n */\n _retrieveSpaceUrl(uri) {\n return this.webex\n .request({\n method: 'PUT',\n uri,\n })\n .then((res) => res.body.spaceUrl);\n },\n});\n\n/**\n * Instantiates a ShareActivity\n * @param {Object} conversation\n * @param {ShareActivity|Object|array} object\n * @param {ProxyWebex} webex\n * @returns {ShareActivity}\n */\nShareActivity.create = function create(conversation, object, webex) {\n if (object instanceof ShareActivity) {\n return object;\n }\n\n let files;\n\n if (object?.object?.files) {\n files = object.object.files;\n Reflect.deleteProperty(object.object, 'files');\n }\n\n const share = new ShareActivity(\n {\n conversation,\n ...object,\n },\n {\n parent: webex,\n }\n );\n\n files = files?.items ?? files;\n if (files) {\n files.forEach((file) => share.add(file));\n }\n\n return share;\n};\n\nexport default ShareActivity;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_events","require","_nodeScr","_interopRequireDefault","_common","_webexCore","_helperImage","_sha","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol2","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ownKeys","object","enumerableOnly","keys","_Object$keys","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","EMITTER_SYMBOL","_symbol","exports","FILE_SYMBOL","PROMISE_SYMBOL","ShareActivity","WebexPlugin","extend","getSymbols","file","emitter","namespace","derived","deps","fn","conversation","session","claimedFileType","required","type","content","clientTempId","displayName","enableThumbnails","hiddenSpaceUrl","mentions","spaceUrl","uploads","_default","_map2","initialize","attrs","options","_apply","_promise","resolve","_spaceUrl","_retrieveSpaceUrl","concat","url","then","_hiddenSpaceUrl","addGif","gif","gifToAdd","get","fileSize","size","byteLength","mimeType","objectType","height","width","image","_pick2","set","SCR","create","scr","loc","thumbnailScr","add","_objectSpread3","_this","substring","lastIndexOf","upload","EventEmitter","promise","detectFileType","logger","processImage","thumbnailMaxWidth","config","thumbnailMaxHeight","imageData","main","webex","internal","encryption","encryptBinary","_ref","cdata","all","_ref2","_ref3","_slicedToArray2","uploadPromise","_upload","transferEvents","metadata","downloadUrl","thumb","_imageData","thumbnail","fileDimensions","thumbnailDimensions","_assign","_ref4","_ref5","_ref6","proxyEvents","getFiles","files","_iterator","_step","_step$value","uri","uploadOptions","fileHash","sha256","_ref7","role","initializeBody","qs","transcode","phases","body","$url","uploadUrl","finalize","$uri","finishUploadUrl","remove","delete","prepare","Error","activity","verb","undefined","items","promises","item","contentCategory","_determineContentCategory","_itemContainsActionWithMimeType","_some2","map","actions","mimeTypes","_filter2","_map3","split","shift","_iterator2","_step2","request","method","res","version","_object$object","_files$items","_files","_deleteProperty","share","parent","_default2"],"sources":["share-activity.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nimport {EventEmitter} from 'events';\r\n\r\nimport SCR from 'node-scr';\r\nimport {proxyEvents, transferEvents} from '@webex/common';\r\nimport {WebexPlugin} from '@webex/webex-core';\r\nimport {filter, map, pick, some} from 'lodash';\r\nimport {detectFileType, processImage} from '@webex/helper-image';\r\nimport sha256 from 'crypto-js/sha256';\r\n\r\nexport const EMITTER_SYMBOL = Symbol('EMITTER_SYMBOL');\r\nexport const FILE_SYMBOL = Symbol('FILE_SYMBOL');\r\nconst PROMISE_SYMBOL = Symbol('PROMISE_SYMBOL');\r\n\r\n/**\r\n * @class\r\n */\r\nconst ShareActivity = WebexPlugin.extend({\r\n getSymbols() {\r\n return {\r\n file: FILE_SYMBOL,\r\n emitter: EMITTER_SYMBOL,\r\n };\r\n },\r\n\r\n namespace: 'Conversation',\r\n\r\n derived: {\r\n target: {\r\n deps: ['conversation'],\r\n fn() {\r\n return this.conversation;\r\n },\r\n },\r\n },\r\n\r\n session: {\r\n claimedFileType: 'string',\r\n conversation: {\r\n required: true,\r\n type: 'object',\r\n },\r\n\r\n content: 'string',\r\n\r\n clientTempId: 'string',\r\n\r\n displayName: 'string',\r\n\r\n enableThumbnails: {\r\n default: true,\r\n type: 'boolean',\r\n },\r\n\r\n hiddenSpaceUrl: 'object',\r\n\r\n mentions: 'object',\r\n\r\n spaceUrl: 'object',\r\n\r\n uploads: {\r\n type: 'object',\r\n default() {\r\n return new Map();\r\n },\r\n },\r\n },\r\n\r\n initialize(attrs, options) {\r\n Reflect.apply(WebexPlugin.prototype.initialize, this, [attrs, options]);\r\n\r\n if (attrs && attrs.conversation) {\r\n this.spaceUrl = Promise.resolve(\r\n attrs.conversation._spaceUrl ||\r\n this._retrieveSpaceUrl(`${attrs.conversation.url}/space`).then((url) => {\r\n attrs.conversation._spaceUrl = url;\r\n\r\n return url;\r\n })\r\n );\r\n this.hiddenSpaceUrl = Promise.resolve(\r\n attrs.conversation._hiddenSpaceUrl ||\r\n this._retrieveSpaceUrl(`${attrs.conversation.url}/space/hidden`).then((url) => {\r\n attrs.conversation._hiddenSpaceUrl = url;\r\n\r\n return url;\r\n })\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Adds an additional GIF to the share activity\r\n * Different from regular add to skip uploading to webex files service\r\n * @param {File} gif\r\n * @param {File} gif.image // thumbnail\r\n * @param {Object} options\r\n * @param {Object} options.actions\r\n * @returns {Promise}\r\n */\r\n addGif(gif, options) {\r\n let gifToAdd = this.uploads.get(gif);\r\n\r\n // If the gif already exists, then don't do anything\r\n if (gifToAdd) {\r\n return Promise.resolve();\r\n }\r\n\r\n gifToAdd = {\r\n displayName: gif.name,\r\n fileSize: gif.size || gif.byteLength || gif.length,\r\n mimeType: gif.type,\r\n url: 'https://giphy.com',\r\n objectType: 'file',\r\n height: gif.height,\r\n width: gif.width,\r\n image: {\r\n height: gif.image.height,\r\n width: gif.image.width,\r\n url: 'https://giphy.com',\r\n },\r\n [FILE_SYMBOL]: gif,\r\n ...pick(options, 'actions'),\r\n };\r\n\r\n this.uploads.set(gif, gifToAdd);\r\n\r\n /* Instead of encryptBinary, which produces a encrypted version of\r\n * the file for upload and a SCR (contains info needed to encrypt the\r\n * SCR itself and the displayName), we directly create an SCR.\r\n * Because we are skipping uploading, the encrypted file is not needed.\r\n */\r\n return SCR.create()\r\n .then((scr) => {\r\n scr.loc = gif.url;\r\n gifToAdd.scr = scr;\r\n\r\n return SCR.create();\r\n })\r\n .then((thumbnailScr) => {\r\n thumbnailScr.loc = gif.image.url;\r\n gifToAdd.image.scr = thumbnailScr;\r\n });\r\n },\r\n\r\n /**\r\n * Adds an additional file to the share and begins submitting it to webex\r\n * files\r\n * @param {File} file\r\n * @param {Object} options\r\n * @param {Object} options.actions\r\n * @returns {EventEmittingPromise}\r\n */\r\n add(file, options) {\r\n options = options || {};\r\n options.claimedFileType = file.name.substring(file.name.lastIndexOf('.'));\r\n let upload = this.uploads.get(file);\r\n\r\n if (upload) {\r\n return upload[PROMISE_SYMBOL];\r\n }\r\n const emitter = new EventEmitter();\r\n\r\n upload = {\r\n displayName: file.name,\r\n fileSize: file.size || file.byteLength || file.length,\r\n mimeType: file.type,\r\n objectType: 'file',\r\n [EMITTER_SYMBOL]: emitter,\r\n [FILE_SYMBOL]: file,\r\n ...pick(options, 'actions'),\r\n };\r\n\r\n this.uploads.set(file, upload);\r\n const promise = detectFileType(file, this.logger)\r\n .then((type) => {\r\n upload.mimeType = type;\r\n\r\n return processImage({\r\n file,\r\n type,\r\n thumbnailMaxWidth: this.config.thumbnailMaxWidth,\r\n thumbnailMaxHeight: this.config.thumbnailMaxHeight,\r\n enableThumbnails: this.enableThumbnails,\r\n logger: this.logger,\r\n });\r\n })\r\n .then((imageData) => {\r\n const main = this.webex.internal.encryption\r\n .encryptBinary(file)\r\n .then(({scr, cdata}) => {\r\n upload.scr = scr;\r\n\r\n return Promise.all([cdata, this.spaceUrl]);\r\n })\r\n .then(([cdata, spaceUrl]) => {\r\n const uploadPromise = this._upload(cdata, `${spaceUrl}/upload_sessions`, options);\r\n\r\n transferEvents('progress', uploadPromise, emitter);\r\n\r\n return uploadPromise;\r\n })\r\n .then((metadata) => {\r\n upload.url = upload.scr.loc = metadata.downloadUrl;\r\n });\r\n\r\n let thumb;\r\n\r\n if (imageData) {\r\n const [thumbnail, fileDimensions, thumbnailDimensions] = imageData;\r\n\r\n Object.assign(upload, fileDimensions);\r\n\r\n if (thumbnail && thumbnailDimensions) {\r\n upload.image = thumbnailDimensions;\r\n thumb = this.webex.internal.encryption\r\n .encryptBinary(thumbnail)\r\n .then(({scr, cdata}) => {\r\n upload.image.scr = scr;\r\n\r\n return Promise.all([cdata, this.hiddenSpaceUrl]);\r\n })\r\n .then(([cdata, spaceUrl]) => this._upload(cdata, `${spaceUrl}/upload_sessions`))\r\n .then((metadata) => {\r\n upload.image.url = upload.image.scr.loc = metadata.downloadUrl;\r\n });\r\n }\r\n }\r\n\r\n return Promise.all([main, thumb]);\r\n });\r\n\r\n upload[PROMISE_SYMBOL] = promise;\r\n\r\n proxyEvents(emitter, promise);\r\n\r\n return promise;\r\n },\r\n\r\n /**\r\n * Fetches the files from the share\r\n * @returns {Array}\r\n */\r\n getFiles() {\r\n const files = [];\r\n\r\n for (const [key] of this.uploads) {\r\n files.push(this.uploads.get(key)[FILE_SYMBOL]);\r\n }\r\n\r\n return files;\r\n },\r\n\r\n /**\r\n * @param {File} file\r\n * @param {string} uri\r\n * @param {Object} uploadOptions - Optional object adding additional params to request body\r\n * @private\r\n * @returns {Promise}\r\n */\r\n _upload(file, uri, uploadOptions) {\r\n const fileSize = file.length || file.size || file.byteLength;\r\n const fileHash = sha256(file).toString();\r\n const {role, claimedFileType} = uploadOptions ?? {};\r\n const initializeBody = {fileSize, claimedFileType, ...(role && {role})};\r\n\r\n return this.webex.upload({\r\n uri,\r\n file,\r\n qs: {\r\n transcode: true,\r\n },\r\n phases: {\r\n initialize: {\r\n body: initializeBody,\r\n },\r\n upload: {\r\n $url(session) {\r\n return session.uploadUrl;\r\n },\r\n },\r\n finalize: {\r\n $uri(session) {\r\n return session.finishUploadUrl;\r\n },\r\n body: {fileSize, fileHash},\r\n },\r\n },\r\n });\r\n },\r\n\r\n /**\r\n * Removes the specified file from the share (Does not currently delete the\r\n * uploaded file)\r\n * @param {File} file\r\n * @returns {Promise}\r\n */\r\n remove(file) {\r\n this.uploads.delete(file);\r\n\r\n // Returns a promise for future-proofiness.\r\n return Promise.resolve();\r\n },\r\n\r\n /**\r\n * @private\r\n * @returns {Promise<Object>}\r\n */\r\n prepare() {\r\n if (!this.uploads.size) {\r\n throw new Error('Cannot submit a share activity without at least one file');\r\n }\r\n\r\n const activity = {\r\n verb: 'share',\r\n object: {\r\n objectType: 'content',\r\n displayName: this.object && this.object.displayName ? this.object.displayName : undefined,\r\n content: this.object && this.object.content ? this.object.content : undefined,\r\n mentions: this.object && this.object.mentions ? this.object.mentions : undefined,\r\n files: {\r\n items: [],\r\n },\r\n },\r\n clientTempId: this.clientTempId,\r\n };\r\n\r\n const promises = [];\r\n\r\n this.uploads.forEach((item) => {\r\n activity.object.files.items.push(item);\r\n promises.push(item[PROMISE_SYMBOL]);\r\n });\r\n\r\n activity.object.contentCategory = this._determineContentCategory(activity.object.files.items);\r\n\r\n return Promise.all(promises).then(() => activity);\r\n },\r\n\r\n /**\r\n * @param {Array} items\r\n * @param {string} mimeType\r\n * @private\r\n * @returns {boolean}\r\n */\r\n _itemContainsActionWithMimeType(items, mimeType) {\r\n return some(items.map((item) => some(item.actions, {mimeType})));\r\n },\r\n\r\n /**\r\n * @param {Array} items\r\n * @private\r\n * @returns {string}\r\n */\r\n _determineContentCategory(items) {\r\n // determine if the items contain an image\r\n if (this._itemContainsActionWithMimeType(items, 'application/x-cisco-webex-whiteboard')) {\r\n return 'documents';\r\n }\r\n\r\n const mimeTypes = filter(map(items, 'mimeType'));\r\n\r\n if (mimeTypes.length !== items.length) {\r\n return 'documents';\r\n }\r\n\r\n const contentCategory = mimeTypes[0].split('/').shift();\r\n\r\n if (contentCategory !== 'video' && contentCategory !== 'image') {\r\n return 'documents';\r\n }\r\n\r\n for (const mimeType of mimeTypes) {\r\n if (mimeType.split('/').shift() !== contentCategory) {\r\n return 'documents';\r\n }\r\n }\r\n\r\n return `${contentCategory}s`;\r\n },\r\n\r\n /**\r\n * @param {string} uri\r\n * @returns {Promise}\r\n */\r\n _retrieveSpaceUrl(uri) {\r\n return this.webex\r\n .request({\r\n method: 'PUT',\r\n uri,\r\n })\r\n .then((res) => res.body.spaceUrl);\r\n },\r\n});\r\n\r\n/**\r\n * Instantiates a ShareActivity\r\n * @param {Object} conversation\r\n * @param {ShareActivity|Object|array} object\r\n * @param {ProxyWebex} webex\r\n * @returns {ShareActivity}\r\n */\r\nShareActivity.create = function create(conversation, object, webex) {\r\n if (object instanceof ShareActivity) {\r\n return object;\r\n }\r\n\r\n let files;\r\n\r\n if (object?.object?.files) {\r\n files = object.object.files;\r\n Reflect.deleteProperty(object.object, 'files');\r\n }\r\n\r\n const share = new ShareActivity(\r\n {\r\n conversation,\r\n ...object,\r\n },\r\n {\r\n parent: webex,\r\n }\r\n );\r\n\r\n files = files?.items ?? files;\r\n if (files) {\r\n files.forEach((file) => share.add(file));\r\n }\r\n\r\n return share;\r\n};\r\n\r\nexport default ShareActivity;\r\n"],"mappings":"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"}
package/dist/to-array.js CHANGED
@@ -16,13 +16,13 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
16
16
  var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
17
17
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
18
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
19
- /**
20
- * Helper to convert objects into arrays of transforms. probably belongs in
21
- * webex-core
22
- * @param {string} direction "inbound"|"outbound"
23
- * @param {Object} obj
24
- * @private
25
- * @returns {Array}
19
+ /**
20
+ * Helper to convert objects into arrays of transforms. probably belongs in
21
+ * webex-core
22
+ * @param {string} direction "inbound"|"outbound"
23
+ * @param {Object} obj
24
+ * @private
25
+ * @returns {Array}
26
26
  */
27
27
  function toArray(direction, obj) {
28
28
  return (0, _keys.default)(obj).map(function (name) {
@@ -1 +1 @@
1
- {"version":3,"names":["toArray","direction","obj","_keys","default","map","name","entry","_isFunction2","fn","_objectSpread"],"sources":["to-array.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {isFunction} from 'lodash';\n\n/**\n * Helper to convert objects into arrays of transforms. probably belongs in\n * webex-core\n * @param {string} direction \"inbound\"|\"outbound\"\n * @param {Object} obj\n * @private\n * @returns {Array}\n */\nexport default function toArray(direction, obj) {\n return Object.keys(obj).map((name) => {\n const entry = obj[name];\n\n if (isFunction(entry)) {\n return {\n name,\n direction,\n fn: entry,\n };\n }\n\n return {name, ...entry};\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,OAAOA,CAACC,SAAS,EAAEC,GAAG,EAAE;EAC9C,OAAO,IAAAC,KAAA,CAAAC,OAAA,EAAYF,GAAG,CAAC,CAACG,GAAG,CAAC,UAACC,IAAI,EAAK;IACpC,IAAMC,KAAK,GAAGL,GAAG,CAACI,IAAI,CAAC;IAEvB,IAAI,IAAAE,YAAA,CAAAJ,OAAA,EAAWG,KAAK,CAAC,EAAE;MACrB,OAAO;QACLD,IAAI,EAAJA,IAAI;QACJL,SAAS,EAATA,SAAS;QACTQ,EAAE,EAAEF;MACN,CAAC;IACH;IAEA,OAAAG,aAAA;MAAQJ,IAAI,EAAJA;IAAI,GAAKC,KAAK;EACxB,CAAC,CAAC;AACJ"}
1
+ {"version":3,"names":["toArray","direction","obj","_keys","default","map","name","entry","_isFunction2","fn","_objectSpread"],"sources":["to-array.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nimport {isFunction} from 'lodash';\r\n\r\n/**\r\n * Helper to convert objects into arrays of transforms. probably belongs in\r\n * webex-core\r\n * @param {string} direction \"inbound\"|\"outbound\"\r\n * @param {Object} obj\r\n * @private\r\n * @returns {Array}\r\n */\r\nexport default function toArray(direction, obj) {\r\n return Object.keys(obj).map((name) => {\r\n const entry = obj[name];\r\n\r\n if (isFunction(entry)) {\r\n return {\r\n name,\r\n direction,\r\n fn: entry,\r\n };\r\n }\r\n\r\n return {name, ...entry};\r\n });\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,OAAOA,CAACC,SAAS,EAAEC,GAAG,EAAE;EAC9C,OAAO,IAAAC,KAAA,CAAAC,OAAA,EAAYF,GAAG,CAAC,CAACG,GAAG,CAAC,UAACC,IAAI,EAAK;IACpC,IAAMC,KAAK,GAAGL,GAAG,CAACI,IAAI,CAAC;IAEvB,IAAI,IAAAE,YAAA,CAAAJ,OAAA,EAAWG,KAAK,CAAC,EAAE;MACrB,OAAO;QACLD,IAAI,EAAJA,IAAI;QACJL,SAAS,EAATA,SAAS;QACTQ,EAAE,EAAEF;MACN,CAAC;IACH;IAEA,OAAAG,aAAA;MAAQJ,IAAI,EAAJA;IAAI,GAAKC,KAAK;EACxB,CAAC,CAAC;AACJ"}
package/jest.config.js CHANGED
@@ -1,3 +1,3 @@
1
- const config = require('@webex/jest-config-legacy');
2
-
3
- module.exports = config;
1
+ const config = require('@webex/jest-config-legacy');
2
+
3
+ module.exports = config;
package/package.json CHANGED
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "name": "@webex/internal-plugin-conversation",
3
- "version": "2.59.2",
4
3
  "description": "",
5
4
  "license": "MIT",
6
5
  "main": "dist/index.js",
@@ -20,12 +19,12 @@
20
19
  ]
21
20
  },
22
21
  "dependencies": {
23
- "@webex/common": "2.59.2",
24
- "@webex/helper-html": "2.59.2",
25
- "@webex/helper-image": "2.59.2",
26
- "@webex/internal-plugin-encryption": "2.59.2",
27
- "@webex/internal-plugin-user": "2.59.2",
28
- "@webex/webex-core": "2.59.2",
22
+ "@webex/common": "^2.59.3-next.1",
23
+ "@webex/helper-html": "^2.59.3-next.1",
24
+ "@webex/helper-image": "^2.59.3-next.1",
25
+ "@webex/internal-plugin-encryption": "^2.59.3-next.1",
26
+ "@webex/internal-plugin-user": "^2.59.3-next.1",
27
+ "@webex/webex-core": "^2.59.3-next.1",
29
28
  "crypto-js": "^4.1.1",
30
29
  "lodash": "^4.17.21",
31
30
  "node-scr": "^0.3.0",
@@ -33,17 +32,17 @@
33
32
  },
34
33
  "devDependencies": {
35
34
  "@babel/core": "^7.17.10",
36
- "@webex/babel-config-legacy": "2.59.2",
37
- "@webex/eslint-config-legacy": "2.59.2",
38
- "@webex/jest-config-legacy": "2.59.2",
39
- "@webex/legacy-tools": "2.59.2",
40
- "@webex/test-helper-chai": "2.59.2",
41
- "@webex/test-helper-file": "2.59.2",
42
- "@webex/test-helper-make-local-url": "2.59.2",
43
- "@webex/test-helper-mocha": "2.59.2",
44
- "@webex/test-helper-mock-webex": "2.59.2",
45
- "@webex/test-helper-retry": "2.59.2",
46
- "@webex/test-helper-test-users": "2.59.2",
35
+ "@webex/babel-config-legacy": "^0.0.0",
36
+ "@webex/eslint-config-legacy": "^0.0.0",
37
+ "@webex/jest-config-legacy": "^0.0.0",
38
+ "@webex/legacy-tools": "^0.0.0",
39
+ "@webex/test-helper-chai": "^2.59.3-next.1",
40
+ "@webex/test-helper-file": "^2.59.3-next.1",
41
+ "@webex/test-helper-make-local-url": "^2.59.3-next.1",
42
+ "@webex/test-helper-mocha": "^2.59.3-next.1",
43
+ "@webex/test-helper-mock-webex": "^2.59.3-next.1",
44
+ "@webex/test-helper-retry": "^2.59.3-next.1",
45
+ "@webex/test-helper-test-users": "^2.59.3-next.1",
47
46
  "eslint": "^8.24.0",
48
47
  "prettier": "^2.7.1",
49
48
  "sinon": "^9.2.4"
@@ -51,10 +50,12 @@
51
50
  "scripts": {
52
51
  "build": "yarn build:src",
53
52
  "build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
53
+ "deploy:npm": "yarn npm publish",
54
54
  "test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
55
55
  "test:browser:broken": "webex-legacy-tools test --integration --unit --runner karma",
56
56
  "test:integration:broken": "webex-legacy-tools test --integration --runner mocha",
57
57
  "test:style": "eslint ./src/**/*.*",
58
58
  "test:unit": "webex-legacy-tools test --unit --runner jest"
59
- }
60
- }
59
+ },
60
+ "version": "2.59.3-next.1"
61
+ }
package/process CHANGED
@@ -1 +1 @@
1
- module.exports = {browser: true};
1
+ module.exports = {browser: true};
package/src/activities.js CHANGED
@@ -1,157 +1,157 @@
1
- import {sortBy} from 'lodash';
2
-
3
- export const OLDER = 'older';
4
- export const NEWER = 'newer';
5
- export const MID = 'mid';
6
- export const INITIAL = 'initial';
7
-
8
- export const ACTIVITY_TYPES = {
9
- REPLY: 'REPLY',
10
- EDIT: 'EDIT',
11
- REACTION: 'REACTION',
12
- REACTION_SELF: 'REACTION_SELF',
13
- ROOT: 'ROOT',
14
- CREATE: 'CREATE',
15
- TOMBSTONE: 'TOMBSTONE',
16
- DELETE: 'DELETE',
17
- REPLY_EDIT: 'REPLY_EDIT',
18
- };
19
-
20
- const REPLY = 'reply';
21
- const EDIT = 'edit';
22
- const REACTION_SUMMARY = 'reactionSummary';
23
- const REACTION_SELF_SUMMARY = 'reactionSelfSummary';
24
- const CREATE = 'create';
25
- const TOMBSTONE = 'tombstone';
26
- const DELETE = 'delete';
27
- const ADD = 'add';
28
-
29
- export const getActivityType = (activity) => {
30
- if (activity.parent?.type === REPLY) {
31
- return ACTIVITY_TYPES.REPLY;
32
- }
33
- if (activity.parent?.type === EDIT) {
34
- return ACTIVITY_TYPES.EDIT;
35
- }
36
- if (activity.verb === ADD || activity.type === REACTION_SUMMARY) {
37
- return ACTIVITY_TYPES.REACTION;
38
- }
39
- if (activity.type === REACTION_SELF_SUMMARY) {
40
- return ACTIVITY_TYPES.REACTION_SELF;
41
- }
42
- if (activity.verb === CREATE) {
43
- return ACTIVITY_TYPES.CREATE;
44
- }
45
- if (activity.verb === TOMBSTONE) {
46
- return ACTIVITY_TYPES.TOMBSTONE;
47
- }
48
- if (activity.verb === DELETE) {
49
- return ACTIVITY_TYPES.DELETE;
50
- }
51
-
52
- return ACTIVITY_TYPES.ROOT;
53
- };
54
-
55
- export const getPublishedDate = (activity = {}) => new Date(activity.published).getTime();
56
-
57
- /**
58
- * @param {Object} activity1
59
- * @param {Object} activity2
60
- * @returns {boolean} true if first activity is newer than second
61
- */
62
- export const isNewer = (activity1, activity2) =>
63
- getPublishedDate(activity1) > getPublishedDate(activity2);
64
-
65
- export const sortActivitiesByPublishedDate = (activities) =>
66
- sortBy(activities, (activity) => getPublishedDate(activity));
67
-
68
- export const getParentId = (activity) => activity?.parent?.id;
69
-
70
- export const isRootActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.ROOT;
71
- export const isReplyActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.REPLY;
72
- export const isEditActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.EDIT;
73
- export const isCreateActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.CREATE;
74
- export const isDeleteActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.DELETE;
75
-
76
- export const sanitizeActivity = (activity) => {
77
- const final = {...activity};
78
-
79
- final.reaction = activity.reaction || {};
80
- final.reactionSelf = activity.reactionSelf || {};
81
-
82
- // replies will be spread in order beneath parent, no need to include on final objects
83
- delete final.replies;
84
-
85
- return final;
86
- };
87
-
88
- export const getIsActivityOrphaned = (activity, activities) =>
89
- activity.parent && activity.parent.id && !activities[activity.parent.id];
90
-
91
- const getIsReplyEditActivity = (activity, activities) => {
92
- const parentId = activity.parent.id;
93
- const parentActivity = activities[parentId];
94
-
95
- return parentActivity && isReplyActivity(parentActivity);
96
- };
97
-
98
- export const determineActivityType = (activity, activities) => {
99
- const initialType = getActivityType(activity);
100
-
101
- // edits to a reply, while they are replies themselves, appear in every way as edits
102
- // the only way to dermine their status as an edited reply is to find the original reply
103
- if (initialType === ACTIVITY_TYPES.EDIT) {
104
- const isReplyEditActivity = getIsReplyEditActivity(activity, activities);
105
-
106
- return isReplyEditActivity ? ACTIVITY_TYPES.REPLY_EDIT : initialType;
107
- }
108
-
109
- return initialType;
110
- };
111
-
112
- export const createRootActivity = (activity) => activity;
113
-
114
- export const createReplyActivity = (activity) => {
115
- const replyAct = {
116
- ...activity,
117
- replyParent: activity.parent,
118
- };
119
-
120
- return replyAct;
121
- };
122
-
123
- export const createEditActivity = (editActivity, activities) => {
124
- const editActParentObj = editActivity.parent;
125
- const parentId = editActParentObj.id;
126
- const parentAct = activities[parentId];
127
-
128
- const joinedEditAct = {
129
- ...parentAct,
130
- id: editActivity.id,
131
- parent: editActParentObj,
132
- editParent: editActParentObj,
133
- object: editActivity.object,
134
- published: editActivity.published,
135
- };
136
-
137
- return joinedEditAct;
138
- };
139
-
140
- // takes an edit activity whose parent is a reply activity
141
- export const createReplyEditActivity = (editActivity, activities) => {
142
- const editActParentObj = editActivity.parent;
143
- const parentId = editActParentObj.id;
144
- const parentReplyAct = activities[parentId];
145
-
146
- const joinedReplyEditActivity = {
147
- ...parentReplyAct,
148
- id: editActivity.id,
149
- parent: editActParentObj,
150
- editParent: editActParentObj,
151
- replyParent: parentReplyAct.parent,
152
- object: editActivity.object,
153
- published: editActivity.published,
154
- };
155
-
156
- return joinedReplyEditActivity;
157
- };
1
+ import {sortBy} from 'lodash';
2
+
3
+ export const OLDER = 'older';
4
+ export const NEWER = 'newer';
5
+ export const MID = 'mid';
6
+ export const INITIAL = 'initial';
7
+
8
+ export const ACTIVITY_TYPES = {
9
+ REPLY: 'REPLY',
10
+ EDIT: 'EDIT',
11
+ REACTION: 'REACTION',
12
+ REACTION_SELF: 'REACTION_SELF',
13
+ ROOT: 'ROOT',
14
+ CREATE: 'CREATE',
15
+ TOMBSTONE: 'TOMBSTONE',
16
+ DELETE: 'DELETE',
17
+ REPLY_EDIT: 'REPLY_EDIT',
18
+ };
19
+
20
+ const REPLY = 'reply';
21
+ const EDIT = 'edit';
22
+ const REACTION_SUMMARY = 'reactionSummary';
23
+ const REACTION_SELF_SUMMARY = 'reactionSelfSummary';
24
+ const CREATE = 'create';
25
+ const TOMBSTONE = 'tombstone';
26
+ const DELETE = 'delete';
27
+ const ADD = 'add';
28
+
29
+ export const getActivityType = (activity) => {
30
+ if (activity.parent?.type === REPLY) {
31
+ return ACTIVITY_TYPES.REPLY;
32
+ }
33
+ if (activity.parent?.type === EDIT) {
34
+ return ACTIVITY_TYPES.EDIT;
35
+ }
36
+ if (activity.verb === ADD || activity.type === REACTION_SUMMARY) {
37
+ return ACTIVITY_TYPES.REACTION;
38
+ }
39
+ if (activity.type === REACTION_SELF_SUMMARY) {
40
+ return ACTIVITY_TYPES.REACTION_SELF;
41
+ }
42
+ if (activity.verb === CREATE) {
43
+ return ACTIVITY_TYPES.CREATE;
44
+ }
45
+ if (activity.verb === TOMBSTONE) {
46
+ return ACTIVITY_TYPES.TOMBSTONE;
47
+ }
48
+ if (activity.verb === DELETE) {
49
+ return ACTIVITY_TYPES.DELETE;
50
+ }
51
+
52
+ return ACTIVITY_TYPES.ROOT;
53
+ };
54
+
55
+ export const getPublishedDate = (activity = {}) => new Date(activity.published).getTime();
56
+
57
+ /**
58
+ * @param {Object} activity1
59
+ * @param {Object} activity2
60
+ * @returns {boolean} true if first activity is newer than second
61
+ */
62
+ export const isNewer = (activity1, activity2) =>
63
+ getPublishedDate(activity1) > getPublishedDate(activity2);
64
+
65
+ export const sortActivitiesByPublishedDate = (activities) =>
66
+ sortBy(activities, (activity) => getPublishedDate(activity));
67
+
68
+ export const getParentId = (activity) => activity?.parent?.id;
69
+
70
+ export const isRootActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.ROOT;
71
+ export const isReplyActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.REPLY;
72
+ export const isEditActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.EDIT;
73
+ export const isCreateActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.CREATE;
74
+ export const isDeleteActivity = (act) => getActivityType(act) === ACTIVITY_TYPES.DELETE;
75
+
76
+ export const sanitizeActivity = (activity) => {
77
+ const final = {...activity};
78
+
79
+ final.reaction = activity.reaction || {};
80
+ final.reactionSelf = activity.reactionSelf || {};
81
+
82
+ // replies will be spread in order beneath parent, no need to include on final objects
83
+ delete final.replies;
84
+
85
+ return final;
86
+ };
87
+
88
+ export const getIsActivityOrphaned = (activity, activities) =>
89
+ activity.parent && activity.parent.id && !activities[activity.parent.id];
90
+
91
+ const getIsReplyEditActivity = (activity, activities) => {
92
+ const parentId = activity.parent.id;
93
+ const parentActivity = activities[parentId];
94
+
95
+ return parentActivity && isReplyActivity(parentActivity);
96
+ };
97
+
98
+ export const determineActivityType = (activity, activities) => {
99
+ const initialType = getActivityType(activity);
100
+
101
+ // edits to a reply, while they are replies themselves, appear in every way as edits
102
+ // the only way to dermine their status as an edited reply is to find the original reply
103
+ if (initialType === ACTIVITY_TYPES.EDIT) {
104
+ const isReplyEditActivity = getIsReplyEditActivity(activity, activities);
105
+
106
+ return isReplyEditActivity ? ACTIVITY_TYPES.REPLY_EDIT : initialType;
107
+ }
108
+
109
+ return initialType;
110
+ };
111
+
112
+ export const createRootActivity = (activity) => activity;
113
+
114
+ export const createReplyActivity = (activity) => {
115
+ const replyAct = {
116
+ ...activity,
117
+ replyParent: activity.parent,
118
+ };
119
+
120
+ return replyAct;
121
+ };
122
+
123
+ export const createEditActivity = (editActivity, activities) => {
124
+ const editActParentObj = editActivity.parent;
125
+ const parentId = editActParentObj.id;
126
+ const parentAct = activities[parentId];
127
+
128
+ const joinedEditAct = {
129
+ ...parentAct,
130
+ id: editActivity.id,
131
+ parent: editActParentObj,
132
+ editParent: editActParentObj,
133
+ object: editActivity.object,
134
+ published: editActivity.published,
135
+ };
136
+
137
+ return joinedEditAct;
138
+ };
139
+
140
+ // takes an edit activity whose parent is a reply activity
141
+ export const createReplyEditActivity = (editActivity, activities) => {
142
+ const editActParentObj = editActivity.parent;
143
+ const parentId = editActParentObj.id;
144
+ const parentReplyAct = activities[parentId];
145
+
146
+ const joinedReplyEditActivity = {
147
+ ...parentReplyAct,
148
+ id: editActivity.id,
149
+ parent: editActParentObj,
150
+ editParent: editActParentObj,
151
+ replyParent: parentReplyAct.parent,
152
+ object: editActivity.object,
153
+ published: editActivity.published,
154
+ };
155
+
156
+ return joinedReplyEditActivity;
157
+ };