update for Yandex.Metrika init model, disable Metrika for offstage clients

This commit is contained in:
merelendor 2023-11-13 18:59:20 +03:00
parent 387295b357
commit d6be338385
5 changed files with 94 additions and 57 deletions

View File

@ -32,10 +32,8 @@ export const sendLoginFormEmail = ({ email, password, dispatch }) =>
.then((response) =>
{
//console.log("sendLoginFormEmail RESPONSE");
//console.log(response.data);
if(response.data.status === "success")
{
const cookies = new Cookies();
@ -49,7 +47,8 @@ export const sendLoginFormEmail = ({ email, password, dispatch }) =>
dispatch({ type: actionTypes.COMPANIES, data: { list: response.data.companies } });
resolve();
Router.push('/');
//Router.push('/');
window.location = "/";
})
.catch(() =>
{
@ -116,10 +115,8 @@ export const sendSmsCode = ({ dispatch, phone, code }) =>
.then((response) =>
{
//console.log("sendSmsCode RESPONSE");
//console.log(response.data);
if(response.data.status === "success")
{
const cookies = new Cookies();
@ -132,7 +129,8 @@ export const sendSmsCode = ({ dispatch, phone, code }) =>
dispatch({ type: actionTypes.USER, data: response.data.user });
resolve();
Router.push('/');
//Router.push('/');
window.location = "/";
})
.catch(() =>
{
@ -176,7 +174,8 @@ export const logout = ({ dispatch, redirect = true }) =>
resolve();
if(redirect)
{
Router.push('/');
//Router.push('/');
window.location = "/";
}
});
}
@ -210,7 +209,8 @@ export const sendOffstageToken = ({ token, dispatch }) =>
dispatch({ type: actionTypes.COMPANIES, data: { list: response.data.companies } });
resolve();
Router.push('/');
//Router.push('/');
window.location = "/";
})
.catch(() =>
{
@ -265,7 +265,8 @@ export const sendSwitchAccount = ({ dispatch, acc_number }) =>
.then(() =>
{
resolve();
Router.push('/');
//Router.push('/');
window.location = "/";
})
.catch(() =>
{

View File

@ -72,7 +72,10 @@ export default async function CRMRequestGet({ req, res, path, params, data = und
})
.catch((error) =>
{
console.error(error);
if(log)
{
console.error(error);
}
console.error("-".repeat(30), "error.response.data:");
console.error(error.response.data);

View File

@ -1,9 +1,8 @@
import { reduxWrapper } from '../store'
import numeral from 'numeral';
import '../css/style.css';
import Script from 'next/script';
//import DaData from 'dadata';
//global.dadata = new DaData(process.env.DADATA_API_KEY, process.env.DADATA_SECRET_KEY);
import '../css/style.css';
const m = Math.random();
numeral.register('locale', `locale_${ m }`, {
@ -23,11 +22,56 @@ numeral.register('locale', `locale_${ m }`, {
});
numeral.locale(`locale_${ m }`);
const WrappedApp = ({ Component, pageProps }) =>
const WrappedApp = (props) =>
{
const { Component, pageProps, } = props;
return (
<Component {...pageProps} />
<>
{ props.observer && (
<>
<Script id="yandex-metrica" strategy={'afterInteractive'}>
{`
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(${ process.env.NEXT_PUBLIC_YANDEX_METRIKA_ID }, "init", { clickmap: true, trackLinks: true, accurateTrackBounce: true, webvisor: true });
console.log(ym, ${ process.env.NEXT_PUBLIC_YANDEX_METRIKA_ID });
`}
</Script>
<noscript>
<div>
<img src={`https://mc.yandex.ru/watch/${ process.env.NEXT_PUBLIC_YANDEX_METRIKA_ID }`} style={{ position:'absolute', left:'-9999px' }} alt=""/>
</div>
</noscript>
</>
) }
<Component {...pageProps} />
</>
)
}
WrappedApp.getInitialProps = async (props) =>
{
const { req } = props.ctx;
let observer = true;
if(req.url.indexOf("offstage") > -1)
{
observer = false;
}
if(req.cookies !== undefined && req.cookies.observer !== undefined && req.cookies.observer === "true")
{
observer = false;
}
return {
observer,
}
}
export default reduxWrapper.withRedux(WrappedApp);

View File

@ -1,4 +1,4 @@
import Document, { Html, Head, Main, NextScript } from 'next/document'
import Document, { Html, Head, Main, NextScript } from 'next/document';
class Doc extends Document
{
@ -7,7 +7,6 @@ class Doc extends Document
return (
<Html lang="ru-RU">
<Head>
{/*<base href="http://claymorrow.myjino.ru/dev/evolution/" />*/}
<meta name="description" content="" />
<meta name="keywords" content="" />
@ -41,28 +40,6 @@ class Doc extends Document
<body>
<Main/>
<NextScript />
<script type="text/javascript" dangerouslySetInnerHTML={{
__html: `
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(${ process.env.YANDEX_METRIKA_ID }, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true,
});
`, }}
/>
<noscript>
<div>
<img src={`https://mc.yandex.ru/watch/${ process.env.YANDEX_METRIKA_ID }`} style={{ position:'absolute', left:'-9999px' }} alt=""/>
</div>
</noscript>
</body>
</Html>
)

View File

@ -19,24 +19,33 @@ export default class AccountLayout extends React.Component
window.addEventListener("_move", this._handle_onMove);
window.addEventListener("_message", this._handle_onMessage);
const store = global.store.getState();
const { company, user } = store;
console.log("LAYOUT", "CDM", { store });
const payload = {
userID: user.email !== undefined && user.email !== null && user.email !== "" ? user.email : user.phone,
companyID: company.active,
};
if(payload.companyID !== undefined && payload.companyID !== null && payload.companyID !== "")
setTimeout(() =>
{
console.log("LAYOUT", "CDM", { payload });
ym(process.env.YANDEX_METRIKA_ID, 'userParams', payload);
}
}
const store = global.store.getState();
const { company, user } = store;
console.log("CDM", { state: this.state });
//console.log("LAYOUT", "CDM", { store });
const payload = {
userID: user.email !== undefined && user.email !== null && user.email !== "" ? user.email : user.phone,
companyID: company.active,
};
//console.log("LAYOUT", "CDM", { payload });
if(payload.companyID !== undefined && payload.companyID !== null && payload.companyID !== "")
{
//console.log("LAYOUT", "CDM", { payload });
//console.log("LAYOUT", "CDM", "CHECK YM");
if(window.ym !== undefined)
{
console.log({ ym: window.ym, id: process.env.NEXT_PUBLIC_YANDEX_METRIKA_ID });
window.ym(process.env.NEXT_PUBLIC_YANDEX_METRIKA_ID, 'userParams', payload);
}
}
}, 100);
}
}
componentWillUnmount()
@ -52,9 +61,12 @@ export default class AccountLayout extends React.Component
_handle_onTrack = (event) =>
{
//event.detail.path
console.log("LAYOUT", "_handle_onTrack", { event, props: this.props });
//console.log("LAYOUT", "_handle_onTrack", { event, props: this.props });
console.log({ ym });
if(window.ym !== undefined)
{
//console.log({ ym: window.ym });
}
}
_handle_onMove = (event) =>