Merge pull request #17283 from agh1/stop-icon-png
[civicrm-core.git] / ang / crmMailing / services.js
index e50a0a0f7a7a5dca40039ea4be5026775f8b97cf..45c206373230e3a0002834b5ec657f8b7a4d0ed2 100644 (file)
       // @param mailing Object (per APIv3)
       // @return Promise an object with "subject", "body_text", "body_html"
       preview: function preview(mailing) {
+        return this.getPreviewContent(qApi, mailing);
+      },
+
+      // @param backend
+      // @param mailing Object (per APIv3)
+      // @return preview content
+      getPreviewContent: function getPreviewContent(backend, mailing) {
         if (CRM.crmMailing.workflowEnabled && !CRM.checkPerm('create mailings') && !CRM.checkPerm('access CiviMail')) {
-          return qApi('Mailing', 'preview', {id: mailing.id}).then(function(result) {
+          return backend('Mailing', 'preview', {id: mailing.id}).then(function(result) {
             return result.values;
           });
         }
         else {
-          // Protect against races in saving and previewing by chaining create+preview.
-          var params = angular.extend({}, mailing, mailing.recipients, {
-            id: mailing.id,
-            'api.Mailing.preview': {
-              id: '$value.id'
-            }
-          });
-          delete params.scheduled_date;
-          delete params.recipients; // the content was merged in
-          params._skip_evil_bao_auto_recipients_ = 1; // skip recipient rebuild on mail preview
-          return qApi('Mailing', 'create', params).then(function(result) {
-            mailing.modified_date = result.values[result.id].modified_date;
+          var params = angular.extend({}, mailing);
+          delete params.id;
+          return backend('Mailing', 'preview', params).then(function(result) {
             // changes rolled back, so we don't care about updating mailing
-            return result.values[result.id]['api.Mailing.preview'].values;
+            return result.values;
           });
         }
       },
         };
         var result = null;
         var p = crmMailingMgr
-          .preview(mailing)
+          .getPreviewContent(CRM.api3, mailing)
           .then(function (content) {
             var options = CRM.utils.adjustDialogDefaults({
               autoOpen: false,