From 2d4decd0fb8d5a2c79357b22f8b74680b9017f40 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Mon, 5 Apr 2021 10:31:06 +0300 Subject: [PATCH] Create a telemetry tab with extensions Signed-off-by: Alex Andreev --- extensions/survey/renderer.tsx | 1 + extensions/telemetry/renderer.tsx | 1 + .../registries/app-preference-registry.ts | 1 + .../components/+preferences/preferences.tsx | 57 +++++++++++++------ 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/extensions/survey/renderer.tsx b/extensions/survey/renderer.tsx index c740015634..0a8d8a678a 100644 --- a/extensions/survey/renderer.tsx +++ b/extensions/survey/renderer.tsx @@ -8,6 +8,7 @@ export default class SurveyRendererExtension extends LensRendererExtension { appPreferences = [ { title: "In-App Surveys", + showInPreferencesTab: "telemetry", components: { Hint: () => , Input: () => diff --git a/extensions/telemetry/renderer.tsx b/extensions/telemetry/renderer.tsx index d8ba4225df..15fda68ede 100644 --- a/extensions/telemetry/renderer.tsx +++ b/extensions/telemetry/renderer.tsx @@ -8,6 +8,7 @@ export default class TelemetryRendererExtension extends LensRendererExtension { appPreferences = [ { title: "Telemetry & Usage Tracking", + showInPreferencesTab: "telemetry", id: "telemetry-tracking", components: { Hint: () => , diff --git a/src/extensions/registries/app-preference-registry.ts b/src/extensions/registries/app-preference-registry.ts index e6b5d93cb2..0bbb537fa5 100644 --- a/src/extensions/registries/app-preference-registry.ts +++ b/src/extensions/registries/app-preference-registry.ts @@ -9,6 +9,7 @@ export interface AppPreferenceComponents { export interface AppPreferenceRegistration { title: string; id?: string; + showInPreferencesTab?: string; components: AppPreferenceComponents; } diff --git a/src/renderer/components/+preferences/preferences.tsx b/src/renderer/components/+preferences/preferences.tsx index ebb40cfb3f..a743a03670 100644 --- a/src/renderer/components/+preferences/preferences.tsx +++ b/src/renderer/components/+preferences/preferences.tsx @@ -6,7 +6,7 @@ import { disposeOnUnmount, observer } from "mobx-react"; import { userStore } from "../../../common/user-store"; import { isWindows } from "../../../common/vars"; -import { appPreferenceRegistry } from "../../../extensions/registries/app-preference-registry"; +import { appPreferenceRegistry, RegisteredAppPreference } from "../../../extensions/registries/app-preference-registry"; import { themeStore } from "../../theme.store"; import { Input } from "../input"; import { PageLayout } from "../layout/page-layout"; @@ -22,6 +22,7 @@ enum PreferencesTab { Application = "application", Proxy = "proxy", Kubernetes = "kubernetes", + Telemetry = "telemetry", Extensions = "extensions", Other = "other" } @@ -59,6 +60,8 @@ export class Preferences extends React.Component { }; renderNavigation() { + const extensions = appPreferenceRegistry.getItems().filter(e => !e.showInPreferencesTab); + return (
Preferences
@@ -78,10 +81,17 @@ export class Preferences extends React.Component { active={this.activeTab == PreferencesTab.Kubernetes} /> + {extensions.length > 0 && + + } +
+ + +
+ +
+
+
+ + ); + } + render() { const { preferences } = userStore; + const extensions = appPreferenceRegistry.getItems(); + const telemetryExtensions = extensions.filter(e => e.showInPreferencesTab == PreferencesTab.Telemetry); let defaultShell = process.env.SHELL || process.env.PTYSHELL; if (!defaultShell) { @@ -190,23 +217,17 @@ export class Preferences extends React.Component { )} + {this.activeTab == PreferencesTab.Telemetry && ( +
+

Telemetry

+ {telemetryExtensions.map(this.renderExtension)} +
+ )} + {this.activeTab == PreferencesTab.Extensions && (

Extensions

- {appPreferenceRegistry.getItems().map(({ title, id, components: { Hint, Input } }) => { - return ( - <> -
- - -
- -
-
-
- - ); - })} + {extensions.filter(e => !e.showInPreferencesTab).map(this.renderExtension)}
)}