+ });
+ }, SETTING_DEBOUNCE_MS);
+ $scope.$watchCollection("permitRecipientRebuild", refreshSetting);
+
+ $scope.previewRecipients = function previewRecipients() {
+ var model = {
+ count: $scope.recipients,
+ sample: crmMailingCache.get('mailing-' + $scope.mailing.id + '-recipient-list'),
+ sampleLimit: RECIPIENTS_PREVIEW_LIMIT
+ };
+ var options = CRM.utils.adjustDialogDefaults({
+ width: '40%',
+ autoOpen: false,
+ title: ts('Preview (%1)', {1: $scope.getRecipientCount()})
+ });
+
+ // don't open preview dialog if there is no recipient to show.
+ if ($scope.recipients !== 0 && !$scope.outdated) {
+ if (!_.isEmpty(model.sample)) {
+ dialogService.open('recipDialog', '~/crmMailing/PreviewRecipCtrl.html', model, options);
+ }
+ else {
+ return crmStatus({start: ts('Previewing...'), success: ''}, crmMailingMgr.previewRecipients($scope.mailing, RECIPIENTS_PREVIEW_LIMIT).then(function(recipients) {
+ model.sample = recipients;
+ dialogService.open('recipDialog', '~/crmMailing/PreviewRecipCtrl.html', model, options);
+ }));
+ }
+ }
+ };
+
+ $scope.rebuildRecipients = function rebuildRecipients() {
+ // setting null will put 'Estimating..' text on refresh button
+ $scope.recipients = null;
+ return crmMailingMgr.previewRecipientCount($scope.mailing, crmMailingCache, true).then(function(recipients) {
+ $scope.outdated = (recipients === 0) ? true : false;
+ $scope.recipients = recipients;
+ });