new things
This commit is contained in:
49
src/shared/amplitude/index.tsx
Normal file
49
src/shared/amplitude/index.tsx
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
import Script from 'next/script';
|
||||||
|
|
||||||
|
function Amplitude() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Script
|
||||||
|
src="https://cdn.amplitude.com/libs/analytics-browser-2.11.1-min.js.gz"
|
||||||
|
strategy="beforeInteractive"
|
||||||
|
/>
|
||||||
|
<Script
|
||||||
|
src="https://cdn.amplitude.com/libs/plugin-session-replay-browser-1.23.2-min.js.gz"
|
||||||
|
strategy="beforeInteractive"
|
||||||
|
/>
|
||||||
|
<Script
|
||||||
|
id="amplitude-init"
|
||||||
|
strategy="beforeInteractive"
|
||||||
|
dangerouslySetInnerHTML={{
|
||||||
|
__html: `
|
||||||
|
async function getOrCreateUserId() {
|
||||||
|
let userId = localStorage.getItem('anon_user_id');
|
||||||
|
if (!userId) {
|
||||||
|
try {
|
||||||
|
const res = await fetch('/api/user-id', { method: 'POST' });
|
||||||
|
const data = await res.json();
|
||||||
|
userId = data.userId;
|
||||||
|
localStorage.setItem('anon_user_id', userId);
|
||||||
|
} catch (e) {
|
||||||
|
userId = 'user_fallback_' + Math.random().toString(36).slice(2);
|
||||||
|
localStorage.setItem('anon_user_id', userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
getOrCreateUserId().then(userId => {
|
||||||
|
window.amplitude.add(window.sessionReplay.plugin({ sampleRate: 1 }));
|
||||||
|
window.amplitude.init('618500dd065c8ab3935280689174de37', {
|
||||||
|
userId: userId,
|
||||||
|
autocapture: { elementInteractions: true }
|
||||||
|
});
|
||||||
|
});
|
||||||
|
`,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Amplitude;
|
||||||
Reference in New Issue
Block a user