@webex/internal-plugin-team 2.59.3-next.1 → 2.59.4-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.
- package/.eslintrc.js +6 -6
- package/README.md +42 -42
- package/babel.config.js +3 -3
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/index.js +6 -8
- package/dist/index.js.map +1 -1
- package/dist/team.js +107 -109
- package/dist/team.js.map +1 -1
- package/jest.config.js +3 -3
- package/package.json +10 -10
- package/process +1 -1
- package/src/config.js +7 -7
- package/src/index.js +139 -139
- package/src/team.js +437 -437
- package/test/integration/spec/actions.js +560 -560
- package/test/integration/spec/create.js +158 -158
- package/test/integration/spec/get.js +198 -198
- package/test/integration/spec/mercury.js +108 -108
- package/test/unit/spec/team.js +153 -153
package/dist/team.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_querystring","_interopRequireDefault","require","_uuid","_webexCore","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_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","Team","WebexPlugin","extend","namespace","addConversation","team","conversation","activity","_this","_ensureGeneralConversation","then","generalConversation","webex","internal","prepare","verb","prepareConversation","id","objectType","kmsMessage","method","uri","resourceUri","kmsResourceObjectUrl","userIds","a","submit","addMember","participant","_this2","add","create","params","_this3","displayName","_promise","reject","Error","participants","all","map","user","asUUID","unshift","device","userId","_uniq2","_prepareTeam","payload","request","service","resource","body","res","createConversation","_this4","options","undefined","url","_prepareTeamConversation","concat","qs","_pick2","get","_ref","_this5","includeTeamConversations","includeTeamMembers","_recordUUIDs","listConversations","_ref2","items","joinConversation","client","clientId","credential","bearer","credentials","supertoken","access_token","requestId","uuid","v4","list","_arguments","_this6","_asyncToGenerator2","_regenerator","mark","_callee","results","_iterator","_step","result","wrap","_callee$","_context","prev","api","sent","additionalUrls","host","abrupt","stop","removeMember","_this7","leave","removeConversation","_this8","properties","querystring","stringify","authId","update","generalConversationUuid","conversations","_find2","resolve","_prepareConversationForCreation","summary","teamConversation","_this9","teamMembers","type","recordUUID","catch","logger","warn","version","submitModerationChangeActivity","member","_this10","submitArchiveStateChangeActivity","_this11","teamUrl","getConvoUrl","_default","exports"],"sources":["team.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nimport querystring from 'querystring';\r\n\r\nimport uuid from 'uuid';\r\nimport {find, pick, uniq} from 'lodash';\r\nimport {WebexPlugin} from '@webex/webex-core';\r\n\r\nconst Team = WebexPlugin.extend({\r\n namespace: 'Team',\r\n\r\n /**\r\n * Move an existing group conversation into a team.\r\n * @param {TeamObject} team\r\n * @param {ConversationObject} conversation\r\n * @param {Object} activity Reference to the activity that will eventually be\r\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\r\n * provisional activity\r\n * @returns {Promise} Resolves with the add activity\r\n */\r\n addConversation(team, conversation, activity) {\r\n return this._ensureGeneralConversation(team)\r\n .then((generalConversation) =>\r\n this.webex.internal.conversation.prepare(activity, {\r\n verb: 'add',\r\n target: this.webex.internal.conversation.prepareConversation(generalConversation),\r\n object: {\r\n id: conversation.id,\r\n objectType: 'conversation',\r\n },\r\n kmsMessage: {\r\n method: 'create',\r\n uri: '/authorizations',\r\n resourceUri: conversation.kmsResourceObjectUrl,\r\n userIds: [generalConversation.kmsResourceObjectUrl],\r\n },\r\n })\r\n )\r\n .then((a) => this.webex.internal.conversation.submit(a));\r\n },\r\n\r\n /**\r\n * Add a member to a team\r\n * @param {TeamObject} team\r\n * @param {Object} participant\r\n * @param {Object} activity Reference to the activity that will eventually be\r\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\r\n * provisional activity\r\n * @returns {Promise} Resolves with activity that was posted\r\n */\r\n addMember(team, participant, activity) {\r\n return this._ensureGeneralConversation(team).then((generalConversation) =>\r\n this.webex.internal.conversation.add(generalConversation, participant, activity)\r\n );\r\n },\r\n\r\n /**\r\n * Create a team\r\n * @param {NewTeamObject} params\r\n * @param {string} params.displayName\r\n * @param {string} params.summary\r\n * @param {Array} params.participants\r\n * @returns {Promise} Resolves with the created team\r\n */\r\n create(params) {\r\n if (!params.displayName) {\r\n return Promise.reject(new Error('`params.displayName` is required'));\r\n }\r\n\r\n if (!params.participants || params.participants.length === 0) {\r\n return Promise.reject(new Error('`params.participants` is required'));\r\n }\r\n\r\n return Promise.all(\r\n params.participants.map((participant) =>\r\n this.webex.internal.user.asUUID(participant, {create: true})\r\n )\r\n )\r\n .then((participants) => {\r\n participants.unshift(this.webex.internal.device.userId);\r\n params.participants = uniq(participants);\r\n })\r\n .then(() => this._prepareTeam(params))\r\n .then((payload) =>\r\n this.webex.request({\r\n method: 'POST',\r\n service: 'conversation',\r\n resource: 'teams',\r\n body: payload,\r\n })\r\n )\r\n .then((res) => res.body);\r\n },\r\n\r\n /**\r\n * Create a conversation within a team. Currently does not support\r\n * activities besides add (ie no post or share activities).\r\n * @param {TeamObject} team\r\n * @param {NewConversationObject} params\r\n * @param {string} params.displayName\r\n * @param {string} params.summary\r\n * @param {Array} params.participants\r\n * @param {Object} options\r\n * @param {boolean} options.includeAllTeamMembers\r\n * @returns {Promise} Resolves with the newly created conversation\r\n */\r\n createConversation(team, params, options = {}) {\r\n if (!team.url) {\r\n return Promise.reject(new Error('`team.url` is required'));\r\n }\r\n\r\n if (!params.displayName) {\r\n return Promise.reject(new Error('`params.displayName` is required'));\r\n }\r\n\r\n return this._ensureGeneralConversation(team)\r\n .then((generalConversation) =>\r\n Promise.all(\r\n params.participants.map((participant) =>\r\n this.webex.internal.user.asUUID(participant, {create: true})\r\n )\r\n )\r\n .then((participants) => {\r\n participants.unshift(this.webex.internal.device.userId);\r\n params.participants = uniq(participants);\r\n })\r\n .then(() => this._prepareTeamConversation(generalConversation, params))\r\n )\r\n .then((payload) =>\r\n this.webex.request({\r\n method: 'POST',\r\n uri: `${team.url}/conversations`,\r\n qs: pick(options, 'includeAllTeamMembers'),\r\n body: payload,\r\n })\r\n )\r\n .then((res) => res.body);\r\n },\r\n\r\n /**\r\n * Retrieve a single team\r\n * @param {Object|Team~TeamObject} team\r\n * @param {string} team.url\r\n * @param {Object} options\r\n * @param {boolean} options.includeTeamConversations\r\n * @param {boolean} options.includeTeamMembers\r\n * @returns {Promise} Resolves with the requested team\r\n */\r\n get({url}, options = {}) {\r\n if (!url) {\r\n return Promise.reject(new Error('`team.url` is required'));\r\n }\r\n const params = {\r\n includeTeamConversations: false,\r\n includeTeamMembers: false,\r\n ...options,\r\n };\r\n\r\n return this.webex\r\n .request({\r\n uri: url,\r\n qs: params,\r\n })\r\n .then((res) => this._recordUUIDs(res.body).then(() => res.body));\r\n },\r\n\r\n /**\r\n * Get the list of conversations for a particular team\r\n * @param {TeamObject} team\r\n * @param {String} team.url\r\n * @returns {Promise} Resolves with an array of conversations\r\n */\r\n listConversations({url}) {\r\n if (!url) {\r\n return Promise.reject(new Error('`team.url` is required'));\r\n }\r\n\r\n return this.webex\r\n .request({\r\n uri: `${url}/conversations`,\r\n })\r\n .then((res) => res.body.items);\r\n },\r\n\r\n /**\r\n * Join a team conversation\r\n * @param {TeamObject} team\r\n * @param {ConversationObject} conversation\r\n * @param {userId} userId\r\n * @returns {Promise} Resolves with the conversation\r\n */\r\n joinConversation(team, conversation, userId) {\r\n if (!userId) {\r\n return Promise.reject(new Error('`userId` is required'));\r\n }\r\n\r\n const body = {\r\n kmsMessage: {\r\n client: {\r\n clientId: this.webex.internal.device.url,\r\n credential: {\r\n bearer: this.webex.credentials.supertoken.access_token,\r\n userId,\r\n },\r\n },\r\n method: 'create',\r\n requestId: uuid.v4(),\r\n resourceUri: conversation.kmsResourceObjectUrl,\r\n uri: '/authorizations',\r\n userIds: [userId],\r\n },\r\n };\r\n\r\n return this.webex\r\n .request({\r\n method: 'POST',\r\n uri: `${team.url}/conversations/${conversation.id}/participants`,\r\n body,\r\n })\r\n .then((res) => res.body);\r\n },\r\n\r\n /**\r\n * Retrieve all teams\r\n * @param {Object} options\r\n * @param {boolean} options.includeTeamConversations\r\n * @param {boolean} options.includeTeamMembers\r\n * @returns {Promise} Resolves with the requested teams\r\n */\r\n async list(options = {}) {\r\n const params = {\r\n includeTeamConversations: false,\r\n includeTeamMembers: false,\r\n ...options,\r\n };\r\n const resource = 'teams';\r\n\r\n const res = await this.webex.request({\r\n api: 'conversation',\r\n resource,\r\n qs: params,\r\n });\r\n\r\n let list = res.body.items.slice(0);\r\n\r\n if (res.body.additionalUrls) {\r\n const results = await Promise.all(\r\n res.body.additionalUrls.map((host) => {\r\n const uri = `${host}/${resource}`;\r\n\r\n return this.webex.request({\r\n uri,\r\n qs: params,\r\n });\r\n })\r\n );\r\n\r\n for (const result of results) {\r\n if (result.body && result.body.items && result.body.items.length) {\r\n list = list.concat(result.body.items);\r\n }\r\n }\r\n }\r\n\r\n await Promise.all(res.body.items.map((team) => this._recordUUIDs(team)));\r\n\r\n return list;\r\n },\r\n\r\n /**\r\n * Remove a member from a team\r\n * @param {TeamObject} team\r\n * @param {Object} participant\r\n * @param {Object} activity Reference to the activity that will eventually be\r\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\r\n * provisional activity\r\n * @returns {Promise} Resolves with activity that was posted\r\n */\r\n removeMember(team, participant, activity) {\r\n return this._ensureGeneralConversation(team).then((generalConversation) =>\r\n this.webex.internal.conversation.leave(generalConversation, participant, activity)\r\n );\r\n },\r\n\r\n /**\r\n * Remove a team conversation from a team.\r\n * @param {TeamObject} team\r\n * @param {ConversationObject} conversation to be removed\r\n * @param {Object} activity Reference to the activity that will eventually be\r\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\r\n * provisional activity\r\n * @returns {Promise} Resolves with the leave activity\r\n */\r\n removeConversation(team, conversation, activity) {\r\n return this._ensureGeneralConversation(team)\r\n .then((generalConversation) => {\r\n const properties = {\r\n verb: 'remove',\r\n object: pick(conversation, 'id', 'url', 'objectType'),\r\n target: pick(generalConversation, 'id', 'url', 'objectType'),\r\n kmsMessage: {\r\n method: 'delete',\r\n uri: `<KRO>/authorizations?${querystring.stringify({authId: conversation.id})}`,\r\n },\r\n };\r\n\r\n return this.webex.internal.conversation.prepare(activity, properties);\r\n })\r\n .then((a) => this.webex.internal.conversation.submit(a));\r\n },\r\n\r\n /**\r\n * Update the displayName, summary, or teamColor field for a team.\r\n * @param {TeamObject} team to be updated\r\n * @param {Object} object with updated displayName, summary, and/or teamColor\r\n * @param {Object} activity Reference to the activity that will eventually be\r\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\r\n * provisional activity\r\n * @returns {Promise} Resolves with posted activity\r\n */\r\n update(team, object, activity) {\r\n return this.webex.internal.conversation.update(team, object, activity);\r\n },\r\n\r\n /* eslint-disable require-jsdoc */\r\n _ensureGeneralConversation(team) {\r\n if (!team.generalConversationUuid) {\r\n return Promise.reject(new Error('`team.generalConversationUuid` must be present'));\r\n }\r\n\r\n if (team.conversations.items.length) {\r\n const generalConversation = find(team.conversations.items, {\r\n id: team.generalConversationUuid,\r\n });\r\n\r\n if (generalConversation) {\r\n return Promise.resolve(generalConversation);\r\n }\r\n }\r\n\r\n return this.webex.internal.conversation.get({id: team.generalConversationUuid});\r\n },\r\n\r\n _prepareTeam: function _prepareTeam(params) {\r\n const payload = this.webex.internal.conversation._prepareConversationForCreation(params);\r\n\r\n payload.objectType = 'team';\r\n\r\n if (params.summary) {\r\n payload.summary = params.summary;\r\n }\r\n\r\n return Promise.resolve(payload);\r\n },\r\n\r\n _prepareTeamConversation(teamConversation, params) {\r\n if (!teamConversation.kmsResourceObjectUrl) {\r\n return Promise.reject(new Error('Team general conversation must have a KRO'));\r\n }\r\n\r\n const payload = this.webex.internal.conversation._prepareConversationForCreation(params);\r\n\r\n // Push the general conversation KRO on so that team members can\r\n // decrypt the title of this open room without joining it.\r\n payload.kmsMessage.userIds.push(teamConversation.kmsResourceObjectUrl);\r\n\r\n return Promise.resolve(payload);\r\n },\r\n\r\n _recordUUIDs(team) {\r\n if (!team.teamMembers || !team.teamMembers.items) {\r\n return Promise.resolve(team);\r\n }\r\n\r\n return Promise.all(\r\n team.teamMembers.items.map((participant) => {\r\n // ROOMs or LYRA_SPACEs do not have email addresses, so there's no point attempting to\r\n // record their UUIDs.\r\n if (participant.type === 'ROOM' || participant.type === 'LYRA_SPACE') {\r\n return Promise.resolve();\r\n }\r\n\r\n return this.webex.internal.user\r\n .recordUUID(participant)\r\n .catch((err) => this.logger.warn('Could not record uuid', err));\r\n })\r\n );\r\n },\r\n /* eslint-enable require-jsdoc */\r\n});\r\n\r\n/**\r\n * Assign or unassign a team member to be a moderator of a team\r\n * @param {TeamObject} team\r\n * @param {Object} participant\r\n * @param {Object} activity\r\n * @returns {Promise} Resolves with activity that was posted\r\n */\r\n['assignModerator', 'unassignModerator'].forEach((verb) => {\r\n Team.prototype[verb] = function submitModerationChangeActivity(team, member, activity) {\r\n return this._ensureGeneralConversation(team).then((teamConversation) =>\r\n this.webex.internal.conversation[verb](teamConversation, member, activity)\r\n );\r\n };\r\n});\r\n\r\n/**\r\n * Archive or unarchive a team or team conversation.\r\n * @param {TeamObject|ConversationObject} target team or team conversation that should be archived\r\n * @param {Object} activity Reference to the activity that will eventually be\r\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\r\n * provisional activity\r\n * @returns {Promise} Resolves with the posted activity\r\n */\r\n['archive', 'unarchive'].forEach((verb) => {\r\n Team.prototype[verb] = function submitArchiveStateChangeActivity(target, activity) {\r\n if (!target.objectType) {\r\n return Promise.reject(new Error('`target.objectType` is required'));\r\n }\r\n\r\n const properties = {\r\n verb,\r\n object: pick(target, 'id', 'url', 'objectType'),\r\n target: pick(target, 'id', 'url', 'objectType'),\r\n };\r\n\r\n const teamUrl = this.webex.internal.conversation.getConvoUrl(target);\r\n\r\n return this.webex.internal.conversation\r\n .prepare(activity, properties)\r\n .then((a) => this.webex.internal.conversation.submit(a, teamUrl));\r\n };\r\n});\r\n\r\nexport default Team;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_querystring","_interopRequireDefault","require","_uuid","_lodash","_webexCore","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_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","Team","WebexPlugin","extend","namespace","addConversation","team","conversation","activity","_this","_ensureGeneralConversation","then","generalConversation","webex","internal","prepare","verb","prepareConversation","id","objectType","kmsMessage","method","uri","resourceUri","kmsResourceObjectUrl","userIds","a","submit","addMember","participant","_this2","add","create","params","_this3","displayName","_promise","reject","Error","participants","all","map","user","asUUID","unshift","device","userId","uniq","_prepareTeam","payload","request","service","resource","body","res","createConversation","_this4","options","undefined","url","_prepareTeamConversation","concat","qs","pick","get","_ref","_this5","includeTeamConversations","includeTeamMembers","_recordUUIDs","listConversations","_ref2","items","joinConversation","client","clientId","credential","bearer","credentials","supertoken","access_token","requestId","uuid","v4","list","_arguments","_this6","_asyncToGenerator2","_regenerator","mark","_callee","results","_iterator","_step","result","wrap","_callee$","_context","prev","api","sent","additionalUrls","host","abrupt","stop","removeMember","_this7","leave","removeConversation","_this8","properties","querystring","stringify","authId","update","generalConversationUuid","conversations","find","resolve","_prepareConversationForCreation","summary","teamConversation","_this9","teamMembers","type","recordUUID","catch","logger","warn","version","submitModerationChangeActivity","member","_this10","submitArchiveStateChangeActivity","_this11","teamUrl","getConvoUrl","_default","exports"],"sources":["team.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport querystring from 'querystring';\n\nimport uuid from 'uuid';\nimport {find, pick, uniq} from 'lodash';\nimport {WebexPlugin} from '@webex/webex-core';\n\nconst Team = WebexPlugin.extend({\n namespace: 'Team',\n\n /**\n * Move an existing group conversation into a team.\n * @param {TeamObject} team\n * @param {ConversationObject} conversation\n * @param {Object} activity Reference to the activity that will eventually be\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\n * provisional activity\n * @returns {Promise} Resolves with the add activity\n */\n addConversation(team, conversation, activity) {\n return this._ensureGeneralConversation(team)\n .then((generalConversation) =>\n this.webex.internal.conversation.prepare(activity, {\n verb: 'add',\n target: this.webex.internal.conversation.prepareConversation(generalConversation),\n object: {\n id: conversation.id,\n objectType: 'conversation',\n },\n kmsMessage: {\n method: 'create',\n uri: '/authorizations',\n resourceUri: conversation.kmsResourceObjectUrl,\n userIds: [generalConversation.kmsResourceObjectUrl],\n },\n })\n )\n .then((a) => this.webex.internal.conversation.submit(a));\n },\n\n /**\n * Add a member to a team\n * @param {TeamObject} team\n * @param {Object} participant\n * @param {Object} activity Reference to the activity that will eventually be\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\n * provisional activity\n * @returns {Promise} Resolves with activity that was posted\n */\n addMember(team, participant, activity) {\n return this._ensureGeneralConversation(team).then((generalConversation) =>\n this.webex.internal.conversation.add(generalConversation, participant, activity)\n );\n },\n\n /**\n * Create a team\n * @param {NewTeamObject} params\n * @param {string} params.displayName\n * @param {string} params.summary\n * @param {Array} params.participants\n * @returns {Promise} Resolves with the created team\n */\n create(params) {\n if (!params.displayName) {\n return Promise.reject(new Error('`params.displayName` is required'));\n }\n\n if (!params.participants || params.participants.length === 0) {\n return Promise.reject(new Error('`params.participants` is required'));\n }\n\n return Promise.all(\n params.participants.map((participant) =>\n this.webex.internal.user.asUUID(participant, {create: true})\n )\n )\n .then((participants) => {\n participants.unshift(this.webex.internal.device.userId);\n params.participants = uniq(participants);\n })\n .then(() => this._prepareTeam(params))\n .then((payload) =>\n this.webex.request({\n method: 'POST',\n service: 'conversation',\n resource: 'teams',\n body: payload,\n })\n )\n .then((res) => res.body);\n },\n\n /**\n * Create a conversation within a team. Currently does not support\n * activities besides add (ie no post or share activities).\n * @param {TeamObject} team\n * @param {NewConversationObject} params\n * @param {string} params.displayName\n * @param {string} params.summary\n * @param {Array} params.participants\n * @param {Object} options\n * @param {boolean} options.includeAllTeamMembers\n * @returns {Promise} Resolves with the newly created conversation\n */\n createConversation(team, params, options = {}) {\n if (!team.url) {\n return Promise.reject(new Error('`team.url` is required'));\n }\n\n if (!params.displayName) {\n return Promise.reject(new Error('`params.displayName` is required'));\n }\n\n return this._ensureGeneralConversation(team)\n .then((generalConversation) =>\n Promise.all(\n params.participants.map((participant) =>\n this.webex.internal.user.asUUID(participant, {create: true})\n )\n )\n .then((participants) => {\n participants.unshift(this.webex.internal.device.userId);\n params.participants = uniq(participants);\n })\n .then(() => this._prepareTeamConversation(generalConversation, params))\n )\n .then((payload) =>\n this.webex.request({\n method: 'POST',\n uri: `${team.url}/conversations`,\n qs: pick(options, 'includeAllTeamMembers'),\n body: payload,\n })\n )\n .then((res) => res.body);\n },\n\n /**\n * Retrieve a single team\n * @param {Object|Team~TeamObject} team\n * @param {string} team.url\n * @param {Object} options\n * @param {boolean} options.includeTeamConversations\n * @param {boolean} options.includeTeamMembers\n * @returns {Promise} Resolves with the requested team\n */\n get({url}, options = {}) {\n if (!url) {\n return Promise.reject(new Error('`team.url` is required'));\n }\n const params = {\n includeTeamConversations: false,\n includeTeamMembers: false,\n ...options,\n };\n\n return this.webex\n .request({\n uri: url,\n qs: params,\n })\n .then((res) => this._recordUUIDs(res.body).then(() => res.body));\n },\n\n /**\n * Get the list of conversations for a particular team\n * @param {TeamObject} team\n * @param {String} team.url\n * @returns {Promise} Resolves with an array of conversations\n */\n listConversations({url}) {\n if (!url) {\n return Promise.reject(new Error('`team.url` is required'));\n }\n\n return this.webex\n .request({\n uri: `${url}/conversations`,\n })\n .then((res) => res.body.items);\n },\n\n /**\n * Join a team conversation\n * @param {TeamObject} team\n * @param {ConversationObject} conversation\n * @param {userId} userId\n * @returns {Promise} Resolves with the conversation\n */\n joinConversation(team, conversation, userId) {\n if (!userId) {\n return Promise.reject(new Error('`userId` is required'));\n }\n\n const body = {\n kmsMessage: {\n client: {\n clientId: this.webex.internal.device.url,\n credential: {\n bearer: this.webex.credentials.supertoken.access_token,\n userId,\n },\n },\n method: 'create',\n requestId: uuid.v4(),\n resourceUri: conversation.kmsResourceObjectUrl,\n uri: '/authorizations',\n userIds: [userId],\n },\n };\n\n return this.webex\n .request({\n method: 'POST',\n uri: `${team.url}/conversations/${conversation.id}/participants`,\n body,\n })\n .then((res) => res.body);\n },\n\n /**\n * Retrieve all teams\n * @param {Object} options\n * @param {boolean} options.includeTeamConversations\n * @param {boolean} options.includeTeamMembers\n * @returns {Promise} Resolves with the requested teams\n */\n async list(options = {}) {\n const params = {\n includeTeamConversations: false,\n includeTeamMembers: false,\n ...options,\n };\n const resource = 'teams';\n\n const res = await this.webex.request({\n api: 'conversation',\n resource,\n qs: params,\n });\n\n let list = res.body.items.slice(0);\n\n if (res.body.additionalUrls) {\n const results = await Promise.all(\n res.body.additionalUrls.map((host) => {\n const uri = `${host}/${resource}`;\n\n return this.webex.request({\n uri,\n qs: params,\n });\n })\n );\n\n for (const result of results) {\n if (result.body && result.body.items && result.body.items.length) {\n list = list.concat(result.body.items);\n }\n }\n }\n\n await Promise.all(res.body.items.map((team) => this._recordUUIDs(team)));\n\n return list;\n },\n\n /**\n * Remove a member from a team\n * @param {TeamObject} team\n * @param {Object} participant\n * @param {Object} activity Reference to the activity that will eventually be\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\n * provisional activity\n * @returns {Promise} Resolves with activity that was posted\n */\n removeMember(team, participant, activity) {\n return this._ensureGeneralConversation(team).then((generalConversation) =>\n this.webex.internal.conversation.leave(generalConversation, participant, activity)\n );\n },\n\n /**\n * Remove a team conversation from a team.\n * @param {TeamObject} team\n * @param {ConversationObject} conversation to be removed\n * @param {Object} activity Reference to the activity that will eventually be\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\n * provisional activity\n * @returns {Promise} Resolves with the leave activity\n */\n removeConversation(team, conversation, activity) {\n return this._ensureGeneralConversation(team)\n .then((generalConversation) => {\n const properties = {\n verb: 'remove',\n object: pick(conversation, 'id', 'url', 'objectType'),\n target: pick(generalConversation, 'id', 'url', 'objectType'),\n kmsMessage: {\n method: 'delete',\n uri: `<KRO>/authorizations?${querystring.stringify({authId: conversation.id})}`,\n },\n };\n\n return this.webex.internal.conversation.prepare(activity, properties);\n })\n .then((a) => this.webex.internal.conversation.submit(a));\n },\n\n /**\n * Update the displayName, summary, or teamColor field for a team.\n * @param {TeamObject} team to be updated\n * @param {Object} object with updated displayName, summary, and/or teamColor\n * @param {Object} activity Reference to the activity that will eventually be\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\n * provisional activity\n * @returns {Promise} Resolves with posted activity\n */\n update(team, object, activity) {\n return this.webex.internal.conversation.update(team, object, activity);\n },\n\n /* eslint-disable require-jsdoc */\n _ensureGeneralConversation(team) {\n if (!team.generalConversationUuid) {\n return Promise.reject(new Error('`team.generalConversationUuid` must be present'));\n }\n\n if (team.conversations.items.length) {\n const generalConversation = find(team.conversations.items, {\n id: team.generalConversationUuid,\n });\n\n if (generalConversation) {\n return Promise.resolve(generalConversation);\n }\n }\n\n return this.webex.internal.conversation.get({id: team.generalConversationUuid});\n },\n\n _prepareTeam: function _prepareTeam(params) {\n const payload = this.webex.internal.conversation._prepareConversationForCreation(params);\n\n payload.objectType = 'team';\n\n if (params.summary) {\n payload.summary = params.summary;\n }\n\n return Promise.resolve(payload);\n },\n\n _prepareTeamConversation(teamConversation, params) {\n if (!teamConversation.kmsResourceObjectUrl) {\n return Promise.reject(new Error('Team general conversation must have a KRO'));\n }\n\n const payload = this.webex.internal.conversation._prepareConversationForCreation(params);\n\n // Push the general conversation KRO on so that team members can\n // decrypt the title of this open room without joining it.\n payload.kmsMessage.userIds.push(teamConversation.kmsResourceObjectUrl);\n\n return Promise.resolve(payload);\n },\n\n _recordUUIDs(team) {\n if (!team.teamMembers || !team.teamMembers.items) {\n return Promise.resolve(team);\n }\n\n return Promise.all(\n team.teamMembers.items.map((participant) => {\n // ROOMs or LYRA_SPACEs do not have email addresses, so there's no point attempting to\n // record their UUIDs.\n if (participant.type === 'ROOM' || participant.type === 'LYRA_SPACE') {\n return Promise.resolve();\n }\n\n return this.webex.internal.user\n .recordUUID(participant)\n .catch((err) => this.logger.warn('Could not record uuid', err));\n })\n );\n },\n /* eslint-enable require-jsdoc */\n});\n\n/**\n * Assign or unassign a team member to be a moderator of a team\n * @param {TeamObject} team\n * @param {Object} participant\n * @param {Object} activity\n * @returns {Promise} Resolves with activity that was posted\n */\n['assignModerator', 'unassignModerator'].forEach((verb) => {\n Team.prototype[verb] = function submitModerationChangeActivity(team, member, activity) {\n return this._ensureGeneralConversation(team).then((teamConversation) =>\n this.webex.internal.conversation[verb](teamConversation, member, activity)\n );\n };\n});\n\n/**\n * Archive or unarchive a team or team conversation.\n * @param {TeamObject|ConversationObject} target team or team conversation that should be archived\n * @param {Object} activity Reference to the activity that will eventually be\n * posted. Use this to (a) pass in e.g. clientTempId and (b) render a\n * provisional activity\n * @returns {Promise} Resolves with the posted activity\n */\n['archive', 'unarchive'].forEach((verb) => {\n Team.prototype[verb] = function submitArchiveStateChangeActivity(target, activity) {\n if (!target.objectType) {\n return Promise.reject(new Error('`target.objectType` is required'));\n }\n\n const properties = {\n verb,\n object: pick(target, 'id', 'url', 'objectType'),\n target: pick(target, 'id', 'url', 'objectType'),\n };\n\n const teamUrl = this.webex.internal.conversation.getConvoUrl(target);\n\n return this.webex.internal.conversation\n .prepare(activity, properties)\n .then((a) => this.webex.internal.conversation.submit(a, teamUrl));\n };\n});\n\nexport default Team;\n"],"mappings":"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"}
|
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
|
@@ -25,20 +25,20 @@
|
|
|
25
25
|
"@webex/eslint-config-legacy": "^0.0.0",
|
|
26
26
|
"@webex/jest-config-legacy": "^0.0.0",
|
|
27
27
|
"@webex/legacy-tools": "^0.0.0",
|
|
28
|
-
"@webex/test-helper-chai": "^2.59.
|
|
29
|
-
"@webex/test-helper-mocha": "^2.59.
|
|
30
|
-
"@webex/test-helper-mock-webex": "^2.59.
|
|
31
|
-
"@webex/test-helper-test-users": "^2.59.
|
|
28
|
+
"@webex/test-helper-chai": "^2.59.4-next.1",
|
|
29
|
+
"@webex/test-helper-mocha": "^2.59.4-next.1",
|
|
30
|
+
"@webex/test-helper-mock-webex": "^2.59.4-next.1",
|
|
31
|
+
"@webex/test-helper-test-users": "^2.59.4-next.1",
|
|
32
32
|
"eslint": "^8.24.0",
|
|
33
33
|
"prettier": "^2.7.1",
|
|
34
34
|
"sinon": "^9.2.4"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@webex/internal-plugin-conversation": "^2.59.
|
|
38
|
-
"@webex/internal-plugin-device": "^2.59.
|
|
39
|
-
"@webex/internal-plugin-encryption": "^2.59.
|
|
40
|
-
"@webex/internal-plugin-user": "^2.59.
|
|
41
|
-
"@webex/webex-core": "^2.59.
|
|
37
|
+
"@webex/internal-plugin-conversation": "^2.59.4-next.1",
|
|
38
|
+
"@webex/internal-plugin-device": "^2.59.4-next.1",
|
|
39
|
+
"@webex/internal-plugin-encryption": "^2.59.4-next.1",
|
|
40
|
+
"@webex/internal-plugin-user": "^2.59.4-next.1",
|
|
41
|
+
"@webex/webex-core": "^2.59.4-next.1",
|
|
42
42
|
"lodash": "^4.17.21",
|
|
43
43
|
"uuid": "^3.3.2"
|
|
44
44
|
},
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"test:style": "eslint ./src/**/*.*",
|
|
53
53
|
"test:unit": "webex-legacy-tools test --unit --runner jest"
|
|
54
54
|
},
|
|
55
|
-
"version": "2.59.
|
|
55
|
+
"version": "2.59.4-next.1"
|
|
56
56
|
}
|
package/process
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports = {browser: true};
|
|
1
|
+
module.exports = {browser: true};
|
package/src/config.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export default {
|
|
6
|
-
team: {},
|
|
7
|
-
};
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
team: {},
|
|
7
|
+
};
|
package/src/index.js
CHANGED
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import '@webex/internal-plugin-conversation';
|
|
6
|
-
import '@webex/internal-plugin-user';
|
|
7
|
-
import '@webex/internal-plugin-encryption';
|
|
8
|
-
import {isArray, has, get} from 'lodash';
|
|
9
|
-
import {registerInternalPlugin} from '@webex/webex-core';
|
|
10
|
-
|
|
11
|
-
import Team from './team';
|
|
12
|
-
import config from './config';
|
|
13
|
-
|
|
14
|
-
registerInternalPlugin('team', Team, {
|
|
15
|
-
payloadTransformer: {
|
|
16
|
-
predicates: [
|
|
17
|
-
{
|
|
18
|
-
name: 'decryptTeamRoomStatus',
|
|
19
|
-
direction: 'inbound',
|
|
20
|
-
test(ctx, optionsOrResponse) {
|
|
21
|
-
return Promise.resolve(
|
|
22
|
-
has(optionsOrResponse, 'activity.object.activityEvent') &&
|
|
23
|
-
get(optionsOrResponse, 'activity.object.objectType') === 'teamRoomStatus'
|
|
24
|
-
);
|
|
25
|
-
},
|
|
26
|
-
extract(optionsOrResponse) {
|
|
27
|
-
return Promise.resolve(optionsOrResponse.activity.object);
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
transforms: [
|
|
32
|
-
{
|
|
33
|
-
name: 'decryptTeam',
|
|
34
|
-
direction: 'inbound',
|
|
35
|
-
fn(ctx, key, team) {
|
|
36
|
-
const promises = [];
|
|
37
|
-
|
|
38
|
-
if (team.conversations.items) {
|
|
39
|
-
promises.push(
|
|
40
|
-
Promise.all(
|
|
41
|
-
team.conversations.items.map((item) => ctx.transform('decryptObject', null, item))
|
|
42
|
-
)
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const usableKey = team.encryptionKeyUrl || key;
|
|
47
|
-
|
|
48
|
-
if (usableKey) {
|
|
49
|
-
promises.push(ctx.transform('decryptPropDisplayName', usableKey, team));
|
|
50
|
-
promises.push(ctx.transform('decryptPropSummary', usableKey, team));
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return Promise.all(promises);
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
name: 'decryptTeamRoomStatus',
|
|
58
|
-
direction: 'inbound',
|
|
59
|
-
fn(ctx, teamRoomStatus) {
|
|
60
|
-
const keyUrl = get(teamRoomStatus, 'activityEvent.encryptionKeyUrl');
|
|
61
|
-
|
|
62
|
-
return ctx.transform('decryptObject', keyUrl, teamRoomStatus.activityEvent);
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
name: 'decryptPropSummary',
|
|
67
|
-
direction: 'inbound',
|
|
68
|
-
fn(ctx, key, team) {
|
|
69
|
-
return ctx.transform('decryptTextProp', 'summary', key, team);
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
name: 'encryptTeam',
|
|
74
|
-
direction: 'outbound',
|
|
75
|
-
fn(ctx, key, team) {
|
|
76
|
-
if (key === false) {
|
|
77
|
-
return Promise.resolve();
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return Promise.resolve(
|
|
81
|
-
key || ctx.webex.internal.encryption.kms.createUnboundKeys({count: 1})
|
|
82
|
-
).then((keys) => {
|
|
83
|
-
const k = isArray(keys) ? keys[0] : keys;
|
|
84
|
-
|
|
85
|
-
if (
|
|
86
|
-
team.kmsMessage &&
|
|
87
|
-
team.kmsMessage.keyUris &&
|
|
88
|
-
!team.kmsMessage.keyUris.includes(k.uri)
|
|
89
|
-
) {
|
|
90
|
-
team.kmsMessage.keyUris.push(k.uri);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return Promise.all([
|
|
94
|
-
ctx.transform('encryptPropDisplayName', k, team),
|
|
95
|
-
ctx.transform('encryptPropSummary', k, team),
|
|
96
|
-
]).then(() => {
|
|
97
|
-
team.encryptionKeyUrl = k.uri || k;
|
|
98
|
-
|
|
99
|
-
// we only want to set the defaultActivityEncryptionKeyUrl if we've
|
|
100
|
-
// bound a new key
|
|
101
|
-
if (!key) {
|
|
102
|
-
team.defaultActivityEncryptionKeyUrl =
|
|
103
|
-
team.defaultActivityEncryptionKeyUrl || k.uri || k;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
name: 'encryptPropSummary',
|
|
111
|
-
direction: 'outbound',
|
|
112
|
-
fn(ctx, key, team) {
|
|
113
|
-
return ctx.transform('encryptTextProp', 'summary', key, team);
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
name: 'normalizeTeam',
|
|
118
|
-
fn(ctx, team) {
|
|
119
|
-
team.conversations = team.conversations || {};
|
|
120
|
-
team.conversations.items = team.conversations.items || [];
|
|
121
|
-
team.teamMembers = team.teamMembers || {};
|
|
122
|
-
team.teamMembers.items = team.teamMembers.items || [];
|
|
123
|
-
|
|
124
|
-
return Promise.all([
|
|
125
|
-
Promise.all(
|
|
126
|
-
team.conversations.items.map((item) => ctx.transform('normalizeObject', item))
|
|
127
|
-
),
|
|
128
|
-
Promise.all(
|
|
129
|
-
team.teamMembers.items.map((item) => ctx.transform('normalizeObject', item))
|
|
130
|
-
),
|
|
131
|
-
]);
|
|
132
|
-
},
|
|
133
|
-
},
|
|
134
|
-
],
|
|
135
|
-
},
|
|
136
|
-
config,
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
export {default} from './team';
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import '@webex/internal-plugin-conversation';
|
|
6
|
+
import '@webex/internal-plugin-user';
|
|
7
|
+
import '@webex/internal-plugin-encryption';
|
|
8
|
+
import {isArray, has, get} from 'lodash';
|
|
9
|
+
import {registerInternalPlugin} from '@webex/webex-core';
|
|
10
|
+
|
|
11
|
+
import Team from './team';
|
|
12
|
+
import config from './config';
|
|
13
|
+
|
|
14
|
+
registerInternalPlugin('team', Team, {
|
|
15
|
+
payloadTransformer: {
|
|
16
|
+
predicates: [
|
|
17
|
+
{
|
|
18
|
+
name: 'decryptTeamRoomStatus',
|
|
19
|
+
direction: 'inbound',
|
|
20
|
+
test(ctx, optionsOrResponse) {
|
|
21
|
+
return Promise.resolve(
|
|
22
|
+
has(optionsOrResponse, 'activity.object.activityEvent') &&
|
|
23
|
+
get(optionsOrResponse, 'activity.object.objectType') === 'teamRoomStatus'
|
|
24
|
+
);
|
|
25
|
+
},
|
|
26
|
+
extract(optionsOrResponse) {
|
|
27
|
+
return Promise.resolve(optionsOrResponse.activity.object);
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
transforms: [
|
|
32
|
+
{
|
|
33
|
+
name: 'decryptTeam',
|
|
34
|
+
direction: 'inbound',
|
|
35
|
+
fn(ctx, key, team) {
|
|
36
|
+
const promises = [];
|
|
37
|
+
|
|
38
|
+
if (team.conversations.items) {
|
|
39
|
+
promises.push(
|
|
40
|
+
Promise.all(
|
|
41
|
+
team.conversations.items.map((item) => ctx.transform('decryptObject', null, item))
|
|
42
|
+
)
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const usableKey = team.encryptionKeyUrl || key;
|
|
47
|
+
|
|
48
|
+
if (usableKey) {
|
|
49
|
+
promises.push(ctx.transform('decryptPropDisplayName', usableKey, team));
|
|
50
|
+
promises.push(ctx.transform('decryptPropSummary', usableKey, team));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return Promise.all(promises);
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'decryptTeamRoomStatus',
|
|
58
|
+
direction: 'inbound',
|
|
59
|
+
fn(ctx, teamRoomStatus) {
|
|
60
|
+
const keyUrl = get(teamRoomStatus, 'activityEvent.encryptionKeyUrl');
|
|
61
|
+
|
|
62
|
+
return ctx.transform('decryptObject', keyUrl, teamRoomStatus.activityEvent);
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'decryptPropSummary',
|
|
67
|
+
direction: 'inbound',
|
|
68
|
+
fn(ctx, key, team) {
|
|
69
|
+
return ctx.transform('decryptTextProp', 'summary', key, team);
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'encryptTeam',
|
|
74
|
+
direction: 'outbound',
|
|
75
|
+
fn(ctx, key, team) {
|
|
76
|
+
if (key === false) {
|
|
77
|
+
return Promise.resolve();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return Promise.resolve(
|
|
81
|
+
key || ctx.webex.internal.encryption.kms.createUnboundKeys({count: 1})
|
|
82
|
+
).then((keys) => {
|
|
83
|
+
const k = isArray(keys) ? keys[0] : keys;
|
|
84
|
+
|
|
85
|
+
if (
|
|
86
|
+
team.kmsMessage &&
|
|
87
|
+
team.kmsMessage.keyUris &&
|
|
88
|
+
!team.kmsMessage.keyUris.includes(k.uri)
|
|
89
|
+
) {
|
|
90
|
+
team.kmsMessage.keyUris.push(k.uri);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return Promise.all([
|
|
94
|
+
ctx.transform('encryptPropDisplayName', k, team),
|
|
95
|
+
ctx.transform('encryptPropSummary', k, team),
|
|
96
|
+
]).then(() => {
|
|
97
|
+
team.encryptionKeyUrl = k.uri || k;
|
|
98
|
+
|
|
99
|
+
// we only want to set the defaultActivityEncryptionKeyUrl if we've
|
|
100
|
+
// bound a new key
|
|
101
|
+
if (!key) {
|
|
102
|
+
team.defaultActivityEncryptionKeyUrl =
|
|
103
|
+
team.defaultActivityEncryptionKeyUrl || k.uri || k;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'encryptPropSummary',
|
|
111
|
+
direction: 'outbound',
|
|
112
|
+
fn(ctx, key, team) {
|
|
113
|
+
return ctx.transform('encryptTextProp', 'summary', key, team);
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: 'normalizeTeam',
|
|
118
|
+
fn(ctx, team) {
|
|
119
|
+
team.conversations = team.conversations || {};
|
|
120
|
+
team.conversations.items = team.conversations.items || [];
|
|
121
|
+
team.teamMembers = team.teamMembers || {};
|
|
122
|
+
team.teamMembers.items = team.teamMembers.items || [];
|
|
123
|
+
|
|
124
|
+
return Promise.all([
|
|
125
|
+
Promise.all(
|
|
126
|
+
team.conversations.items.map((item) => ctx.transform('normalizeObject', item))
|
|
127
|
+
),
|
|
128
|
+
Promise.all(
|
|
129
|
+
team.teamMembers.items.map((item) => ctx.transform('normalizeObject', item))
|
|
130
|
+
),
|
|
131
|
+
]);
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
config,
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
export {default} from './team';
|