mirror of
https://github.com/prymitive/karma
synced 2026-05-07 03:26:52 +00:00
69 lines
1.7 KiB
JavaScript
69 lines
1.7 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 {
|
|
Sentry.init({
|
|
dsn: settingsElement.dataset.sentryDsn,
|
|
release: version
|
|
});
|
|
} catch (err) {
|
|
console.error("Sentry config failed: " + err);
|
|
}
|
|
}
|
|
};
|
|
|
|
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;
|
|
};
|
|
|
|
const ParseUIDefaults = defaultsElement => {
|
|
if (defaultsElement === null) {
|
|
return null;
|
|
}
|
|
const decoded = Buffer.from(defaultsElement.innerHTML, "base64").toString(
|
|
"ascii"
|
|
);
|
|
try {
|
|
return JSON.parse(decoded);
|
|
} catch {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
export { SettingsElement, SetupSentry, ParseDefaultFilters, ParseUIDefaults };
|