mirror of
https://github.com/prymitive/karma
synced 2026-05-07 03:26:52 +00:00
* 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
56 lines
1.5 KiB
JavaScript
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 };
|