From dd2c009721399660e9d124aea0d68aeef54179a5 Mon Sep 17 00:00:00 2001
From: Bogdan Cochior <bogdan.cochior@thinslices.com>
Date: Fri, 21 Sep 2018 15:26:17 +0300
Subject: [PATCH] refactor(mts): add feature flag and .env var

---
 .../src/routes/fragments/post.js              | 34 ++++++++++++-------
 .../routes/fragmentsRecommendations/post.js   | 34 ++++++++++++-------
 packages/xpub-faraday/config/default.js       |  3 ++
 3 files changed, 45 insertions(+), 26 deletions(-)

diff --git a/packages/component-manuscript-manager/src/routes/fragments/post.js b/packages/component-manuscript-manager/src/routes/fragments/post.js
index 2ec4ab94a..7b5410258 100644
--- a/packages/component-manuscript-manager/src/routes/fragments/post.js
+++ b/packages/component-manuscript-manager/src/routes/fragments/post.js
@@ -8,9 +8,25 @@ const {
 
 const notifications = require('./notifications/notifications')
 
-const s3Config = get(config, 'pubsweet-component-aws-s3', {})
-const mtsConfig = get(config, 'mts-service', {})
-const MTSService = require('pubsweet-component-mts-package')
+const { features = {} } = config
+
+const sendMTSPackage = async (collection, fragment) => {
+  const s3Config = get(config, 'pubsweet-component-aws-s3', {})
+  const mtsConfig = get(config, 'mts-service', {})
+  const MTSService = require('pubsweet-component-mts-package')
+
+  const { journal, xmlParser, ftp } = mtsConfig
+  const MTS = new MTSService(journal, xmlParser, s3Config, ftp)
+  const packageFragment = {
+    ...fragment,
+    metadata: {
+      ...fragment.metadata,
+      customId: collection.customId,
+    },
+  }
+
+  await MTS.sendPackage({ fragment: packageFragment })
+}
 
 module.exports = models => async (req, res) => {
   const { collectionId, fragmentId } = req.params
@@ -42,18 +58,10 @@ module.exports = models => async (req, res) => {
     set(collection, 'technicalChecks.token', v4())
     await collection.save()
 
-    const { journal, xmlParser, ftp } = mtsConfig
-    const MTS = new MTSService(journal, xmlParser, s3Config, ftp)
-    const packageFragment = {
-      ...fragment,
-      metadata: {
-        ...fragment.metadata,
-        customId: collection.customId,
-      },
+    if (features.mts) {
+      await sendMTSPackage(collection, fragment)
     }
 
-    await MTS.sendPackage({ fragment: packageFragment })
-
     notifications.sendNotifications({
       fragment,
       collection,
diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
index 6b2ccae9c..ee36ebb09 100644
--- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
+++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
@@ -9,9 +9,25 @@ const {
   Collection,
 } = require('pubsweet-component-helper-service')
 
-const s3Config = get(config, 'pubsweet-component-aws-s3', {})
-const mtsConfig = get(config, 'mts-service', {})
-const MTSService = require('pubsweet-component-mts-package')
+const { features = {} } = config
+
+const sendMTSPackage = async (collection, fragment) => {
+  const s3Config = get(config, 'pubsweet-component-aws-s3', {})
+  const mtsConfig = get(config, 'mts-service', {})
+  const MTSService = require('pubsweet-component-mts-package')
+
+  const { journal, xmlParser, ftp } = mtsConfig
+  const MTS = new MTSService(journal, xmlParser, s3Config, ftp)
+  const packageFragment = {
+    ...fragment,
+    metadata: {
+      ...fragment.metadata,
+      customId: collection.customId,
+    },
+  }
+
+  await MTS.sendPackage({ fragment: packageFragment })
+}
 
 const notifications = require('./notifications/notifications')
 
@@ -80,18 +96,10 @@ module.exports = models => async (req, res) => {
     const hasEQA = has(technicalChecks, 'eqa')
     // the manuscript has not yet passed through the EQA process so we need to upload it to the FTP server
     if (isEditorInChief && recommendation === 'publish' && !hasEQA) {
-      const { journal, xmlParser, ftp } = mtsConfig
-      const MTS = new MTSService(journal, xmlParser, s3Config, ftp)
-      const packageFragment = {
-        ...fragment,
-        metadata: {
-          ...fragment.metadata,
-          customId: collection.customId,
-        },
+      if (features.mts) {
+        await sendMTSPackage(collection, fragment)
       }
 
-      await MTS.sendPackage({ fragment: packageFragment, isEQA: true })
-
       collection.status = 'inQA'
       set(collection, 'technicalChecks.token', v4())
       set(collection, 'technicalChecks.eqa', false)
diff --git a/packages/xpub-faraday/config/default.js b/packages/xpub-faraday/config/default.js
index 4fc862bd5..b00ae42ca 100644
--- a/packages/xpub-faraday/config/default.js
+++ b/packages/xpub-faraday/config/default.js
@@ -124,4 +124,7 @@ module.exports = {
     name: get(journalConfig, 'metadata.nameText'),
     staffEmail: get(journalConfig, 'metadata.email'),
   },
+  features: {
+    mts: JSON.parse(get(process, 'env.FEATURE_MTS', true)),
+  },
 }
-- 
GitLab