Merge pull request #12338 from seamuslee001/bootstrap_mailing_2
[civicrm-core.git] / ang / crmMailing / services.js
index db9d2d9df816b77f9fda7bff27875f61cbb41fcf..cfaaeda2b1d1a7225ef76a167697b25c60d05cee 100644 (file)
         else {
           // Protect against races in saving and previewing by chaining create+preview.
           var params = angular.extend({}, mailing, mailing.recipients, {
-            options: {force_rollback: 1},
+            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;
             // changes rolled back, so we don't care about updating mailing
       previewRecipients: function previewRecipients(mailing, previewLimit) {
         // To get list of recipients, we tentatively save the mailing and
         // get the resulting recipients -- then rollback any changes.
-        var params = angular.extend({}, mailing, mailing.recipients, {
-          name: 'placeholder', // for previewing recipients on new, incomplete mailing
-          subject: 'placeholder', // for previewing recipients on new, incomplete mailing
-          options: {force_rollback: 1},
-          'api.mailing_job.create': 1, // note: exact match to API default
+        var params = angular.extend({}, mailing.recipients, {
+          id: mailing.id,
           'api.MailingRecipients.get': {
             mailing_id: '$value.id',
             options: {limit: previewLimit},
             'api.email.getvalue': {'return': 'email'}
           }
         });
+        delete params.scheduled_date;
         delete params.recipients; // the content was merged in
         return qApi('Mailing', 'create', params).then(function (recipResult) {
           // changes rolled back, so we don't care about updating mailing
           // To get list of recipients, we tentatively save the mailing and
           // get the resulting recipients -- then rollback any changes.
           var params = angular.extend({}, mailing, mailing.recipients, {
-            name: 'placeholder', // for previewing recipients on new, incomplete mailing
-            subject: 'placeholder', // for previewing recipients on new, incomplete mailing
-            options: {force_rollback: 1},
-            'api.mailing_job.create': 1, // note: exact match to API default
+            id: mailing.id,
             'api.MailingRecipients.getcount': {
               mailing_id: '$value.id'
             }
             });
             crmMailingCache.put('mailing-' + mailing.id + '-recipient-params', params.recipients);
           }
+          delete params.scheduled_date;
           delete params.recipients; // the content was merged in
           recipientCount = qApi('Mailing', 'create', params).then(function (recipResult) {
             // changes rolled back, so we don't care about updating mailing
         delete params.jobs;
 
         delete params.recipients; // the content was merged in
-
+        params._skip_evil_bao_auto_recipients_ = 1; // skip recipient rebuild on simple save
         return qApi('Mailing', 'create', params).then(function(result) {
           if (result.id && !mailing.id) {
             mailing.id = result.id;
 
         delete params.recipients; // the content was merged in
 
+        params._skip_evil_bao_auto_recipients_ = 1; // skip recipient rebuild while sending test mail
+
         return qApi('Mailing', 'create', params).then(function (result) {
           if (result.id && !mailing.id) {
             mailing.id = result.id;