65 lines
1.9 KiB
TypeScript
65 lines
1.9 KiB
TypeScript
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);
|