From 96309814dc5d8835f733a7387f4e085029a37461 Mon Sep 17 00:00:00 2001 From: Juho Heikka Date: Fri, 17 Dec 2021 15:30:05 +0200 Subject: [PATCH] Add ability from extension to add preferences to application preferences (#4579) --- .../components/+preferences/application.tsx | 7 +++ .../+preferences/extension-settings.tsx | 50 +++++++++++++++++++ .../components/+preferences/extensions.tsx | 8 +-- .../components/+preferences/preferences.tsx | 19 +------ .../components/+preferences/telemetry.tsx | 4 +- 5 files changed, 64 insertions(+), 24 deletions(-) create mode 100644 src/renderer/components/+preferences/extension-settings.tsx diff --git a/src/renderer/components/+preferences/application.tsx b/src/renderer/components/+preferences/application.tsx index 9962176688..0fd1087953 100644 --- a/src/renderer/components/+preferences/application.tsx +++ b/src/renderer/components/+preferences/application.tsx @@ -30,6 +30,8 @@ import { isWindows } from "../../../common/vars"; import { FormSwitch, Switcher } from "../switch"; import moment from "moment-timezone"; import { CONSTANTS } from "../../../common/user-store/preferences-helpers"; +import { AppPreferenceRegistry } from "../../../extensions/registries"; +import { ExtensionSettings } from "./extension-settings"; const timezoneOptions: SelectOption[] = moment.tz.names().map(zone => ({ label: zone, @@ -50,6 +52,7 @@ export const Application = observer(() => { ); const [shell, setShell] = React.useState(UserStore.getInstance().shell || ""); + const extensionSettings = AppPreferenceRegistry.getInstance().getItems().filter((preference) => preference.showInPreferencesTab === "application"); return (
@@ -109,6 +112,10 @@ export const Application = observer(() => {
+ {extensionSettings.map(setting => ( + + ))} +
+
+ +
+
+
+ + ); +} diff --git a/src/renderer/components/+preferences/extensions.tsx b/src/renderer/components/+preferences/extensions.tsx index b19e494a16..3631eb9f58 100644 --- a/src/renderer/components/+preferences/extensions.tsx +++ b/src/renderer/components/+preferences/extensions.tsx @@ -22,16 +22,16 @@ import { observer } from "mobx-react"; import React from "react"; import { AppPreferenceRegistry } from "../../../extensions/registries"; -import { ExtensionSettings } from "./preferences"; +import { ExtensionSettings } from "./extension-settings"; export const Extensions = observer(() => { - const extensions = AppPreferenceRegistry.getInstance().getItems(); + const settings = AppPreferenceRegistry.getInstance().getItems(); return (

Extensions

- {extensions.filter(e => !e.showInPreferencesTab).map((extension) => - , + {settings.filter(e => !e.showInPreferencesTab).map((setting) => + , )}
); diff --git a/src/renderer/components/+preferences/preferences.tsx b/src/renderer/components/+preferences/preferences.tsx index 2b1a536b9f..ffa7121d1a 100644 --- a/src/renderer/components/+preferences/preferences.tsx +++ b/src/renderer/components/+preferences/preferences.tsx @@ -24,7 +24,6 @@ import { makeObservable, observable } from "mobx"; import { observer } from "mobx-react"; import React from "react"; import { matchPath, Redirect, Route, RouteProps, Switch } from "react-router"; - import { appRoute, appURL, @@ -40,10 +39,9 @@ import { telemetryRoute, telemetryURL, } from "../../../common/routes"; -import { AppPreferenceRegistry, RegisteredAppPreference } from "../../../extensions/registries/app-preference-registry"; +import { AppPreferenceRegistry } from "../../../extensions/registries/app-preference-registry"; import { navigateWithoutHistoryChange, navigation } from "../../navigation"; import { SettingLayout } from "../layout/setting-layout"; -import { SubTitle } from "../layout/sub-title"; import { Tab, Tabs } from "../tabs"; import { Application } from "./application"; import { Kubernetes } from "./kubernetes"; @@ -105,18 +103,3 @@ export class Preferences extends React.Component { ); } } - -export function ExtensionSettings({ title, id, components: { Hint, Input }}: RegisteredAppPreference) { - return ( - -
- - -
- -
-
-
-
- ); -} diff --git a/src/renderer/components/+preferences/telemetry.tsx b/src/renderer/components/+preferences/telemetry.tsx index 5414382f92..4cec8bfccf 100644 --- a/src/renderer/components/+preferences/telemetry.tsx +++ b/src/renderer/components/+preferences/telemetry.tsx @@ -25,7 +25,7 @@ import { sentryDsn } from "../../../common/vars"; import { AppPreferenceRegistry } from "../../../extensions/registries"; import { Checkbox } from "../checkbox"; import { SubTitle } from "../layout/sub-title"; -import { ExtensionSettings } from "./preferences"; +import { ExtensionSettings } from "./extension-settings"; export const Telemetry = observer(() => { const extensions = AppPreferenceRegistry.getInstance().getItems(); @@ -34,7 +34,7 @@ export const Telemetry = observer(() => { return (

Telemetry

- {telemetryExtensions.map((extension) => )} + {telemetryExtensions.map((extension) => )} {sentryDsn ? (