diff --git a/src/features/preferences/renderer/preference-items/telemetry/automatic-error-reporting/automatic-error-reporting-preference-item.injectable.ts b/src/features/preferences/renderer/preference-items/telemetry/automatic-error-reporting/automatic-error-reporting-preference-item.injectable.ts new file mode 100644 index 0000000000..c432c43542 --- /dev/null +++ b/src/features/preferences/renderer/preference-items/telemetry/automatic-error-reporting/automatic-error-reporting-preference-item.injectable.ts @@ -0,0 +1,29 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { preferenceItemInjectionToken } from "../../preference-item-injection-token"; +import { AutomaticErrorReporting } from "./automatic-error-reporting"; +import sentryDataSourceNameInjectable from "../../../../../../common/vars/sentry-dsn-url.injectable"; + +const automaticErrorReportingPreferenceItemInjectable = getInjectable({ + id: "automatic-error-reporting-preference-item", + + instantiate: (di) => { + const sentryDnsUrl = di.inject(sentryDataSourceNameInjectable); + + return { + kind: "item" as const, + id: "automatic-error-reporting", + parentId: "telemetry-page", + orderNumber: 20, + Component: AutomaticErrorReporting, + isShown: !!sentryDnsUrl, + }; + }, + + injectionToken: preferenceItemInjectionToken, +}); + +export default automaticErrorReportingPreferenceItemInjectable; diff --git a/src/features/preferences/renderer/preference-items/telemetry/automatic-error-reporting/automatic-error-reporting.tsx b/src/features/preferences/renderer/preference-items/telemetry/automatic-error-reporting/automatic-error-reporting.tsx new file mode 100644 index 0000000000..7e23c0af35 --- /dev/null +++ b/src/features/preferences/renderer/preference-items/telemetry/automatic-error-reporting/automatic-error-reporting.tsx @@ -0,0 +1,47 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import React from "react"; +import { SubTitle } from "../../../../../../renderer/components/layout/sub-title"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import type { UserStore } from "../../../../../../common/user-store"; +import userStoreInjectable from "../../../../../../common/user-store/user-store.injectable"; +import { observer } from "mobx-react"; +import { Checkbox } from "../../../../../../renderer/components/checkbox"; + +interface Dependencies { + userStore: UserStore; +} + +const NonInjectedAutomaticErrorReporting = observer(({ userStore }: Dependencies) => ( +