Add functionality to refresh mss key status in preview modal

[MAILPOET-4633]
This commit is contained in:
Sam Najian
2022-12-27 22:25:55 +01:00
committed by Aschepikov
parent 86ce19085a
commit 3ae281fc1f
7 changed files with 66 additions and 11 deletions

File diff suppressed because one or more lines are too long

View File

@ -11,3 +11,4 @@ export * from './listings';
export * from './error_boundary';
export * from './functions';
export * from './utils';
export * from './thumbnail';

View File

@ -1,4 +1,3 @@
export const getLinkRegex = () => /\[link\](.*?)\[\/link\]/g;
export const isTruthy = (value: string | number | boolean) =>
[1, '1', true, 'true'].includes(value);

View File

@ -6,7 +6,7 @@ import Marionette from 'backbone.marionette';
import $ from 'jquery';
import Blob from 'blob';
import FileSaver from 'file-saver';
import * as Thumbnail from 'common/thumbnail.ts';
import { isTruthy, fromNewsletter } from 'common';
import _ from 'underscore';
import SuperModel from 'backbone.supermodel/build/backbone.supermodel';
@ -99,7 +99,7 @@ Module.save = function () {
};
Module.saveTemplate = function (options) {
return Thumbnail.fromNewsletter(App.toJSON()).then(function (thumbnail) {
return fromNewsletter(App.toJSON()).then(function (thumbnail) {
var data = _.extend(options || {}, {
thumbnail_data: thumbnail,
body: JSON.stringify(App.getBody()),
@ -116,7 +116,7 @@ Module.saveTemplate = function (options) {
};
Module.exportTemplate = function (options) {
return Thumbnail.fromNewsletter(App.toJSON()).then(function (thumbnail) {
return fromNewsletter(App.toJSON()).then(function (thumbnail) {
var data = _.extend(options || {}, {
thumbnail_data: thumbnail,
body: App.getBody(),
@ -573,6 +573,9 @@ Module.NewsletterPreviewModel = SuperModel.extend({
previewSendingError: false,
previewSendingSuccess: false,
sendingPreview: false,
mssPendingApproval: window.mailpoet_mss_key_pending_approval,
mssKeyPendingApprovalRefreshMessage: true,
awaitingKeyCheck: false,
},
});
@ -588,6 +591,7 @@ Module.NewsletterPreviewView = Marionette.View.extend({
return {
'change .mailpoet_browser_preview_type': 'changeBrowserPreviewType',
'click #mailpoet_send_preview': 'sendPreview',
'click #refresh-mss-key-status': 'refreshMssKeyStatus',
};
},
initialize: function (options) {
@ -606,7 +610,11 @@ Module.NewsletterPreviewView = Marionette.View.extend({
this.$('#mailpoet_preview_to_email').val() || window.currentUserEmail,
previewSendingError: this.model.get('previewSendingError'),
sendingPreview: this.model.get('sendingPreview'),
mssKeyPendingApproval: window.mailpoet_mss_key_pending_approval,
mssKeyPendingApproval: this.model.get('mssPendingApproval'),
mssKeyPendingApprovalRefreshMessage: this.model.get(
'mssKeyPendingApprovalRefreshMessage',
),
awaitingKeyCheck: this.model.get('awaitingKeyCheck'),
};
},
changeBrowserPreviewType: function (event) {
@ -712,11 +720,11 @@ Module.NewsletterPreviewView = Marionette.View.extend({
)}</p>
<p>
<a
href=${MailPoet.MailPoetComUrlFactory.getFreePlanUrl({
href='${MailPoet.MailPoetComUrlFactory.getFreePlanUrl({
utm_campaign: 'sending-error',
})}
target="_blank"
rel="noopener noreferrer"
})}'
target='_blank'
rel='noopener noreferrer'
>
${MailPoet.I18n.t(
'newsletterPreviewErrorSignUpForSendingService',
@ -744,6 +752,31 @@ Module.NewsletterPreviewView = Marionette.View.extend({
});
return undefined;
},
refreshMssKeyStatus: function () {
this.model.set('awaitingKeyCheck', true);
return MailPoet.Ajax.post({
api_version: window.mailpoet_api_version,
endpoint: 'services',
action: 'checkMSSKey',
data: {
key: window.mailpoet_api_key,
},
})
.done((response) => {
this.model.set('awaitingKeyCheck', false);
if (response.data && response.data.result.code === 200) {
this.model.set(
'mssPendingApproval',
!isTruthy(response.data.result.data.is_approved),
);
this.model.set('mssKeyPendingApprovalRefreshMessage', false);
}
})
.fail(() => {
this.model.set('awaitingKeyCheck', false);
});
},
});
App.on('before:start', function (BeforeStartApp) {

View File

@ -278,7 +278,7 @@ describe('Save', function () {
},
},
'newsletter_editor/App': { App },
'common/thumbnail.ts': {
common: {
fromNewsletter: function () {
return promiseMock;
},

View File

@ -374,6 +374,7 @@
var mailpoet_email_editor_tutorial_seen = '<%= editor_tutorial_seen %>';
var mailpoet_email_editor_tutorial_url = '<%= cdn_url('newsletter-editor/editor-drag-demo.20190226-1505.mp4') %>';
var mailpoet_installed_at = '<%= settings.installed_at %>';
var mailpoet_api_key = '<%= settings.mta.mailpoet_api_key %>';
</script>
<% endblock %>

View File

@ -57,8 +57,11 @@
</form>
{{#if mssKeyPendingApproval }}
<div class="mailpoet_error">
<div class="mailpoet_error pendindig_approval_error{{#if awaitingKeyCheck}} with-spinner{{/if}}">
<%= __('Youll soon be able to send once our team reviews your account. In the meantime, you can send previews to [link]your authorized emails[/link].')|replaceLinkTags('https://account.mailpoet.com/authorization', {'target': '_blank', 'rel': 'noopener noreferrer'})|raw %>
{{#if mssKeyPendingApprovalRefreshMessage }}
<%= __('If you have already received approval email, click [link]here[/link] to update the status.')|replaceLinkTags('#', {'id': 'refresh-mss-key-status'})|raw %>
{{/if}}
</div>
{{/if}}
</div>