mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Create a telemetry tab with extensions
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
a51907f6d4
commit
2d4decd0fb
@ -8,6 +8,7 @@ export default class SurveyRendererExtension extends LensRendererExtension {
|
|||||||
appPreferences = [
|
appPreferences = [
|
||||||
{
|
{
|
||||||
title: "In-App Surveys",
|
title: "In-App Surveys",
|
||||||
|
showInPreferencesTab: "telemetry",
|
||||||
components: {
|
components: {
|
||||||
Hint: () => <SurveyPreferenceHint/>,
|
Hint: () => <SurveyPreferenceHint/>,
|
||||||
Input: () => <SurveyPreferenceInput survey={surveyPreferencesStore}/>
|
Input: () => <SurveyPreferenceInput survey={surveyPreferencesStore}/>
|
||||||
|
|||||||
@ -8,6 +8,7 @@ export default class TelemetryRendererExtension extends LensRendererExtension {
|
|||||||
appPreferences = [
|
appPreferences = [
|
||||||
{
|
{
|
||||||
title: "Telemetry & Usage Tracking",
|
title: "Telemetry & Usage Tracking",
|
||||||
|
showInPreferencesTab: "telemetry",
|
||||||
id: "telemetry-tracking",
|
id: "telemetry-tracking",
|
||||||
components: {
|
components: {
|
||||||
Hint: () => <TelemetryPreferenceHint/>,
|
Hint: () => <TelemetryPreferenceHint/>,
|
||||||
|
|||||||
@ -9,6 +9,7 @@ export interface AppPreferenceComponents {
|
|||||||
export interface AppPreferenceRegistration {
|
export interface AppPreferenceRegistration {
|
||||||
title: string;
|
title: string;
|
||||||
id?: string;
|
id?: string;
|
||||||
|
showInPreferencesTab?: string;
|
||||||
components: AppPreferenceComponents;
|
components: AppPreferenceComponents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import { disposeOnUnmount, observer } from "mobx-react";
|
|||||||
|
|
||||||
import { userStore } from "../../../common/user-store";
|
import { userStore } from "../../../common/user-store";
|
||||||
import { isWindows } from "../../../common/vars";
|
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 { themeStore } from "../../theme.store";
|
||||||
import { Input } from "../input";
|
import { Input } from "../input";
|
||||||
import { PageLayout } from "../layout/page-layout";
|
import { PageLayout } from "../layout/page-layout";
|
||||||
@ -22,6 +22,7 @@ enum PreferencesTab {
|
|||||||
Application = "application",
|
Application = "application",
|
||||||
Proxy = "proxy",
|
Proxy = "proxy",
|
||||||
Kubernetes = "kubernetes",
|
Kubernetes = "kubernetes",
|
||||||
|
Telemetry = "telemetry",
|
||||||
Extensions = "extensions",
|
Extensions = "extensions",
|
||||||
Other = "other"
|
Other = "other"
|
||||||
}
|
}
|
||||||
@ -59,6 +60,8 @@ export class Preferences extends React.Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
renderNavigation() {
|
renderNavigation() {
|
||||||
|
const extensions = appPreferenceRegistry.getItems().filter(e => !e.showInPreferencesTab);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Tabs className="flex column" scrollable={false} onChange={this.onTabChange}>
|
<Tabs className="flex column" scrollable={false} onChange={this.onTabChange}>
|
||||||
<div className="header">Preferences</div>
|
<div className="header">Preferences</div>
|
||||||
@ -78,10 +81,17 @@ export class Preferences extends React.Component {
|
|||||||
active={this.activeTab == PreferencesTab.Kubernetes}
|
active={this.activeTab == PreferencesTab.Kubernetes}
|
||||||
/>
|
/>
|
||||||
<Tab
|
<Tab
|
||||||
value={PreferencesTab.Extensions}
|
value={PreferencesTab.Telemetry}
|
||||||
label="Extensions"
|
label="Telemetry"
|
||||||
active={this.activeTab == PreferencesTab.Extensions}
|
active={this.activeTab == PreferencesTab.Telemetry}
|
||||||
/>
|
/>
|
||||||
|
{extensions.length > 0 &&
|
||||||
|
<Tab
|
||||||
|
value={PreferencesTab.Extensions}
|
||||||
|
label="Extensions"
|
||||||
|
active={this.activeTab == PreferencesTab.Extensions}
|
||||||
|
/>
|
||||||
|
}
|
||||||
<Tab
|
<Tab
|
||||||
value={PreferencesTab.Other}
|
value={PreferencesTab.Other}
|
||||||
label="Other"
|
label="Other"
|
||||||
@ -91,8 +101,25 @@ export class Preferences extends React.Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderExtension({ title, id, components: { Hint, Input } }: RegisteredAppPreference) {
|
||||||
|
return (
|
||||||
|
<React.Fragment key={id}>
|
||||||
|
<section id={id} className="small">
|
||||||
|
<SubTitle title={title}/>
|
||||||
|
<Input/>
|
||||||
|
<div className="hint">
|
||||||
|
<Hint/>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<hr className="small"/>
|
||||||
|
</React.Fragment>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { preferences } = userStore;
|
const { preferences } = userStore;
|
||||||
|
const extensions = appPreferenceRegistry.getItems();
|
||||||
|
const telemetryExtensions = extensions.filter(e => e.showInPreferencesTab == PreferencesTab.Telemetry);
|
||||||
let defaultShell = process.env.SHELL || process.env.PTYSHELL;
|
let defaultShell = process.env.SHELL || process.env.PTYSHELL;
|
||||||
|
|
||||||
if (!defaultShell) {
|
if (!defaultShell) {
|
||||||
@ -190,23 +217,17 @@ export class Preferences extends React.Component {
|
|||||||
</section>
|
</section>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{this.activeTab == PreferencesTab.Telemetry && (
|
||||||
|
<section id="telemetry">
|
||||||
|
<h2>Telemetry</h2>
|
||||||
|
{telemetryExtensions.map(this.renderExtension)}
|
||||||
|
</section>
|
||||||
|
)}
|
||||||
|
|
||||||
{this.activeTab == PreferencesTab.Extensions && (
|
{this.activeTab == PreferencesTab.Extensions && (
|
||||||
<section id="extensions">
|
<section id="extensions">
|
||||||
<h2>Extensions</h2>
|
<h2>Extensions</h2>
|
||||||
{appPreferenceRegistry.getItems().map(({ title, id, components: { Hint, Input } }) => {
|
{extensions.filter(e => !e.showInPreferencesTab).map(this.renderExtension)}
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<section key={id} id={title} className="small">
|
|
||||||
<SubTitle title={title}/>
|
|
||||||
<Input/>
|
|
||||||
<div className="hint">
|
|
||||||
<Hint/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr className="small"/>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</section>
|
</section>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user