From 49488ed17f9dc78c44fda49c3ca47e8cd048ffda Mon Sep 17 00:00:00 2001 From: jahorton Date: Thu, 7 May 2020 12:36:08 +0700 Subject: [PATCH] feat(web): adds some event metadata for reports --- .../web/tools/sentry-manager/src/index.ts | 23 ++++++++++++++++++- web/source/kmwbase.ts | 18 +++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/common/core/web/tools/sentry-manager/src/index.ts b/common/core/web/tools/sentry-manager/src/index.ts index 551171d2f4..8493d79850 100644 --- a/common/core/web/tools/sentry-manager/src/index.ts +++ b/common/core/web/tools/sentry-manager/src/index.ts @@ -57,10 +57,31 @@ declare var com; return event; } + function attachEventMetadata(event: any) { + event.extra = event.extra || []; + event.extra.push({ + initialized: window['keyman']['getDebugInfo']() + }); + + return event; + } + + /** + * Pre-processes a Sentry event object to provide more metadata and enhance the Sentry server's + * ability to match the error against release artifacts. + * @param event A Sentry-generated event + */ + function eventPreparer(event: any) { + event = pathFilter(event); + event = attachEventMetadata(event); + + return null; //event + } + // Do the actual Sentry initialization. //@ts-ignore Sentry.init({ - beforeSend: pathFilter, + beforeSend: eventPreparer, // FIXME: DO NOT LEAVE IN PRODUCTION! debug: true, dsn: 'https://cf96f32d107c4286ab2fd82af49c4d3b@sentry.keyman.com/11', // keyman-web DSN diff --git a/web/source/kmwbase.ts b/web/source/kmwbase.ts index 0ca1f26083..431b701370 100644 --- a/web/source/kmwbase.ts +++ b/web/source/kmwbase.ts @@ -177,6 +177,24 @@ namespace com.keyman { dom.DOMEventHandlers.states = new dom.CommonDOMStates(); } + /** + * Returns a generalized metadata object about the state of KMW for use with error reporting. + */ + ['getDebugInfo']() { + let metadata = { + attachType: this.options.attachType, + initialized: this.initialized, + isEmbedded: this.isEmbedded, + ui: this.ui ? this.ui.name : null + } + + if(this.util.device.touchable) { + metadata.ui = 'touch'; + } + + return metadata; + } + /** * Expose font testing to allow checking that SpecialOSK or custom font has * been correctly loaded by browser