This commit is contained in:
parent
3ceae8677e
commit
d8cbffcfd5
1 changed files with 18 additions and 27 deletions
|
|
@ -1,31 +1,22 @@
|
|||
const baseUri = 'https://insights.decla.red';
|
||||
const type = 'sdf-2d-demo';
|
||||
import { track } from '../analytics';
|
||||
|
||||
export const handleInsights = async (initialData: any): Promise<(data: any) => void> => {
|
||||
try {
|
||||
const sessionId = await createSession(initialData);
|
||||
return (data) => createFrame(sessionId, data);
|
||||
} catch {
|
||||
return () => null;
|
||||
}
|
||||
track('Session Insights', { props: toStringProps(initialData) });
|
||||
|
||||
let performanceReported = false;
|
||||
return (data) => {
|
||||
if (performanceReported) {
|
||||
return;
|
||||
}
|
||||
performanceReported = true;
|
||||
track('Performance Insights', { props: toStringProps(data) });
|
||||
};
|
||||
};
|
||||
|
||||
const createSession = async (data: any): Promise<string> => {
|
||||
const response = await sendPostRequest(`${baseUri}/${type}/sessions/`, data);
|
||||
const { sessionId } = await response.json();
|
||||
return sessionId;
|
||||
};
|
||||
|
||||
const createFrame = (sessionId: string, data: any): Promise<unknown> =>
|
||||
sendPostRequest(`${baseUri}/${type}/sessions/${sessionId}`, data).catch();
|
||||
|
||||
const sendPostRequest = async (uri: string, data: any): Promise<Response> =>
|
||||
await fetch(uri, {
|
||||
method: 'POST',
|
||||
mode: 'cors',
|
||||
redirect: 'follow',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify(data),
|
||||
});
|
||||
const toStringProps = (data: Record<string, unknown>): Record<string, string> =>
|
||||
Object.entries(data).reduce<Record<string, string>>((props, [key, value]) => {
|
||||
if (value !== undefined && value !== null) {
|
||||
props[key] = String(value);
|
||||
}
|
||||
return props;
|
||||
}, {});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue