UNPKG

@atlaskit/editor-plugin-collab-edit

Version:

Collab Edit plugin for @atlaskit/editor-core

67 lines (66 loc) 3.45 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } 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 var addSynchronyErrorAnalytics = function addSynchronyErrorAnalytics(state, tr, featureFlags, editorAnalyticsApi) { return function (error) { var browserExtensions = sniffUserBrowserExtensions({ extensions: ['grammarly'] }); var payload = { action: ACTION.SYNCHRONY_ERROR, actionSubject: ACTION_SUBJECT.EDITOR, eventType: EVENT_TYPE.OPERATIONAL, attributes: { error: error, browserExtensions: 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 || editorAnalyticsApi.attachAnalyticsEvent(payload)(tr); return tr; }; }; /** * Builds the `agentEditShimmerNotShown` operational event fired when an agent-authored edit applied * instantly without the skeleton shimmer/telepointer. Success is the ABSENCE of this event; a * neutral action + `reason` keeps expected degrades out of error dashboards. Attributes are non-PII: * only the agent kind and a sanitised error name/message (never the raw Error or any doc content). */ export var getAgentEditShimmerNotShownPayload = function getAgentEditShimmerNotShownPayload(reason, agentType, error) { return { action: ACTION.AGENT_EDIT_SHIMMER_NOT_SHOWN, actionSubject: ACTION_SUBJECT.COLLAB, eventType: EVENT_TYPE.OPERATIONAL, attributes: _objectSpread(_objectSpread({ reason: reason }, agentType ? { agentType: agentType } : {}), error ? { error: "".concat(error.name, ": ").concat(error.message) } : {}) }; }; export var addSynchronyEntityAnalytics = function addSynchronyEntityAnalytics(state, tr) { return function (type, editorAnalyticsApi) { editorAnalyticsApi === null || editorAnalyticsApi === 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; }; };