@webex/internal-plugin-conversation 1.156.2 → 1.157.0
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.
package/dist/conversation.js
CHANGED
|
@@ -2894,7 +2894,7 @@ var Conversation = _webexCore.WebexPlugin.extend({
|
|
|
2894
2894
|
});
|
|
2895
2895
|
}));
|
|
2896
2896
|
},
|
|
2897
|
-
version: "1.
|
|
2897
|
+
version: "1.157.0"
|
|
2898
2898
|
});
|
|
2899
2899
|
|
|
2900
2900
|
['favorite', 'hide', 'lock', 'mute', 'unfavorite', 'unhide', 'unlock', 'unmute'].forEach(function (verb) {
|
package/dist/share-activity.js
CHANGED
|
@@ -86,6 +86,7 @@ var ShareActivity = _webexCore.WebexPlugin.extend({
|
|
|
86
86
|
}
|
|
87
87
|
},
|
|
88
88
|
session: {
|
|
89
|
+
claimedFileType: 'string',
|
|
89
90
|
conversation: {
|
|
90
91
|
required: true,
|
|
91
92
|
type: 'object'
|
|
@@ -182,6 +183,7 @@ var ShareActivity = _webexCore.WebexPlugin.extend({
|
|
|
182
183
|
_this = this;
|
|
183
184
|
|
|
184
185
|
options = options || {};
|
|
186
|
+
options.claimedFileType = file.displayName.substring(file.displayName.lastIndexOf('.'));
|
|
185
187
|
var upload = this.uploads.get(file);
|
|
186
188
|
|
|
187
189
|
if (upload) {
|
|
@@ -299,10 +301,13 @@ var ShareActivity = _webexCore.WebexPlugin.extend({
|
|
|
299
301
|
var fileHash = (0, _sha.default)(file).toString();
|
|
300
302
|
|
|
301
303
|
var _ref7 = uploadOptions !== null && uploadOptions !== void 0 ? uploadOptions : {},
|
|
302
|
-
role = _ref7.role
|
|
304
|
+
role = _ref7.role,
|
|
305
|
+
claimedFileType = _ref7.claimedFileType;
|
|
303
306
|
|
|
304
307
|
var initializeBody = (0, _assign.default)({
|
|
305
308
|
fileSize: fileSize
|
|
309
|
+
}, {
|
|
310
|
+
claimedFileType: claimedFileType
|
|
306
311
|
}, role && {
|
|
307
312
|
role: role
|
|
308
313
|
});
|
|
@@ -448,7 +453,7 @@ var ShareActivity = _webexCore.WebexPlugin.extend({
|
|
|
448
453
|
return res.body.spaceUrl;
|
|
449
454
|
});
|
|
450
455
|
},
|
|
451
|
-
version: "1.
|
|
456
|
+
version: "1.157.0"
|
|
452
457
|
});
|
|
453
458
|
/**
|
|
454
459
|
* Instantiates a ShareActivity
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["share-activity.js"],"names":["EMITTER_SYMBOL","FILE_SYMBOL","PROMISE_SYMBOL","ShareActivity","WebexPlugin","extend","getSymbols","file","emitter","namespace","derived","target","deps","fn","conversation","session","required","type","content","clientTempId","displayName","enableThumbnails","default","hiddenSpaceUrl","mentions","spaceUrl","uploads","initialize","attrs","options","prototype","resolve","_spaceUrl","_retrieveSpaceUrl","url","then","_hiddenSpaceUrl","addGif","gif","gifToAdd","get","name","fileSize","size","byteLength","length","mimeType","objectType","height","width","image","set","SCR","create","scr","loc","thumbnailScr","add","upload","EventEmitter","promise","logger","thumbnailMaxWidth","config","thumbnailMaxHeight","imageData","main","webex","internal","encryption","encryptBinary","cdata","all","uploadPromise","_upload","metadata","downloadUrl","thumb","thumbnail","fileDimensions","thumbnailDimensions","getFiles","files","key","push","uri","uploadOptions","fileHash","toString","role","initializeBody","qs","transcode","phases","body","$url","uploadUrl","finalize","$uri","finishUploadUrl","remove","delete","prepare","Error","activity","verb","object","undefined","items","promises","forEach","item","contentCategory","_determineContentCategory","_itemContainsActionWithMimeType","map","actions","mimeTypes","split","shift","request","method","res","share","parent"],"mappings":"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","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 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(attrs.conversation._spaceUrl || this._retrieveSpaceUrl(`${attrs.conversation.url}/space`)\n .then((url) => {\n attrs.conversation._spaceUrl = url;\n\n return url;\n }));\n this.hiddenSpaceUrl = Promise.resolve(attrs.conversation._hiddenSpaceUrl || this._retrieveSpaceUrl(`${attrs.conversation.url}/space/hidden`)\n .then((url) => {\n attrs.conversation._hiddenSpaceUrl = url;\n\n return url;\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 = Object.assign({\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 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 let upload = this.uploads.get(file);\n\n if (upload) {\n return upload[PROMISE_SYMBOL];\n }\n const emitter = new EventEmitter();\n\n upload = Object.assign({\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 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.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\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.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\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 /**\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} = uploadOptions ?? {};\n const initializeBody = Object.assign({fileSize}, 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 atleast 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)\n .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.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(Object.assign({\n conversation\n }, object), {\n parent: webex\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"]}
|
|
1
|
+
{"version":3,"sources":["share-activity.js"],"names":["EMITTER_SYMBOL","FILE_SYMBOL","PROMISE_SYMBOL","ShareActivity","WebexPlugin","extend","getSymbols","file","emitter","namespace","derived","target","deps","fn","conversation","session","claimedFileType","required","type","content","clientTempId","displayName","enableThumbnails","default","hiddenSpaceUrl","mentions","spaceUrl","uploads","initialize","attrs","options","prototype","resolve","_spaceUrl","_retrieveSpaceUrl","url","then","_hiddenSpaceUrl","addGif","gif","gifToAdd","get","name","fileSize","size","byteLength","length","mimeType","objectType","height","width","image","set","SCR","create","scr","loc","thumbnailScr","add","substring","lastIndexOf","upload","EventEmitter","promise","logger","thumbnailMaxWidth","config","thumbnailMaxHeight","imageData","main","webex","internal","encryption","encryptBinary","cdata","all","uploadPromise","_upload","metadata","downloadUrl","thumb","thumbnail","fileDimensions","thumbnailDimensions","getFiles","files","key","push","uri","uploadOptions","fileHash","toString","role","initializeBody","qs","transcode","phases","body","$url","uploadUrl","finalize","$uri","finishUploadUrl","remove","delete","prepare","Error","activity","verb","object","undefined","items","promises","forEach","item","contentCategory","_determineContentCategory","_itemContainsActionWithMimeType","map","actions","mimeTypes","split","shift","request","method","res","share","parent"],"mappings":"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","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(attrs.conversation._spaceUrl || this._retrieveSpaceUrl(`${attrs.conversation.url}/space`)\n .then((url) => {\n attrs.conversation._spaceUrl = url;\n\n return url;\n }));\n this.hiddenSpaceUrl = Promise.resolve(attrs.conversation._hiddenSpaceUrl || this._retrieveSpaceUrl(`${attrs.conversation.url}/space/hidden`)\n .then((url) => {\n attrs.conversation._hiddenSpaceUrl = url;\n\n return url;\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 = Object.assign({\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 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.displayName.substring(file.displayName.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 = Object.assign({\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 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.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\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.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\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 /**\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 = Object.assign({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 atleast 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)\n .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.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(Object.assign({\n conversation\n }, object), {\n parent: webex\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/internal-plugin-conversation",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.157.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ian W. Remmel <iremmel@cisco.com>",
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@babel/runtime-corejs2": "^7.14.8",
|
|
20
20
|
"lodash": "^4.17.21",
|
|
21
|
-
"@webex/internal-plugin-encryption": "1.
|
|
22
|
-
"@webex/internal-plugin-user": "1.
|
|
23
|
-
"@webex/common": "1.
|
|
24
|
-
"@webex/helper-html": "1.
|
|
25
|
-
"@webex/webex-core": "1.
|
|
21
|
+
"@webex/internal-plugin-encryption": "1.157.0",
|
|
22
|
+
"@webex/internal-plugin-user": "1.157.0",
|
|
23
|
+
"@webex/common": "1.157.0",
|
|
24
|
+
"@webex/helper-html": "1.157.0",
|
|
25
|
+
"@webex/webex-core": "1.157.0",
|
|
26
26
|
"crypto-js": "^4.1.1",
|
|
27
|
-
"@webex/helper-image": "1.
|
|
27
|
+
"@webex/helper-image": "1.157.0",
|
|
28
28
|
"uuid": "^3.3.2",
|
|
29
29
|
"node-scr": "^0.3.0",
|
|
30
30
|
"envify": "^4.1.0"
|
package/src/share-activity.js
CHANGED
|
@@ -38,6 +38,7 @@ const ShareActivity = WebexPlugin.extend({
|
|
|
38
38
|
},
|
|
39
39
|
|
|
40
40
|
session: {
|
|
41
|
+
claimedFileType: 'string',
|
|
41
42
|
conversation: {
|
|
42
43
|
required: true,
|
|
43
44
|
type: 'object'
|
|
@@ -150,6 +151,7 @@ const ShareActivity = WebexPlugin.extend({
|
|
|
150
151
|
*/
|
|
151
152
|
add(file, options) {
|
|
152
153
|
options = options || {};
|
|
154
|
+
options.claimedFileType = file.displayName.substring(file.displayName.lastIndexOf('.'));
|
|
153
155
|
let upload = this.uploads.get(file);
|
|
154
156
|
|
|
155
157
|
if (upload) {
|
|
@@ -257,8 +259,8 @@ const ShareActivity = WebexPlugin.extend({
|
|
|
257
259
|
_upload(file, uri, uploadOptions) {
|
|
258
260
|
const fileSize = file.length || file.size || file.byteLength;
|
|
259
261
|
const fileHash = sha256(file).toString();
|
|
260
|
-
const {role} = uploadOptions ?? {};
|
|
261
|
-
const initializeBody = Object.assign({fileSize}, role && {role});
|
|
262
|
+
const {role, claimedFileType} = uploadOptions ?? {};
|
|
263
|
+
const initializeBody = Object.assign({fileSize}, {claimedFileType}, role && {role});
|
|
262
264
|
|
|
263
265
|
return this.webex.upload({
|
|
264
266
|
uri,
|
|
@@ -129,6 +129,20 @@ describe('plugin-conversation', () => {
|
|
|
129
129
|
|
|
130
130
|
assert.match(actualResult, expectedResult);
|
|
131
131
|
});
|
|
132
|
+
|
|
133
|
+
it('checks whether property claimedFileType is sent with file extension in body while making a call to /finish API', () => {
|
|
134
|
+
const fileSize = 100;
|
|
135
|
+
const mockFile = {size: fileSize};
|
|
136
|
+
|
|
137
|
+
const uploadOptions = {claimedFileType: '.zip'};
|
|
138
|
+
|
|
139
|
+
shareActivityUpload._upload(mockFile, fakeURL, uploadOptions);
|
|
140
|
+
|
|
141
|
+
const expectedResult = {fileSize, claimedFileType: '.zip'};
|
|
142
|
+
const actualResult = webex.upload.getCall(0).args[0].phases.initialize.body;
|
|
143
|
+
|
|
144
|
+
assert.match(actualResult, expectedResult);
|
|
145
|
+
});
|
|
132
146
|
});
|
|
133
147
|
|
|
134
148
|
describe('#addGif', () => {
|