diff --git a/packages/node_modules/@ciscospark/internal-plugin-ediscovery/src/ediscovery.js b/packages/node_modules/@ciscospark/internal-plugin-ediscovery/src/ediscovery.js index bb9762d8d78..e0a2f139f35 100644 --- a/packages/node_modules/@ciscospark/internal-plugin-ediscovery/src/ediscovery.js +++ b/packages/node_modules/@ciscospark/internal-plugin-ediscovery/src/ediscovery.js @@ -277,6 +277,36 @@ const Ediscovery = SparkPlugin.extend({ }); }, + /** + * Decrypt the messages found on the activities. + * @param {Object[]} activities An array of activities with encrypted messages + * @returns {Promise<[any]>} The activities with their messages decrypted + */ + _decrypt(activities) { + const promises = []; + for (let i = 0; i < activities.length; i += 1) { + const activity = activities[i]; + if (activity.verb === 'post' && activity.encryptionKeyUrl) { + const promise = this.spark.internal.encryption.decryptText(activity.encryptionKeyUrl, activity.objectDisplayName, activity.actorId) + .then((decryptedMessage) => { + // Replace encrypted message with the decrypted version + activity.objectDisplayName = decryptedMessage; + return activity; + }) + .catch((error) => { + this.logger.error(`Unable to decrypt message due to error: ${error}`); + return activity; + }); + promises.push(promise); + } + else { + promises.push(Promise.resolve(activity)); + } + } + + return Promise.all(promises); + }, + @waitForValue('@') generateReport(reportId) { if (!reportId) { @@ -299,13 +329,18 @@ const Ediscovery = SparkPlugin.extend({ // Retrieve the activities for (let offset = 0; offset < activityCount; offset += numberToRetrieve) { - const promise = this.getPagedContent(reportId, offset, numberToRetrieve).then((response) => { - const activities = response.body; - if (activities && Array.isArray(activities) && activities.length) { - // Add activities to the report - reportGenerator.add(activities); - } - }); + const promise = this.getPagedContent(reportId, offset, numberToRetrieve) + .then((response) => { + const activities = response.body; + return this._decrypt(activities); + }) + .then((activities) => { + if (activities && Array.isArray(activities) && activities.length) { + // Add activities to the report + reportGenerator.add(activities); + } + return activities; + }); promises.push(promise); }