@atlaskit/editor-plugin-collab-edit
Version:
Collab Edit plugin for @atlaskit/editor-core
43 lines • 1.71 kB
JavaScript
import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
import { getDocStructure } from '@atlaskit/editor-common/core-utils';
import { sniffUserBrowserExtensions } from '@atlaskit/editor-common/utils';
export const addSynchronyErrorAnalytics = (state, tr, featureFlags, editorAnalyticsApi) => {
return error => {
const browserExtensions = sniffUserBrowserExtensions({
extensions: ['grammarly']
});
const payload = {
action: ACTION.SYNCHRONY_ERROR,
actionSubject: ACTION_SUBJECT.EDITOR,
eventType: EVENT_TYPE.OPERATIONAL,
attributes: {
error,
browserExtensions
}
};
if (featureFlags.synchronyErrorDocStructure) {
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
payload.attributes.docStructure = getDocStructure(state.doc, {
compact: true
});
}
editorAnalyticsApi === null || editorAnalyticsApi === void 0 ? void 0 : editorAnalyticsApi.attachAnalyticsEvent(payload)(tr);
return tr;
};
};
export const addSynchronyEntityAnalytics = (state, tr) => {
return (type, editorAnalyticsApi) => {
editorAnalyticsApi === null || editorAnalyticsApi === void 0 ? void 0 : editorAnalyticsApi.attachAnalyticsEvent({
action: type === 'error' ? ACTION.SYNCHRONY_ENTITY_ERROR : ACTION.SYNCHRONY_DISCONNECTED,
actionSubject: ACTION_SUBJECT.EDITOR,
eventType: EVENT_TYPE.OPERATIONAL,
attributes: {
// https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine
onLine: navigator.onLine,
visibilityState: document.visibilityState
}
})(tr);
return tr;
};
};