Files
karma/ui/src/AppBoot.js
Łukasz Mierzwa 22a48301e8 feat(sentry): add ErrorBoundary to capture exceptions
* switch to new Sentry client lib
* Add ErrorBoundary as a wrapper around App to capture errors and display exception page with auto refresh
* rename all instances of Raven to Sentry
2018-09-19 21:08:22 +01:00

56 lines
1.5 KiB
JavaScript

// helpers used to bootstrap App instance and environment for it
import * as Sentry from "@sentry/browser";
const SettingsElement = () => document.getElementById("settings");
const SetupSentry = settingsElement => {
if (
settingsElement !== null &&
settingsElement.dataset.sentryDsn &&
settingsElement.dataset.sentryDsn !== "{{ .SentryDSN }}"
) {
let version = "unknown";
if (
settingsElement.dataset.version &&
settingsElement.dataset.version !== "{{ .Version }}"
) {
version = settingsElement.dataset.version;
}
try {
return Sentry.init({
dsn: settingsElement.dataset.sentryDsn,
release: version
});
} catch (err) {
console.error("Sentry config failed: " + err);
}
}
return null;
};
const ParseDefaultFilters = settingsElement => {
let defaultFilters = [];
if (
settingsElement !== null &&
settingsElement.dataset.defaultFiltersBase64 &&
settingsElement.dataset.defaultFiltersBase64 !== "{{ .DefaultFilter }}"
) {
// decode from base64 to a string
const decoded = Buffer.from(
settingsElement.dataset.defaultFiltersBase64,
"base64"
).toString("ascii");
// parse decoded string as JSON
const json = JSON.parse(decoded);
// if we got an array then use it as default filters
if (Array.isArray(json)) {
defaultFilters = json;
}
}
return defaultFilters;
};
export { SettingsElement, SetupSentry, ParseDefaultFilters };