plugin updates
This commit is contained in:
@@ -1,4 +0,0 @@
|
||||
import { initAppOnReady } from '../utils/appUtils';
|
||||
import renderIframeApp from '../iframe/renderIframeApp';
|
||||
|
||||
initAppOnReady(renderIframeApp);
|
||||
@@ -1,79 +0,0 @@
|
||||
import elementorWidget from '../elementor/elementorWidget';
|
||||
import registerFormWidget from '../elementor/FormWidget/registerFormWidget';
|
||||
import { initBackgroundApp } from '../utils/backgroundAppUtils';
|
||||
import registerMeetingsWidget from '../elementor/MeetingWidget/registerMeetingWidget';
|
||||
|
||||
const ELEMENTOR_READY_INTERVAL = 500;
|
||||
const MAX_POLL_TIMEOUT = 30000;
|
||||
|
||||
const registerElementorWidgets = () => {
|
||||
initBackgroundApp(() => {
|
||||
let FormWidget: any;
|
||||
let MeetingsWidget: any;
|
||||
|
||||
const leadinSelectFormItemView = elementorWidget(
|
||||
//@ts-expect-error global
|
||||
window.elementor,
|
||||
{
|
||||
widgetName: 'hubspot-form',
|
||||
controlSelector: '.elementor-hbspt-form-selector',
|
||||
containerSelector: '.hubspot-form-edit-mode',
|
||||
},
|
||||
(controlContainer: any, widgetContainer: any, setValue: Function) => {
|
||||
FormWidget = new registerFormWidget(
|
||||
controlContainer,
|
||||
widgetContainer,
|
||||
setValue
|
||||
);
|
||||
FormWidget.render();
|
||||
},
|
||||
() => {
|
||||
FormWidget.done();
|
||||
}
|
||||
);
|
||||
|
||||
const leadinSelectMeetingItemView = elementorWidget(
|
||||
//@ts-expect-error global
|
||||
window.elementor,
|
||||
{
|
||||
widgetName: 'hubspot-meeting',
|
||||
controlSelector: '.elementor-hbspt-meeting-selector',
|
||||
containerSelector: '.hubspot-meeting-edit-mode',
|
||||
},
|
||||
(controlContainer: any, widgetContainer: any, setValue: Function) => {
|
||||
MeetingsWidget = new registerMeetingsWidget(
|
||||
controlContainer,
|
||||
widgetContainer,
|
||||
setValue
|
||||
);
|
||||
MeetingsWidget.render();
|
||||
},
|
||||
() => {
|
||||
MeetingsWidget.done();
|
||||
}
|
||||
);
|
||||
|
||||
//@ts-expect-error global
|
||||
window.elementor.addControlView(
|
||||
'leadinformselect',
|
||||
leadinSelectFormItemView
|
||||
);
|
||||
//@ts-expect-error global
|
||||
window.elementor.addControlView(
|
||||
'leadinmeetingselect',
|
||||
leadinSelectMeetingItemView
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
const pollForElementorReady = setInterval(() => {
|
||||
const elementorFrontend = (window as any).elementorFrontend;
|
||||
if (elementorFrontend) {
|
||||
registerElementorWidgets();
|
||||
clearInterval(pollForElementorReady);
|
||||
}
|
||||
}, ELEMENTOR_READY_INTERVAL);
|
||||
|
||||
setTimeout(() => {
|
||||
clearInterval(pollForElementorReady);
|
||||
}, MAX_POLL_TIMEOUT);
|
||||
@@ -1,68 +0,0 @@
|
||||
import $ from 'jquery';
|
||||
import Raven from '../lib/Raven';
|
||||
import { domElements } from '../constants/selectors';
|
||||
import ThickBoxModal from '../feedback/ThickBoxModal';
|
||||
import { submitFeedbackForm } from '../feedback/feedbackFormApi';
|
||||
import {
|
||||
getOrCreateBackgroundApp,
|
||||
initBackgroundApp,
|
||||
} from '../utils/backgroundAppUtils';
|
||||
import { refreshToken } from '../constants/leadinConfig';
|
||||
import { ProxyMessages } from '../iframe/integratedMessages';
|
||||
|
||||
function deactivatePlugin() {
|
||||
const href = $(domElements.deactivatePluginButton).attr('href');
|
||||
if (href) {
|
||||
window.location.href = href;
|
||||
}
|
||||
}
|
||||
|
||||
function setLoadingState() {
|
||||
$(domElements.deactivateFeedbackSubmit).addClass('loading');
|
||||
}
|
||||
|
||||
function submitAndDeactivate(e: Event) {
|
||||
e.preventDefault();
|
||||
setLoadingState();
|
||||
const feedback = $(domElements.deactivateFeedbackForm)
|
||||
.serializeArray()
|
||||
.find(field => field.name === 'feedback');
|
||||
|
||||
submitFeedbackForm(domElements.deactivateFeedbackForm)
|
||||
.then(() => {
|
||||
if (feedback && refreshToken) {
|
||||
const embedder = getOrCreateBackgroundApp(refreshToken);
|
||||
embedder.postMessage({
|
||||
key: ProxyMessages.TrackPluginDeactivation,
|
||||
payload: {
|
||||
type: feedback.value.trim().replace(/[\s']+/g, '_'),
|
||||
},
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err: Error) => {
|
||||
Raven.captureException(err);
|
||||
})
|
||||
.finally(() => {
|
||||
deactivatePlugin();
|
||||
});
|
||||
}
|
||||
|
||||
function init() {
|
||||
// eslint-disable-next-line no-new
|
||||
new ThickBoxModal(
|
||||
domElements.deactivatePluginButton,
|
||||
'leadin-feedback-container',
|
||||
'leadin-feedback-window',
|
||||
'leadin-feedback-content'
|
||||
);
|
||||
|
||||
$(domElements.deactivateFeedbackForm)
|
||||
.off('submit')
|
||||
.on('submit', submitAndDeactivate);
|
||||
$(domElements.deactivateFeedbackSkip)
|
||||
.off('click')
|
||||
.on('click', deactivatePlugin);
|
||||
}
|
||||
|
||||
initBackgroundApp(init);
|
||||
@@ -1,10 +0,0 @@
|
||||
import registerFormBlock from '../gutenberg/FormBlock/registerFormBlock';
|
||||
import { registerHubspotSidebar } from '../gutenberg/Sidebar/contentType';
|
||||
import registerMeetingBlock from '../gutenberg/MeetingsBlock/registerMeetingBlock';
|
||||
import { initBackgroundApp } from '../utils/backgroundAppUtils';
|
||||
|
||||
initBackgroundApp([
|
||||
registerFormBlock,
|
||||
registerMeetingBlock,
|
||||
registerHubspotSidebar,
|
||||
]);
|
||||
@@ -1,64 +0,0 @@
|
||||
import $ from 'jquery';
|
||||
import {
|
||||
getOrCreateBackgroundApp,
|
||||
initBackgroundApp,
|
||||
} from '../utils/backgroundAppUtils';
|
||||
import { domElements } from '../constants/selectors';
|
||||
import { refreshToken, activationTime } from '../constants/leadinConfig';
|
||||
import { ProxyMessages } from '../iframe/integratedMessages';
|
||||
|
||||
const REVIEW_BANNER_INTRO_PERIOD_DAYS = 15;
|
||||
|
||||
const userIsAfterIntroductoryPeriod = () => {
|
||||
const activationDate = new Date(+activationTime * 1000);
|
||||
const currentDate = new Date();
|
||||
const timeElapsed = new Date(
|
||||
currentDate.getTime() - activationDate.getTime()
|
||||
);
|
||||
|
||||
return timeElapsed.getUTCDate() - 1 >= REVIEW_BANNER_INTRO_PERIOD_DAYS;
|
||||
};
|
||||
|
||||
/**
|
||||
* Adds some methods to window when review banner is
|
||||
* displayed to monitor events
|
||||
*/
|
||||
export function initMonitorReviewBanner() {
|
||||
if (refreshToken) {
|
||||
const embedder = getOrCreateBackgroundApp(refreshToken);
|
||||
const container = $(domElements.reviewBannerContainer);
|
||||
if (container && userIsAfterIntroductoryPeriod()) {
|
||||
$(domElements.reviewBannerLeaveReviewLink)
|
||||
.off('click')
|
||||
.on('click', () => {
|
||||
embedder.postMessage({
|
||||
key: ProxyMessages.TrackReviewBannerInteraction,
|
||||
});
|
||||
});
|
||||
|
||||
$(domElements.reviewBannerDismissButton)
|
||||
.off('click')
|
||||
.on('click', () => {
|
||||
embedder.postMessage({
|
||||
key: ProxyMessages.TrackReviewBannerDismissed,
|
||||
});
|
||||
});
|
||||
|
||||
embedder
|
||||
.postAsyncMessage({
|
||||
key: ProxyMessages.FetchContactsCreateSinceActivation,
|
||||
payload: +activationTime * 1000,
|
||||
})
|
||||
.then(({ total }: any) => {
|
||||
if (total >= 5) {
|
||||
container.removeClass('leadin-review-banner--hide');
|
||||
embedder.postMessage({
|
||||
key: ProxyMessages.TrackReviewBannerRender,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
initBackgroundApp(initMonitorReviewBanner);
|
||||
Reference in New Issue
Block a user