Refactor NpsPoll to custom effect

[MAILPOET-1916]
This commit is contained in:
Rostislav Wolny
2019-03-21 15:32:15 +01:00
committed by M. Shull
parent 3dc67ac481
commit 1edfedbe01

View File

@@ -1,19 +1,13 @@
import React, { useState, useLayoutEffect } from 'react';
import React, { useLayoutEffect } from 'react';
import MailPoet from 'mailpoet';
import ReactDOMServer from 'react-dom/server';
import satismeter from 'satismeter-loader';
import ReviewRequest from 'review_request.jsx';
import getTrackingData from 'analytics.js';
const NpsPoll = () => {
const [pollShown, setPollShown] = useState(false);
const [modalShown, setModalShown] = useState(false);
function showReviewRequestModal() {
if (modalShown) {
return;
}
setModalShown(true);
const useNpsPoll = () => {
useLayoutEffect(() => {
const showReviewRequestModal = () => {
MailPoet.Modal.popup({
width: 800,
template: ReactDOMServer.renderToString(
@@ -30,9 +24,9 @@ const NpsPoll = () => {
.addEventListener('click', () => MailPoet.Modal.close());
},
});
}
};
function callSatismeter(trackingData) {
const callSatismeter = (trackingData) => {
const newUsersPollId = '6L479eVPXk7pBn6S';
const oldUsersPollId = 'k0aJAsQAWI2ERyGv';
satismeter({
@@ -61,25 +55,19 @@ const NpsPoll = () => {
},
},
});
}
};
useLayoutEffect(() => {
if (window.mailpoet_display_nps_poll && !pollShown) {
setPollShown(true);
getTrackingData().then(data => callSatismeter(data.data));
if (window.mailpoet_display_nps_poll) {
getTrackingData().then(({ data }) => callSatismeter(data));
}
});
}, []);
return null;
};
const withNpsPoll = function withNpsPoll(Component) {
return props => (
<>
<NpsPoll />
<Component {...props} />
</>
);
const withNpsPoll = Component => (props) => {
useNpsPoll();
return <Component {...props} />;
};
export default withNpsPoll;